首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell说微软自己的ps1脚本是不安全的,我应该继续运行这个脚本吗?

Powershell说微软自己的ps1脚本是不安全的,我应该继续运行这个脚本吗?
EN

Security用户
提问于 2018-08-09 22:25:40
回答 2查看 1.4K关注 0票数 5

我正试图将Powershell更新到5.1版,这是我直接从微软网站下载的。下载的签名来自Microsoft (虽然签名过期了几个月),但是当我尝试运行脚本时,我会收到一个错误信息,说明此脚本不受计算机信任,以及是否应该继续执行该脚本?

我想知道为什么一个直接来自微软网站的脚本会出现错误,因为它是“不安全的”。我很好奇人们是否会建议我不要运行这个脚本,或者我应该如何运行,因为我必须更新到Powershell 5.0+来配置另一个应用程序(是的,非常烦人)。

还要注意的是,在微软的网站上有两个不同的页面,我可以在那里下载这些脚本,每个页面都有一个与另一个不同的下载链接。一个来自download.microsoft,另一个来自go.microsoft (我从前一个链接下载)。我不知道为什么有两个不同的联系,但不确定这是否是一个值得关注的原因。

https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell?view=powershell-6 (这是我下载脚本的页面)

不过,我似乎找不到另一个带有下载信息的页面,但另一个页面也提供了如何升级powershell的信息。页面说要从powershell控制台运行脚本(对我不起作用,所以我右击并单击"execute script")。第一个链接(上面)没有给出任何关于我们应该做什么来升级的信息。我也没有尝试运行MSU文件本身。

以下是有关从第一个链接在zip文件中下载的2个文件的一些安全信息。

https://whitelisting.kaspersky.com/advisor#search/e3142d5fada08ea6a1ba2134e4015a5c (ps1文件)

https://whitelisting.kaspersky.com/advisor#search/cef5ecbdf9b396fcab5bd73e5c6cb4bf (msu文件)

第一个是由"Microsoft Code Signing PCA 2011“签署的,第二个是由"Microsoft Code Signing PCA”签署的,但不确定这意味着什么。我觉得奇怪的是,签名也过期了,而且还没有更新。

我想知道是否签名过期与这个“不可信”问题有关,还是有更深层次的问题?

编辑:这就是我运行脚本时所说的。

“要从这个不受信任的出版商运行软件吗?

文件(名称)由CN=Microsoft公司、OU=MOPR公司、O=Microsoft公司、L=Redmond公司、S=Washington公司、C=US公司发布,在您的系统中不受信任。只运行来自受信任的发布者的脚本。“

然后问我是否想运行它。

谢谢你们在这件事上的任何帮助。

EN

回答 2

Security用户

回答已采纳

发布于 2018-08-09 23:12:43

过期签名应始终触发对已签名代码的警告,无论是编译还是解释。这是正常的,也是预料之中的。

在此基础上,CA证书用于签名该证书也过期了。

由于该文件直接来自供应商,因此使用该文件可能是安全的。这一点尤其正确,因为它是由它们的时间戳PCA加签名的,它可以作为一个见证,证明该文件在指定的日期存在,并且在那时已经由Microsoft签名。(签名通常由第三方完成,但无论如何。)

虽然分发使用过期证书签名的代码是不好的形式,但也并非闻所未闻。在这种情况下,签名者和发行商是同一家公司,所以如果他们认为文件被修改了,他们就可以停止分发。

总的来说,这是一种糟糕的形式,但并不令人惊讶。

票数 4
EN

Security用户

发布于 2021-12-30 18:39:38

我最近也有同样的问题,我学到并提醒自己:

  • 几乎总是会有一些风险。
  • Powershell确实使用了强大的安全技术来提供针对过去被滥用的已知途径的保证。
  • 了解技术和Powershell的实际操作是有帮助的。
  • 仅仅因为文件是通过internet上的安全通道直接从Microsoft服务器传输的,并不意味着文件在传输之前或之后都不会被修改。
  • 数字文件签名提供真实性和完整性,因此您可以知道它确实来自微软(在传输到您的机器之前),并且从那时起就没有被修改过。
  • 这是完全正常的/预期会在一段时间前创建一个文件,该文件使用的证书已经过期。
  • 这个提示符实际上只是询问您是否信任该实体,然后才将您的计算机交给他们编写的脚本,此后就没有任何人修改过它。
  • 如果证书或时间戳无效,则不会看到此提示。
  • 您可以手动/独立地检查这些内容。(不只是这样的实例中的证书,而是创建您自己的证书并对您自己的文件签名。看看在不同的情况下会发生什么。独立核查是一个信任因素。
  • 没有内在的/内置的信任和严格的执行策略,用户必须同意因此变得负责(而不是指责平台,如果出了问题)。
  • 这些都是过去无限制能力的可喜进步。

文档声明:

执行策略不是限制用户操作的安全系统。例如,当用户无法运行脚本时,可以通过在命令行键入脚本内容轻松地绕过策略。相反,执行策略帮助用户设置基本规则并防止他们无意中违反这些规则。

另一个文档说:

脚本中的数字签名在签名证书过期之前是有效的,或者只要时间戳服务器能够验证脚本是否在签名证书有效时签名。由于大多数签名证书的有效期仅为一年,所以使用时间戳服务器可以确保用户可以在今后的许多年中使用您的脚本。

因此,一些重要的事情实际上是可以信任的,在这种情况下发生了什么。

你能相信那个剧本里没有bug吗?希望时间能告诉你。这个行业没有办法提前完全信任类似的事情。

但是,有了这样一个严格的执行策略,所有者和开发人员就能够更好地分辨出假设的问题是由什么引起的。这也意味着它可能会防止一些绝望用户的意外运行。最终,这意味着更好的体验。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/191297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档