Flame 利用了哪些加密漏洞,使其代码得到了微软的签名?

信息安全 密码学 恶意软件
2021-08-18 16:17:56

今天,微软发布了一个安全咨询警告,称“Flame”恶意软件利用了微软终端服务器许可服务所使用的加密算法中的一个弱点,从而能够对其部分代码进行签名,因此它似乎来自微软。

这是微软写的:

我们通过分析发现,恶意软件的某些组件已由证书签名,使软件看起来像是由 Microsoft 生产的。我们发现可以利用较旧的加密算法,然后将其用于对代码进行签名,就好像它来自 Microsoft。具体来说,我们的终端服务器许可服务允许客户在其企业中授权远程桌面服务,它使用了旧算法并提供了能够对代码进行签名的证书,从而允许对代码进行签名,就好像它来自微软一样。

另请参阅Microsoft 的这篇博文

那么,Microsoft Terminal Service Licensing Service 使用的可利用加密算法是什么?Flame 利用了哪些加密弱点?我们可以从这次事件中吸取什么教训吗?

4个回答

更新: 微软发布了一份报告,证实了这篇文章中的猜测并提供了大量细节。

证书用途

证书可用于多种用途。例如,它可以用作个人或网络服务器的身份证明。它可以用于代码sing或签署其他证书。

在这种情况下,旨在签署许可证信息的证书能够签署代码。

可能就像 Microsoft 不检查他们签署的客户证书的目的标志一样简单:

具体来说,当企业客户请求终端服务激活许可证时,Microsoft 为响应该请求而颁发的证书允许代码签名。

MD5碰撞攻击

对旧算法的引用可能表明对签名过程的冲突攻击:在 CCC 2008 上有一个谈话,称为MD5,今天被认为是有害的 - 创建一个流氓 CA 证书

在那次演讲中,研究人员解释了如何生成两个具有相同哈希的证书。

生成了一个看起来无害的认证请求并将其提交给 CA。CA 对其进行签名并为 https-servers 生成有效证书。

但是该证书与另一个生成的证书具有相同的哈希值,该证书具有 CA 证书的目的。因此,无害证书的 CA 签名对危险证书也有效。

研究利用 MD5 的弱点来产生碰撞。为了使攻击起作用,他们必须预测 CA 将写入证书的信息。

得到教训?

  • Microsoft 已检查 Windows 更新的代码签名证书的根是 Microsoft CA。因此不能使用其他恶意 CA 签名的证书。

  • 不要忘记遗留代码和服务

  • 如果有足够的动力,即使是不切实际的理论弱点,也会被利用。(演讲的原标题是“做理论上的可能”)。

更新

微软已经确认了这两个问题(一个问题就足以被利用):

Flame 恶意软件结合终端服务器许可服务证书使用加密冲突攻击来对代码进行签名,就好像它来自 Microsoft。然而,不执行冲突的代码签名也是可能的。

更新 2

微软公布了详细信息

  • 未正确检查证书用途的漏洞仅影响旧版本的 Windows。
  • 碰撞攻击被用来操纵证书扩展,因此当前版本的 Windows 也被愚弄了。

更新 3

原始 md5 碰撞攻击的研究人员发表文章称,攻击者使用了已知 md5 选择前缀攻击的新变体,这意味着他们对密码学有非常深入的了解。

好问题:) 不确定是否有明显的答案。

我不认为这是一个被破坏的算法,而是被盗的证书。

我想一个教训是 CA 模型被破坏了,但你可能以前就知道这一点。所以看起来像一个真正的“微软”证书被用来签署火焰。SANS 发布了以下内容 - https://isc.sans.edu/diary.html?storyid=13366目前似乎没有人知道它是如何被盗的,或者是谁做的,但美国政府(许多人最初怀疑)真的会窃取微软证书吗,谁知道???

我喜欢你提供的链接中的一点,微软说 -

“此外,大多数防病毒产品都会检测并删除这种恶意软件。”

我认为 Flame 事件进一步证明了 AV 行业完全是反动的,非常受营销驱动且不再有效(甚至 Mikko Hyponnen 也表示这是 Wired 周末的失败 - http://www.wired.com/threatlevel /2012/06/internet-security-fail/)。

Hyponnen 发布了一张照片,显示在撤销之前,Flame 中使用的被盗证书在 Windows 7 中的样子 - http://t.co/M7phmvAu

去年,一个比我更了解证书等的人 (Moxie Marlinspike) 就该主题发表了一篇很棒的文章 - http://blog.thoughtcrime.org/ssl-and-the-future-of-authenticity我一直在使用 Convergence (http://convergence.io),我可能会对其进行更多研究,尽管它本质上是用于浏览的,不幸的是在这里没有帮助。绝大多数用户不知道如何在浏览器中检查证书或了解其工作原理,更不用说查看驱动程序证书了。我想这是真正了解您(或您的用户)正在运行、做什么以及什么是正常流量的重要性的另一个例子。制定允许已知的良好流量并拒绝任何未明确允许(到 Internet)的策略有助于减少攻击面和攻击能力。

此建议适用于那些需要最高安全性的人,而不适用于临时网络用户

我们可以吸取的一个教训是减少公众信任的表面积我不知道具体的根层次结构受到了损害,但总的来说,我认为开箱即用的公共 PKI 信任过于广泛。

我建议从您的主机中删除所有非必要的根证书,但此处列出的证书除外

Issued to                              Issued by                            Serial number                   Expiration date Intended purposes   Friendly name                        Status
Microsoft Root Authority               Microsoft Root Authority         00c1008b3c3c8811d13ef663ecdf40  12/31/2020  All                     Microsoft Root Authority                R
Thawte Timestamping CA                 Thawte Timestamping CA           00                              12/31/2020  Time Stamping           Thawte Timestamping CA                  R
Microsoft Root Certificate Authority   Microsoft Root Certificate Authority 79ad16a14aa0a5ad4c7358f407132e65 5/9/2021   All                     Microsoft Root Certificate Authority    R

然后请求 Microsoft 将那些受信任的根限制为所需的最低 EKU,例如代码签名等。即使是 3 个证书的受限列表也有太多权限。

坚持删除根证书的临时用户应仔细阅读此答案,了解为什么将 CA 放置在那里、方法以及每个根证书的安全要求。

这里有两个漏洞:

  • 不受限制的代码签名。微软让终端服务的用户能够获得链接到微软根的签名证书。他们无意中允许将此证书用于签名代码。因此,用户可以签署他们喜欢的任何代码,并使其看起来像是经过 Microsoft 批准的。哎呀!很坏。

    此漏洞可在 Windows Vista 之前的系统上利用(例如,在 Windows XP 上)。但是,由于在 Vista 中引入了新的强化措施,此漏洞本身不再可用于在 Windows Vista 或更高版本上进行代码签名。

  • 碰撞攻击。链中的证书之一使用 MD5已知 MD5 容易受到碰撞攻击,并且已知如何使用这些攻击来利用任何使用 MD5 的证书颁发机构。这使得攻击者可以对他们选择的任何代码进行签名,使其看起来像是得到了微软的批准。(有关更多信息,请参阅@Hendrik 的答案。)这也很糟糕。

    此漏洞使他们能够绕过与 Vista 相关的加固。因此,这两个漏洞的结合使攻击者能够成功攻击所有 Windows 操作系统:他们能够对恶意代码进行签名,使其看起来像是来自 Windows。

这是两个独立(但相关)的漏洞。Flame 将两者结合使用,使 Flame 能够成功攻击所有 Windows 平台。这些漏洞已存在多年。有人可以很容易地利用前一个漏洞,尽管它只能在 Vista 之前的平台上成功。

进一步阅读的资源:

  • 一篇优秀的博客文章更详细地解释了所有这些: http ://rmhrisk.wpengine.com/?p=52

  • 微软写道

    Flame 恶意软件结合终端服务器许可服务证书使用加密冲突攻击来对代码进行签名,就好像它来自 Microsoft。然而,不执行冲突的代码签名也是可能的。

  • 微软还写道

    默认情况下,攻击者的证书在 Windows Vista 或更新版本的 Windows 上不起作用。他们必须执行冲突攻击来伪造证书,该证书对 Windows Vista 或更新版本的 Windows 上的代码签名有效。在早于 Windows Vista 的系统上,可以在没有 MD5 哈希冲突的情况下进行攻击。

  • 碰撞攻击显然涉及对 MD5 的新型碰撞攻击的开发,与以前在公开研究文献中已知的不同。请参阅 Ars Technica 的报告(加密突破表明 Flame 是由世界级科学家设计的)和Marc Stevens 的分析