Windows Shell 中未经检查的缓冲区可能危害系统安全 (821557) 初始发布日期:2003年7月16日 -------------------------------------------------------------------------------- 本页内容: 摘要 详细技术资料 常见问题解答 有关该修补程序的附加信息 其他信息 -------------------------------------------------------------------------------- 摘要 本公告的目标读者:使用 Microsoft® Windows® XP 的客户 漏洞的影响:运行攻击者选择的代码 最高严重等级:严重 建议:使用 Microsoft Windows XP 的用户应立即应用此修补程序。 受影响的软件: Windows XP 不受影响的软件: Windows Millennium Windows NT 4.0 Windows 2000 Windows Server 2003 最终用户公告:此公告的最终用户版本可从以下地址获得:http://www.microsoft.com/security/security_bulletins/ms03-027.asp 详细技术资料 技术说明: Windows Shell 负责提供 Windows 用户界面体验的基本框架。用户最熟悉的 Windows Shell 形式是 Windows 桌面。它还提供许多别的功能帮助定义用户的计算会话,包括组织文件和文件夹,以及提供启动应用程序的方法等。 Windows Shell 使用的某项功能中存在一个未经检查的缓冲区,它可从某些文件夹中提取自定义属性信息。恶意用户可利用此缺陷发动攻击,并在用户的系统上运行代码,从而造成安全漏洞。 攻击者可以用以下方法利用此漏洞:创建一个 desktop.ini 文件,在此文件包含一个恶意的自定义属性,然后将此文件置于一个网络共享位置,或通过 HTML 电子邮件发送此文件。如果一个用户浏览了存储此文件的共享文件夹,这个漏洞就将被利用。另外,HTML 电子邮件可能包含一些代码,这些代码可自动将用户导航到一个包含有恶意文件的共享文件夹。一旦攻击成功,将导致 Windows Shell 失败,或者导致攻击者的代码在用户的计算机上在用户的安全上下文中运行。 减轻影响的因素: 在执行攻击者代码的情况下,代码将在用户的安全上下文中运行。这样,任何对用户能力的限制也将限制攻击者代码采取的行动。 攻击者只能通过以下方法利用这个漏洞:将一个恶意文件放到一个共享位置,或通过向用户发送 HTML 电子邮件以自动将用户导航到该共享位置。 这个漏洞只影响 Windows XP Service Pack 1。Windows XP Gold 的用户不受影响。 严重等级: Windows XP: 严重 上面的评估是基于受漏洞影响的系统类型、典型的部署模式以及利用漏洞对它们产生的影响作出的。 漏洞标识符:CAN-2003-0351 测试过的版本: Microsoft 对Windows Millennium、Windows NT 4.0、Windows NT 4.0 Terminal Server Edition、Windows 2000、Windows XP 和 Windows Server 2003 进行了测试,以评估它们是否受此漏洞的影响。以前的版本不再受支持,它们可能受此漏洞影响,也可能不受影响。 常见问题解答 问:该漏洞的范围有多大? 答:这是一个缓冲区溢出漏洞。成功利用此漏洞的攻击者可在一个用户的系统上运行他们选择的代码。这使得攻击者可以在该用户的权限范围内执行任何操作。 问:此漏洞是由什么问题引起的? 答:Windows Shell 组件中一个未经检查的缓冲区自动从一个文件夹中存在的 desktop.ini 读取并应用该文件夹属性(如果文件夹存在),导致漏洞出现。 问:攻击者可利用此漏洞做什么? 答:在最坏的情况下,攻击者一旦成功地利用此漏洞,就可在用户的系统上运行他或她选择的代码。由于 Windows Shell 在用户上下文中运行,攻击者的代码也会以用户的身份运行。对用户删除、添加或者修改数据或配置信息的能力的限制,对攻击者也同样有效。 问:什么是“desktop.ini”文件? 答:desktop.ini 文件存储有关文件夹及其内容在用户浏览时的显示方式的信息。查看文件夹不一定需要 desktop.ini 文件,而 desktop.ini 文件也并非每个文件夹中都有。若文件夹中有 desktop.ini 文件,该文件可能会包含与访问此文件夹的应用程序相关的不同信息。例如,Windows 资源管理器可能使用 desktop.ini 文件来存储以下信息:表示此文件夹的图标的名称和位置,鼠标指针指向此文件夹时显示的工具提示文本,或此文件夹中包含的文件的显示方式。 问:攻击者可能如何利用此漏洞? 答:攻击者可以用以下方法利用此漏洞:创建一个包含恶意的属性的 desktop.ini 文件,并将此文件放在网络上或 Internet 上的一个共享位置。然后,攻击者可以创建一封 HTML 电子邮件或一个网页,用其中包含的代码自动将用户导航到存放该恶意文件的共享位置。 攻击者也可用电子邮件直接发送恶意文件,或发送指向恶意文件的链接,并诱导用户将该文件保存在硬盘上并浏览到目标文件夹。请注意,在这种情况下,攻击者不能自动使文件存储到用户的计算机上。只有用户本人才能够将文件存储到本地计算机上。 问:什么是 Windows Shell? 答:Windows Shell 为 Windows 用户界面提供基本框架,用户最常体验到的 Windows Shell 形式是 Windows 桌面。除了桌面之外,Windows Shell 还提供了许多其他功能,使计算体验中的外观和感受始终保持一致。Windows Shell 可用于下列用途:通过 Windows 资源管理器查找文件和文件夹;通过“开始”菜单中的快捷方式提供启动应用程序的一致方式;通过桌面主题及颜色提供一致的界面。 问:Windows Shell 如何处理这些文件属性? 答:Windows Shell 负责与显示关于文件、文件夹及图标的信息有关的各种操作。例如,在一台计算机上改变文件夹视图以显示文件的缩略图的能力就是由 Windows Shell 提供的。在一台设置为以缩略图形式显示文件夹内容的计算机上,当一个文件夹打开时,Windows Shell 就会发挥作用,自动检测这项设置,并以缩略图形式显示文件夹的内容。 问:什么是缩略图? 答:缩略图通常是指图像大幅度缩小后的版本,它只包含可识别此图像的足够细节。缩略图常用于图片库视图中,供用户浏览图像和从大量的图像中进行选择。 问:Windows Shell 存在什么问题? 答:允许 Windows Shell 自动提取文件和文件夹的显示属性的功能包含一个未经检查的缓冲区。当 Windows Shell 尝试从一个 desktop.ini 文件中读取一个恶意的属性时,可能会导致缓冲区溢出。 问:系统如何调用 Windows Shell 读取文件或文件夹属性? 答:只有当 Windows Shell 为了将它需要的自定义属性应用到一个文件夹及其内容而尝试分析 desktop.ini 文件时,才会调用这种特定的包含未经检查的缓冲区的功能。只有当一个文件打开时才会调用此项功能。 问:攻击者可以通过电子邮件直接利用这个漏洞吗? 答:是的。攻击者可通过创建一个包含恶意的自定义属性的 desktop.ini 文件来利用此漏洞,然后将此文件置于网络上或 Internet 上的一个共享位置。然后,他们可以构建一封包含一些代码的 HTML 电子邮件,让这些代码自动将用户导航到一个包含着恶意文件的共享文件夹。 问:我没有使用 Windows XP。我会受到此漏洞的影响吗? 答:不会。此缺陷只存在于 Windows XP Service Pack 1 中。它不会影响 Windows XP Gold 或其他 Windows 版本。 问:如果我怀疑一个文件可能是专门用来利用此漏洞的,有没有一种安全的方法可以删除这个文件? 答:如果您怀疑已将一个包含恶意的自定义属性的 desktop.ini 文件下载到了计算机上,请不要尝试通过 Windows 资源管理器删除它。打开包含此文件的文件夹会导致 Windows Shell 处理此文件,进而导致执行攻击性代码。最安全的做法是使用命令提示符窗口删除这个恶意文件。 您可通过以下步骤访问命令提示符窗口: 单击“开始”按钮,选择“运行”。 在打开的对话框中,键入“cmd.exe” 单击“确定”。这将启动命令提示符窗口。 在命令提示符窗口中,使用 DEL 命令指定该文件的路径并将其删除。若要了解有关使用哪些命令开关的具体信息,请键入 DEL /? 获取帮助。 问:修补程序有什么用途? 答:此修补程序通过对受影响的 Windows Shell 功能设置适当的输入验证来解决此漏洞问题。 获取修补程序 该修补程序的下载位置 Microsoft Windows XP: Needed