VBScript按键漏洞导致远程代码执行的技术分析与缓解措施

本文详细分析了VBScript中存在的按键漏洞,该漏洞允许恶意网页通过F1键触发任意代码执行,影响Windows 2000/XP/2003系统,并提供了多种缓解措施和配置建议。

VBScript按键漏洞导致远程代码执行

MSRC工程团队一直在调查涉及VBScript和Windows帮助文件使用的漏洞报告。

影响范围和受影响的平台

我们的调查确定Windows 7、Windows Server 2008和Windows Vista不受影响。默认情况下,只有Windows 2000和Windows XP受到影响。Windows 2003 Server也受到影响,但由于存在Internet Explorer增强安全配置,默认配置下问题得到缓解。通过此问题,恶意网页可以显示一个对话框,当用户按下F1键时将触发任意代码的执行。提示框在被关闭后可以重复出现,不断要求用户按下F1键。无论安装的Internet Explorer版本如何,平台都会受到影响。

恶意用户如何利用此漏洞?

Windows帮助文件本质上是不安全的文件格式。这意味着这些文件可以运行任意代码,因此浏览器必须阻止远程Windows帮助文件自动执行。

Internet Explorer中可用的VBScript功能暴露了MsgBox函数,允许网页上的脚本向用户显示消息。提供给MsgBox函数的参数可能引用相关的Windows帮助文件,尽管在浏览器中使用VBScript时此功能受到限制。虽然需要用户交互,但F1键盘快捷键确实启用了攻击场景。在利用中,文件路径允许从本地文件系统、SMB或WebDav加载.HLP文件。

缓解措施

作为临时缓解措施,建议用户避免在网页或其他互联网内容呈现的对话框上按F1。如果对话框反复出现以试图说服用户按F1,用户可以注销系统或使用任务管理器终止Internet Explorer进程。

也可以使用以下命令行锁定旧的Windows帮助系统,防止其加载:

1
cacls "%windir%\winhlp32.exe" /E /P everyone:N

回滚此更改的命令行:

1
cacls "%windir%\winhlp32.exe" /E /R everyone

由于此漏洞由脚本驱动,以下标准缓解措施也适用:

  • 将Internet和本地Intranet安全区域设置设置为“高”,以在这些区域运行ActiveX控件和Active脚本之前提示
  • 配置Internet Explorer以在运行Active脚本之前提示或在Internet和本地Intranet安全区域禁用Active脚本

设置安全级别为高的步骤

  1. 在Internet Explorer工具菜单上,单击Internet选项。
  2. 在Internet选项对话框中,单击安全选项卡,然后单击Internet图标。
  3. 在“此区域的安全级别”下,将滑块移动到“高”。这将您访问的所有网站的安全级别设置为高。 注意:如果没有滑块可见,请单击“默认级别”,然后将滑块移动到“高”。

将受信任的站点添加到Internet Explorer受信任的站点区域

  1. 在Internet Explorer中,单击工具,单击Internet选项,然后单击安全选项卡。
  2. 在“选择Web内容区域以指定其当前安全设置”框中,单击“受信任的站点”,然后单击“站点”。
  3. 如果要添加不需要加密通道的站点,请单击以清除“对此区域中的所有站点要求服务器验证(https:)”复选框。
  4. 在“将此网站添加到区域”框中,键入您信任的站点的URL,然后单击“添加”。
  5. 对要添加到该区域的每个站点重复这些步骤。
  6. 单击“确定”两次以接受更改并返回Internet Explorer。

注意:添加任何您信任不会对您的系统采取恶意操作的站点。特别要添加的两个站点是*.windowsupdate.microsoft.com和*.update.microsoft.com。这些是托管更新的站点,并且需要ActiveX控件来安装更新。

类别路径“计算机配置\管理模板\Windows组件\Internet Explorer\”下的组策略设置“关闭显示Internet Explorer帮助菜单”不足以缓解此问题。

致谢

感谢Robert Hensing在此问题上的工作。 -David Ross, MSRC Engineering

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计