在NuGet包install / init期间运行的Powershell脚本有哪些安全限制?

时间:2011-05-02 14:03:01

标签: powershell nuget

从NuGet安装软件包时,它可以运行一些Powershell脚本进行设置(例如导出要在Package Manager控制台中使用的命令)。

我正在尝试(并且失败)查找这些脚本可以/不可以执行的操作的详细信息。具体来说 - 我们应该担心这些恶意代码吗?他们可以阅读文件系统,发送网络请求等吗?

3 个答案:

答案 0 :(得分:3)

当NuGet设置PowerShell主机时,它会检查当前的ExecutionPolicy是什么。如果它不是Unrestricted,RemoteSigned或Bypass,则会强制ExcecutionPolicy为当前进程(devenv.exe)的RemoteSigned。

PowerShell看不到从Internet下载的嵌入式脚本init.ps1,install.ps1等,因此没有任何东西阻止恶意脚本在您的计算机上执行您的帐户有权执行的操作。< / p>

此时,所有NuGet包创建者都非常关注“荣誉”系统。我相信Ruby Gems也有类似的想法。

NuGet确实能够使用私有包源,因此如果安全性至关重要,我建议您下载并审核所有包,并且只允许从这些可信来源安装包。

答案 1 :(得分:0)

我会推荐给NuGet团队的某个人,但我几乎可以肯定他们是按照当前的执行政策行事的。

这是我自己的nuget控制台的剪辑:

PM> Get-ExecutionPolicy
RemoteSigned

如果我以管理员身份打开PowerShell并更改执行政策,nuget会报告更改:

PM> Get-ExecutionPolicy
Restricted

总而言之,您在默认主机上获得的任何执行策略也适用于nuget控制台。

答案 2 :(得分:-2)

从Internet下载脚本时,除非安装了安装程序,并且已将升级后的权限设置为安装,否则脚本会被标记为已阻止。您必须通过右键单击脚本并选择“取消阻止”按钮来授权(取消阻止)它们。