这个问题的简短版本是:是否有针对 ASP.NET 漏洞 CVE-2008-5100的修复或缓解措施,它允许攻击者绕过程序集数字签名检查?
我会介绍一些背景。我提前为篇幅道歉;这似乎是一个复杂的主题。
我们对运行 ASP.NET 应用程序的 Windows 2008R2 网站运行了安全扫描程序,扫描程序声称我们容易受到 CVE-2008-5100 的攻击。正如 mitre.org 和许多其他网站所述,该漏洞于 2008 年首次报告,包括:
Microsoft .NET Framework 2.0.50727 中的强名称(SN)实现依赖于嵌入在 DLL 文件路径名中的数字签名 Public Key Token,而不是该文件本身的数字签名,这使得攻击者更容易绕过 Global程序集缓存 (GAC) 和代码访问安全 (CAS) 保护机制,即 MSRC 票证 MSRC8566gs。
这似乎是 .NET Framework 实现中的一个令人尴尬的设计缺陷,允许有权访问目标系统文件系统的攻击者替换恶意 DLL,该恶意 DLL 将被不恰当地验证为受害者的原始 DLL。
该漏洞的 CVSS 评分为 10.0,相当于有史以来遇到的最严重的漏洞。
安全扫描软件提示:“更新 ASP.NET 版本”。但是,在我对该主题的广泛谷歌搜索中,没有证据表明任何其他版本的 ASP.NET 更容易受到攻击。事实上,考虑到这个缺陷的严重程度,令人惊讶的是,自 2009 年 1 月以来,跟踪该缺陷的网站都没有更新。我能找到的唯一一个相对较新的关于此类缺陷的提及是在 Ian Picknell 的博客中,其中他描述了 .NET Framework 3.5 SP1(截至 2010 年 2 月)中的一个非常相似的未修复缺陷。同样令人担忧的是,安全供应商刚刚在 2013 年 1 月将这个漏洞添加到他们的扫描仪中。
为简洁起见,我将避免长时间讨论 ASP.NET 版本的含义。但是,扫描程序似乎正在关闭 HTTP 标头“X-AspNet-Version: 2.0.50727”。我们的应用程序发出此标头,因为它是使用面向 .NET Framework 3.0 的构建标志编译的。实际上,即使在 Windows Server 2012 上运行,应用程序也会报告此版本的 ASP.NET。如果我们使用 .NET Framework 4 的目标重新编译应用程序,我们会得到标题“X-AspNet-Version: 4.0.30319” . 我们可能可以通过使用这个编译版本让扫描器停止抱怨,但这真的改变了 .NET 在运行时检查程序集的方式吗?我持怀疑态度,但我无法以一种或另一种方式找到任何证据。
我不太关心实际被利用的应用程序,因为它需要对系统目录的写访问权。我和我的管理层一样关注遵循最佳实践。
谢谢。