在 PowerShell 中绕过执行策略是否存在任何安全风险?

问题描述

当我尝试通过任务计划程序运行 PowerShell 脚本 .ps1 文件时 像这样我得到 0*1 Error

powershell.exe 
arguments :-File "E:\v tes\hash v.ps1"

但是当使用以下命令运行命令时:

-noprofile -Nologo -NonInteractive -ExecutionPolicy Bypass `
-File "E:\v tes\hash v.ps1"

似乎有效

我需要担心绕过 ExecutionPolicy 吗?

在 PowerShell 中通过运行带有 ExecutionPolicy 的命令绕过 PowerShell 中的执行策略是否存在任何安全风险?

解决方法

在您的任务中调用 -ExecutionPolicy Bypass 只是绕过该任务的正常执行策略。它会在每次运行时执行此操作,但您不会通过执行此操作来更改系统的整体执行策略。

执行策略是为了防止您在脚本中意外运行您不想运行的东西,它本身并不是真正的安全系统。 将 Bypass 用于您需要的任务会比将整个系统执行策略调整为远程签名或全部签名或不受限制更安全,只要您了解您的脚本在做什么。

以下是关于执行政策的一般信息

about_execution_Policy

,

PowerShell 的默认 ExecutionPolicy 是受限的,这意味着不能运行任何脚本。这对安全很重要,因为 PowerShell 可以有效地用于拥有一台机器。

如果您要运行特定脚本,并且该脚本不会更改,您可以考虑对该特定脚本进行签名。这是按计划运行一个脚本的一种非常安全的方式,也是执行此操作的最佳实践方式。

“我是否需要担心绕过执行策略”

这实际上取决于您的组织的目标价值。这就是为什么在绕过模式下设置计划任务很危险的原因。

任何有权访问机器的人都可以用他们想要的任何东西替换该脚本,并且它仍然会被执行。不要这样做。

现在,如果机器位于没有物理访问权限的加固位置,并且它是用于您家用 PC 上的个人脚本,当然,去吧。如果它是关键任务或可能触及网络,或者您从事重要行业,请不要走这种冒险的捷径。

“那我该怎么办?”

如果您需要按计划运行脚本,只需对脚本进行签名,如果它被篡改或更改,则签名将不匹配且不会运行。这会让您开始:How to sign scripts

,

没有。安全策略的目的是不要在不知不觉中运行一个 powershell 脚本,就像作为电子邮件附件接收时一样。在更高版本的操作系统中,默认策略是远程签名的。