ISA Server 错误网页中的缺陷可能会导致发生跨站点脚本攻击 (816456) 初始发布日期:2003年7月16日 -------------------------------------------------------------------------------- 本页内容: 摘要 详细技术资料 常见问题解答 有关该修补程序的附加信息 其他信息 -------------------------------------------------------------------------------- 摘要 本公告的目标读者:运行 Microsoft® Internet Security and Acceleration (ISA) Server 2000 的系统管理员。 漏洞的影响:允许攻击者执行他们选择的代码 最高严重等级:重要 建议:系统管理员应在尽早安装此修补程序。 受影响的软件: Microsoft Internet Security and Acceleration (ISA) Server 2000 最终用户公告:此公告的最终用户版本可从以下地址获得:http://www.microsoft.com/security/security_bulletins/ms03-027.asp 详细技术资料 技术说明: 在一些错误条件下,ISA Server 返回的许多错误网页中存在跨站点脚本漏洞。ISA Server 包含一些基于 HTML 的错误网页,这些网页允许服务器使用自定义的错误消息响应请求 Web 资源的客户机。如果攻击者能够通过使用 ISA Server 的网络引诱用户点击他或她网站上的链接,攻击者就能够将一个包含脚本的请求转给一个第三方网站,进而导致第三方站点的响应(仍然包含着该脚本)发送给用户。然后,该脚本将会使用该第三方站点的安全设置呈现在用户面前,而不使用攻击者自己的安全设置。 为利用此缺陷,攻击者必须通过 ISA Server 把持一个恶意网站,然后引诱用户访问该站点。在基于 Web 的攻击情形中,攻击者无法强迫用户访问该站点。攻击者还可以在 HTML 电子邮件中嵌入指向恶意站点的链接,然后将该邮件发送给用户。用户一旦预览或打开了该电子邮件,则无需进一步交互即自动访问该恶意站点。 减轻影响的因素: 只有在攻击者能诱使其他用户访问某网页并且点击该网页上的一个链接或者打开 HTML 邮件时,攻击者才能利用此漏洞。 请求必须是导致 ISA Server 使用特定的错误网页进行响应的请求。 除非用户对 ISA Server 本身进行操作并使用 Web Proxy 服务访问 Internet,否则该漏洞通常不会使攻击者获取受影响的 ISA Server 计算机上的任何特权,突破防火墙,也不会危害任何缓存内容。 严重等级: ISA Server: 重要 上面的评估是基于受漏洞影响的系统类型、典型的部署模式以及利用漏洞对它们产生的影响作出的。 漏洞标识符:CAN-2003-0xxx 测试过的版本: Microsoft 已测试 ISA Server,以评估此漏洞是否影响这些版本。此前的版本不再受支持,它们可能会受这些漏洞的影响,也可能不受影响。 常见问题解答 问:该漏洞的范围有多大? 答:这是一个跨站点脚本执行漏洞,它允许攻击者向一个受影响的服务器发送请求,而这会导致将一个包含脚本的网页发送给其他用户。该脚本将在用户的浏览器内执行,就好像它来自第三方站点一样。这将允许该脚本使用与第三方网站相符的安全设置运行,同时这也使得攻击者能够访问属于该站点的任何数据。只有用户打开了一个 HTML 邮件或访问了一个恶意用户的网站时,该漏洞才会被利用 — 该代码并不能“插入”现有会话中。 问:什么是跨站点脚本执行? 答:CSS 是一个安全漏洞,它可能使恶意用户将代码“插入”用户与网站的会话中。与大多数安全漏洞不同,CSS 并不针对任何单独的供应商的产品 — 相反,它影响的是所有运行在 Web 服务器上并且没有防御性编程措施的软件。 CSS 的工作方式 关于 CSS 的工作方式,在执行概要和 FAQ 内有很好的说明,但下面的介绍也很详细。假设网站 A 具有搜索功能,允许用户通过键入单词或短语来进行搜索。如果用户键入“banana”作为搜索词,站点就会搜索该词,然后生成一个网页显示“I’m sorry, but I can’t find the word ‘banana’”(对不起,找不到“banana”这个词)。站点将此网页发送给用户的浏览器,该浏览器随后就解析并显示此网页。现在假设用户输入的搜索词不是“banana”,而是“banana ?SCRIPT? ?Alert(‘Hello’);? ?/SCRIPT?”这样的搜索词。如果搜索功能被编写为盲目地使用任何提供给它的搜索词,它将会搜索整个字符串,并且创建一个网页显示“I’m sorry, but I can’t find the word “banana ?SCRIPT? ?Alert(‘Hello’);? ?/SCRIPT?””。但是,所有以“?SCRIPT?”开头并以“?SCRIPT?”结尾的文本实际上都是程序代码,因此当处理该网页的时候,用户的浏览器就会显示一个写着“Hello”的对话框。 到此为止,本示例仅仅说明了用户如何“转送”代码,使其脱离 Web 服务器而在自己的计算机上运行。这本身并不是安全漏洞。不过,这个漏洞有可能被恶意的网站操作者调用,使代码在访问这个站点的用户的计算机上运行。如果网站 B 被一个恶意的用户操作,并且他能够诱使访问该站点的用户点击超级链接,网站 B 就能够进入网站 A,在搜索页上填写恶意脚本,并以该用户的名义提交此页。结果页就会返回给该用户(因为该用户点击了超级链接,所以归根结底他是请求者),并在该用户的计算机上进行处理。 问:脚本能在用户计算机上做什么? 答:来自网站 B(攻击者的站点)的脚本将会在该用户的计算机上运行,就像它来自网站 A 一样。这实际上意味着:该脚本将使用用户计算机上与网站 A 相符的安全设置来运行。 来自网站 B 的脚本将能够访问用户系统上属于网站 A 的 Cookie 和其他任何数据。 问:攻击者能够利用此漏洞控制 ISA Server 计算机吗? 答:不能。这只是一种跨站点脚本攻击。它不能够攫取对 ISA Server 的任何管理特权。 问:攻击者能够利用此漏洞破坏防火墙的安全性吗? 答:不能。利用此漏洞并不能降低防火墙为网络提供的安全性。 问:什么是 ISA Server? 答:ISA Server 提供了一个企业级的防火墙和一个高性能的 Web 缓存。防火墙通过控制在何种条件下可以通过防火墙访问哪些资源来保护网络。Web 缓存通过存储频繁请求的 Web 内容的本地副本来帮助提高网络性能。ISA Server 可以有三种安装模式:防火墙模式、缓存模式或集成模式。 防火墙模式使管理员能够通过配置用于控制公司网络与 Internet 之间的通信的规则来保护网络通信的安全。缓存模式通过在服务器自身上存储频繁访问的网页来提高网络性能。在集成模式下,所有的缓存和防火墙功能都可用。 问:此漏洞是由什么问题引起的? 答:产生此漏洞的原因是,由 ISA Server 返回的某些错误网页以 HTML 文本格式显示请求的 URL 而没有采取适当的编码措施。 问:ISA Server 错误网页出了什么问题? 答:许多 ISA 错误网页中的 homepage() 函数没有为 HTML 文本中显示的 URL 进行适当的编码。因此也就有可能在链接请求中嵌入脚本,并导致该脚本返回给 Web 浏览器。 问:攻击者能利用该漏洞做什么? 答:拥有一个网站并能够诱使其他用户点击他站点上的链接的攻击者可以利用该漏洞,通过另一个运行 ISA Server 的网站来执行跨站点脚本攻击。如上所述,这使得攻击者能使用其他网站的安全设置在用户浏览器上运行脚本,并且访问属于该站点的 Cookie 和其他数据。 问:攻击者如何利用此漏洞? 答:要利用这个漏洞,攻击者需要有一个网页并能够诱使用户点击该网页上的链接,或者需要用电子邮件给该用户发送一个 URL。此 URL 不必包含脚本。它需要理解对通过 ISA Server 发送的或向 ISA Server 发送的客户端请求施加的限制,使 ISA 以一个易受攻击的错误网页响应,而该网页的 homepage () 函数将把攻击者的脚本传回到浏览器。 您认为这种攻击的目的是,攻击者使用我的网站的安全设置在用户的浏览器上运行脚本。攻击者这么做能获得什么能力呢? 这因站点而异,取决于攻击者的站点和您的站点所在的安全区域。 如果两者处在同一安全区域内(默认情况下所有网站的安全区域都是“Internet 区域”,除非用户作了移动),它们就会有完全相同的安全限制,那么攻击者通过漏洞什么也得不到。 如果用户将攻击者的站点放入了一个比您的站点的安全区域还要严格的区域,那么只要您的站点的脚本在用户计算机上能作的事,攻击者的脚本在该用户计算机上同样可以做到。 如果用户将您的站点放入了一个比攻击者站点的安全区域还要严格的区域,那么攻击者也就束手无策了。 不过,非常重要的一点是,无论采取什么样的安全设置,攻击者的脚本始终能够访问用户系统上属于第三方站点的 Cookie 和任何其他数据。这是因为,浏览器只能将攻击者的站点判断为第三方站点。 问:修补程序是如何修补漏洞的呢? 答:通过移除 homepage() 函数和用于刷新页面和向后导航的 Javascript 命令,修补程序修补了这个漏洞。 获取修补程序的途径 该修补程序的下载位置 Microsoft ISA Server