将 exe 文件下载到文件共享中可能存在的安全风险

将 exe 文件下载到文件共享中可能存在的安全风险

我编写了一个批处理脚本来从文件共享安装 nuget。该脚本在提升的 powershell 提示符中调用以下脚本:

# Create dir
New-Item -ItemType Directory -Force -Path "C:\Program Files\Nuget"
# Download nuget
Invoke-WebRequest -O "C:\Program Files\Nuget\nuget.exe" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe 
# Append to path
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Nuget", "Machine")

我可能会引入任何安全风险吗?有人可能会攻占服务器并在其中放置任何其他 .exe。有什么方法可以提高安全性,以便脚本不会意外传播恶意软件。我可能可以使用校验和,但这就足够了吗?

答案1

偏执是好的。但你应该权衡一下风险因素,并以此来判断你应该投入多少精力来防御这种理论上的攻击。

要点 1 - nuget.org 是 Microsoft 拥有和控制的网站(请参阅whois 记录)。它可能被破解了吗?当然可能。但在大多数情况下,微软对其网站的安全性相当高。我的意思是,这家公司也是您下载 Windows、补丁等的地方。

第 2 点——您的脚本只是下载了每天有成千上万的人(通过其他方式)下载的同一个文件。如果 nuget.org曾是以这种方式受到攻击,那么比通过脚本获取文件的人就多得多。这真的、真的、真的不是由于脚本缺乏安全性造成的。

第 3 点——谁说没有已经被破解了?同样,这种情况不太可能发生,但即使你下载了它,计算校验和,然后根据以后的下载进行检查,你仍然必须相信那里面的内容现在是安全的。但我还是认为这种风险很低。除了现有的安全措施外,很可能有人很快就会以某种方式注意到 nuget 被盗用。

假设它发布在单独的网站上,那么校验和或签名会很好。但微软似乎没有为nuget.exe我所看到的版本提供校验和/哈希值。奇怪的是,据我所知,nuget支持检查软件包的哈希值下载,但是我首先没有办法确认该 exe。

相关内容