Microsoft 安全公告 MS13-103 - 重要

ASP.NET SignalR 中的漏洞可能允许特权提升 (2905244)

发布时间: 2013年12月10日

版本: 1.0

一般信息

摘要

此安全更新可解决 ASP.NET SignalR 中一个秘密报告的漏洞。如果攻击者将特制 JavaScript 反映回目标用户的浏览器,则该漏洞可能允许特权提升。

对于 ASP.NET SignalR 版本 1.1.0、1.1.1、1.1.2、1.1.3 和 2.0.0 以及 Microsoft Visual Studio Team Foundation Server 2013 的所有受支持版本,此安全更新的等级为“重要”。有关详细信息,请参阅本节中“受影响和不受影响的软件”小节。

该安全更新通过确保 ASP.NET SignalR 正确地对用户输入进行编码来解决漏洞。有关漏洞的详细信息,请参阅下一节“漏洞信息”下面特定漏洞条目的常见问题 (FAQ) 小节。

建议。

对于开发使用 ASP.NET SignalR Web 应用程序的客户: 鼓励开发使用 ASP.NET SignalR 功能的 Web 应用程序的客户遵循本公告的“安全更新部署”部分中的更新指导进行操作,它提供了有关如何更新其环境中的 ASP.NET SignalR 的详细说明。

对于运行 Microsoft Visual Studio Team Foundation Server 2013 安装的客户: 对于启用了自动更新并且运行 Microsoft Visual Studio Team Foundation Server 2013 的客户,该更新将自动下载并安装。尚未启用“自动更新”的客户必须检查更新,并手动安装此更新。有关自动更新中特定配置选项的信息,请参阅 Microsoft 知识库文章 294871

对于管理员、企业安装或者想要手动安装此安全更新的最终用户,Microsoft 建议客户使用更新管理软件尽早应用此更新或者利用 Microsoft Update 服务检查更新。

另请参阅本公告后面部分中的“检测和部署工具及指导”一节。

知识库文章

知识库文章 2905244
文件信息
SHA1/SHA2 哈希
已知问题

受影响和不受影响的软件

已对下列软件进行测试,以确定受到影响的版本。其他版本的支持生命周期已结束或者不受影响。要确定软件版本的技术支持生命周期,请参阅 Microsoft 技术支持生命周期

受影响的软件

开发工具 最大安全影响 综合严重等级 替代的更新
ASP.NET SignalR 1.1.x[1] 
(2903919)
特权提升 重要
ASP.NET SignalR 2.0.x[1] 
(2903919)
特权提升 重要
Microsoft Visual Studio Team Foundation Server 2013 
(2903566)
特权提升 重要
[1]适用于托管支持 ASP.NET SignalR 功能的 Web 应用程序的 Windows 服务器。该更新仅提供下载,可将版本 1.1.0、1.1.1、1.1.2、和 1.1.3 和版本 2.0.0 更新到最新的受支持版本(截止到本公告发布之日为 1.1.4 和 2.0.1)。有关详细信息,请参阅本公告的“**安全更新部署**”部分。

不受影响的软件

软件和操作系统
ASP.NET SignalR 1.0.0
ASP.NET SignalR 1.0.1
Microsoft Visual Studio .NET 2003 Service Pack 1
Microsoft Visual Studio 2005 Service Pack 1
Microsoft Visual Studio Team Foundation Server 2005 Service Pack 1
Microsoft Visual Studio 2008 Service Pack 1
Microsoft Visual Studio Team Foundation Server 2008 Service Pack 1
Microsoft Visual Studio 2010 Service Pack 1
Microsoft Visual Studio Team Foundation Server 2010 Service Pack 1
Microsoft Visual Studio LightSwitch 2011
Microsoft Visual Studio 2012
Microsoft Visual Studio Team Foundation Server 2012

更新常见问题

什么是 ASP.NET SignalR?
ASP.NET SignalR 是一种面向 ASP.NET 开发人员的库,可简化实时 Web 功能的开发。ASP.NET SignalR 允许服务器和客户端之间通过 JavaScript 进行双向通信,使服务器能够在内容变为可用时立即将它们推送到连接的客户端(推送功能)。有关 ASP.NET SignalR 的详细信息,请参阅了解 ASP.NET SignalR

如何确定我的系统上安装的 ASP.NET SignalR 版本?
要确定系统上开发的 ASP.NET SignalR 版本,请在系统硬盘驱动器中搜索“SignalR”。查看搜索中返回的任何 Microsoft.AspNet.SignalR.Core.dll 文件的属性以显示其版本号。早于 1.1.4 的任何 1.1.x 版本容易受到攻击,应该进行更新。早于 2.0.1 的任何 2.0.x 版本容易受到攻击,应该进行更新。找到的任何 1.0.x 版本不容易受到攻击。

如何升级我的 ASP.NET SignalR 版本?   随 Visual Studio Team Foundation Server 2013 一起安装的 ASP.NET SignalR 的实例将通过 Microsoft Update 进行更新。但是,驻留在开发人员系统和 Web 应用程序服务器上的 ASP.NET SignalR 的其他实例需要使用本公告的“安全更新部署”部分中定义的过程进行更新。

此更新是否将升级我的 ASP.NET SignalR 版本?   否。该更新将更新系统上安装的修补程序版本,但不能升级主要或次要版本。截止到此公告发布,支持 ASP.NET SignalR 的两个主要版本(版本 1.1.x 和 2.0.x)。该更新将任何 1.1.x 版本更新到 1.1.4,而将任何 2.0.x 版本更新到 2.0.1。

我正在使用本安全公告中讨论的软件的较旧版本。我该怎么办?
已对本公告中列出的受影响的软件进行测试,以确定受到影响的版本。其他版本的支持生命周期已结束。有关产品生命周期的详细信息,请参阅 Microsoft 产品技术支持生命周期网站。

使用该软件的较旧版本的客户应优先考虑迁移到受支持的版本,以防止可能会受到新出现漏洞的影响。要确定您的软件版本的技术支持生命周期,请参阅选择一项产品以获取生命周期信息。有关这些软件版本的 Service Pack 的详细信息,请参阅Service Pack 生命周期支持策略

如果用户需要获得较旧软件的定制支持,则必须与其 Microsoft 客服小组代表、其技术客户经理或适当的 Microsoft 合作伙伴代表联系以了解定制支持选项。没有联合合同、优先支持合同或授权合同的客户可与其当地的 Microsoft 销售分支机构联系。有关联系信息,请参阅 Microsoft Worldwide Information 网站,在联系信息列表中选择国家/地区,然后单击“Go”以查看电话号码列表。在拨打电话时,请找当地的“企业技术咨询支持服务”销售经理进行洽谈。有关详细信息,请参阅 Microsoft 技术支持生命周期策略常见问题

漏洞信息

严重等级和漏洞标识符

以下严重等级假设漏洞的可能的最大影响。有关在安全公告发布 30 天内漏洞利用的安全等级和安全影响的可能性的信息,请参阅 12 月份公告摘要中的利用指数。有关详细信息,请参阅 Microsoft 利用指数

按受影响软件列出的漏洞严重等级和最大安全影响
受影响的软件 SignalR XSS 漏洞 – CVE-2013-5042 综合严重等级
开发工具
ASP.NET SignalR 1.1.x  (2903919) **重要**  特权提升 **重要**
ASP.NET SignalR 2.0.x  (2903919) **重要**  特权提升 **重要**
Microsoft Visual Studio Team Foundation Server 2013  (2903566) **重要**  特权提升 **重要**

SignalR XSS 漏洞 – CVE-2013-5042

ASP.NET SignalR 中存在一个特权提升漏洞,可能允许攻击者在目标用户的上下文中访问资源。

要在“常见漏洞和披露”列表中以标准条目查看此漏洞,请参阅 CVE-2013-5042

缓解因素

Microsoft 并未发现此漏洞的任何缓解因素。

变通办法

变通办法是指一种设置或配置更改,它不能从根本上纠正漏洞,但有助于在应用更新之前封堵已知的攻击源。Microsoft 已测试了以下变通方法,并在讨论中指明了变通方法是否会降低功能性:

  • 对于托管使用 ASP.NET SignalR 功能的 Web 应用程序的 Windows 服务器,关闭 ASP.NET SignalR Forever Frame 传输协议可提供临时保护,防止遭受此漏洞。

    在客户端和服务器上禁用 ASP.NET SignalR Forever Frame 传输协议是通过代码实现的。请参考以下示例作为在您的环境中禁用协议的指导。

    用于从客户端禁用受影响的传输的代码示例:

      // If using the default hub connection$.connection.hub.start({ transport:["webSockets", "serverSentEvents", "longPolling"] });
    
      // If using a ``manually-created connectionvar connection = $.connection("https://sample.com/signalr");connection.start({ transport:["webSockets", "serverSentEvents", "longPolling"] });
    

    用于当使用默认全局依赖解析器时在服务器上禁用受影响的传输的代码示例:

      using Microsoft.AspNet.SignalR;using Microsoft.AspN``et.SignalR.Transports;using Owin;namespace MyApplication{    public static class Startup    {        public static void ConfigureSignalR(IAppBuilder app)        {            // If using the global dependency resolver            TurnOfForeverFrame(GlobalHos``t.DependencyResolver);            app.MapSignalR();        }        public static void TurnOfForeverFrame(IDependencyResolver resolver)        {            var transportManager = resolver.Resolve<ITransportManager>() as TransportManager;            transpo``rtManager.Remove("foreverFrame");        }    }}
    

    用于当使用自定义依赖解析器时在服务器上禁用受影响的传输的代码示例:

      using Microsoft.AspNet.SignalR;using Microsoft.AspNet.SignalR.Transports;using Owin;namespace MyApplication{    public static class Startup    {        public static void C``onfigureSignalR(IAppBuilder app)        {            // If using a custom dependency resolver            var resolver = GetCustomResolver();            TurnOfForeverFrame(resolver);            app.MapSignalR(new HubConfiguration            {               `` Resolver = resolver            });        }        private static IDependencyResolver GetCustomResolver()        {            return new DefaultDependencyResolver();        }        public static void TurnOfForeverFrame(IDependencyResolver resolver)      ``  {            var transportManager = resolver.Resolve<ITransportManager>() as TransportManager;            transportManager.Remove("foreverFrame");        }    }}
    

    变通办法的影响。 实施该变通办法之后,Internet Explorer 客户端可能会展现较慢的与 SignalR 应程序通信的速度。

  • 对于安装了 Microsoft Visual Studio Team Foundation Server 2013 的系统,Microsoft 并未发现任何解决办法。

常见问题

这些漏洞的影响范围有多大?   这是一个特权提升漏洞。

造成此漏洞的原因是什么?   当 ASP.NET SignalR 不正确地对用户输入进行编码时,会导致该漏洞。

攻击者可能利用此漏洞执行什么操作?   在 Web 浏览情形中,攻击者可能会将特制 JavaScript 反映回用户的浏览器,这可能允许攻击者修改页面内容、执行网络钓鱼或代表目标用户执行操作。

攻击者如何利用此漏洞?   在攻击情形中,攻击者可能会将特制内容引入到目标用户的浏览器中,该内容包含旨在使攻击者访问可供目标用户使用的资源的恶意 JavaScript。

受此漏洞威胁最大的系统有哪些?   在 Web 浏览情形中,成功利用此漏洞要求用户登录并访问托管 ASP.NET SignalR 的网站。因此,任何频繁使用 Web 浏览器的系统(如工作站或终端服务器)受此漏洞的威胁最大。如果管理员允许用户浏览并读取服务器上的电子邮件,则服务器可能面临更大风险。不过,最佳做法是不要授予这样的权限。

此更新有什么作用?   该更新通过确保 ASP.NET SignalR 正确地对用户输入进行编码来解决漏洞。

发布此安全公告时,此漏洞是否已公开披露?   否。Microsoft 通过协调漏洞披露渠道了解到有关此漏洞的信息。

发布此安全公告时,Microsoft 是否收到任何有关此漏洞已被利用的报告?   否。在最初发布此安全公告时,Microsoft 未收到任何表明此漏洞已公开用于攻击用户的信息。

更新信息

检测和部署工具及指导

许多资源可帮助管理员部署安全更新。 

  • 管理员可使用 Microsoft Baseline Security Analyzer (MBSA) 在本地和远程系统中扫描缺少的安全更新和常见的安全配置错误。 
  • Windows Server Update Services (WSUS)、Systems Management Server (SMS) 和 System Center Configuration Manager 帮助管理员分发安全更新。 
  • Application Compatibility Toolkit 随附的更新兼容性评估程序组件针对安装的应用程序协助简化 Windows 更新的测试和验证。 

有关可用的这些工具和其他工具的信息,请参阅 IT 专业人员安全工具

安全更新部署

受影响的软件

有关您的受影响软件的特定安全更新信息,请单击相应的链接:

ASP.NET SignalR(所有版本)

有多种更新方法可用,具体取决于您的部署情况。选择最适合您的情形的方法:

对于已启用 ASP.NET SignalR 的 Web 应用程序的开发人员

  • 方法 1:使用 NuGet 更新您的 Visual Studio 项目包、重新编译您的应用程序并部署

    1. 在 Visual Studio 中打开您的解决方案。
    2. 在解决方案资源管理器中,右键单击“引用”节点,然后单击“管理 NuGet ”。
    3. 选择“更新”选项卡。带有更新的包列表出现在中心窗格中。
    4. 选择“Microsoft.AspNet.SignalR”包,然后单击“更新”。
    5. 编译和部署您的 Web 应用程序。

    有关使用 NuGet 对话框管理 NuGet 包的详细信息,请参阅使用对话框管理 NuGet 包

  • 方法 2:使用程序包管理器控制台 UI 更新您的 Visual Studio 项目包、重新编译您的应用程序并部署

    1. 在 Visual Studio 中打开您的解决方案。
    2. 单击“工具”菜单,选择“库程序包管理器”,然后单击“软件包管理器控制台”。
    3. 在程序包管理器窗口中,输入 Update-Package Microsoft.AspNet.SignalR
    4. 编译和部署您的 Web 应用程序。

    有关使用程序包管理器控制台的详细信息,请参阅使用软件包管理器控制台

对于无法重新编译启用 ASP.NET SignalR 的 Web 应用程序的系统管理员

  • 更新管理员系统上的 ASP.NET SignalR

    要在更新项目和重新部署 Web 应用程序之前保护服务器,请使用下表中提供的链接安装此更新。这应该被视为 IT 管理员的临时保护,直至使用 ASP.NET SignalR 的部署应用程序可以更新。

    更新文件 SignalR-KB2903919.msi
    安装开关 请参阅 Microsoft 知识库文章 262841
    更新日志文件 不适用
    重新启动要求 不需要重新启动系统;但是,IIS 将重新启动。
    删除信息 使用控制面板中的“添加或删除程序”。
    文件信息 请参阅 Microsoft 知识库文章 2903919

Microsoft Visual Studio Team Foundation Server 2013(所有版本)

参考表

下表包含此软件的安全更新信息。

安全更新文件名 对于 Microsoft Visual Studio Team Foundation Server 2013:
TFS2013-KB2903566.exe
安装开关 请参阅 Microsoft 知识库文章 262841
更新日志文件 不适用
重新启动要求 如果文件正在使用,此更新可能要求重新启动。
删除信息 使用控制面板中的“添加或删除程序”。
文件信息 请参阅 Microsoft 知识库文章 2903566
注册表项验证 对于 Microsoft Visual Studio Team Foundation Server 2013:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\tfs\Servicing\12.0

其他信息

Microsoft Active Protections Program (MAPP)

为改进客户的安全保护,Microsoft 在发布每月安全更新之前将向主要的安全软件供应商提供漏洞信息。然后,安全软件供应商可以使用该漏洞信息通过其安全软件或者设备向客户提供更新的保护,例如防病毒、基于网络的入侵检测系统或者基于主机的入侵防止系统。要确定是否可从安全软件供应商处得到活动保护,请转到计划合作伙伴(在 Microsoft Active Protections Program (MAPP) 合作伙伴中列出)提供的活动保护网站。

支持

如何获取此安全更新的帮助和支持

免责声明

Microsoft 知识库中的信息“按原样”提供,没有任何形式的担保。Microsoft 不作任何明示或暗示保证,包括对适销性和针对特定目的的适用性的保证。Microsoft Corporation 或其供应商不对任何损害(包括直接的、间接的、偶然的、必然的损害,商业利润损失,或特殊损害)承担任何责任,即使 Microsoft Corporation 或其供应商事先已被告知有可能发生此类损害。有些州不允许排除或限制必然或偶然损害的赔偿责任,因此上述限制可能不适用。

修订版本

  • V1.0(2013 年 12 月 10 日): 已发布公告。

Built at 2014-04-18T01:50:00Z-07:00