有没有一种方法可以查找哪个.NET Framework版本使用了哪个版本的zlib?(与CVE-2018-25032相关)

12

我正在尝试确定我们是否受到最近报告的CVE-2018-25032漏洞的影响,因为.NET确实在DeflateStream实现中使用zlib库。

我似乎找不到微软发布的任何关于此问题的信息。

有没有办法找出哪个.NET Framework版本使用了哪个版本的zlib?


4
关于.NET Framework的事情我不确定,但是对于.NET他们会自行编译并在 https://github.com/dotnet/runtime/tree/main/src/native/external/zlib 上保存一个副本。看起来它是1.2.11版本,所以可能存在安全漏洞(除非他们自己修补过)。不过如果您在那里创建一个问题,您可能会得到更好的答案。 - Karl-Johan Sjögren
10
这个问题正在元社区上讨论。 - cigien
1个回答

13
根据DeflateStream文档页面,.NET Framework 4.5之前的版本根本不使用zlib:

从.NET Framework 4.5开始,DeflateStream类使用zlib库

我不知道每个后续版本的.NET Framework确切使用了哪个版本的zlib(版本可能随着时间的推移而在小修补程序中更改),但是我可以根据每个.NET Framework版本发布的时间以及当时最新版本的zlib进行近似计算(.NET团队最有可能选择使用任何给定时间可用的外部库的最新版本,包括zlib):
.NET Framework版本 各自.NET版本发布时的最新zlib版本
4.5 1.2.7
4.5.1 1.2.8
4.5.2 1.2.8
4.6 1.2.8
4.6.1 1.2.8
4.6.2 1.2.8
4.7 1.2.11
4.7.1 1.2.11
4.8 1.2.11
如您所见,自从添加zlib以来,所有版本的.NET Framework都使用易受此CVE攻击的zlib版本。根据作者Mark Adler, 但是,DeflateStream甚至可能不会调用Z_FIXED(请参阅下面的CVE信息),因此,尽管它使用了包含该漏洞的zlib版本,但DeflateStream代码可能并不容易受到CVE的影响。如果您有任何与.NET打包的zlib版本交互的自定义代码,并且正在使用Z_FIXED,则应手动减轻漏洞或明确导入zlib v1.2.12+以覆盖.NET内置版本。
请注意,CVE和zlib的补丁是比较新的,最新版本的.NET,.NET Core 6.0.6(于2022年6月14日发布)仍使用zlib v1.2.11(来自2017年);.NET 7处于预览阶段,很可能(希望)会包含v1.2.12+;看起来.NET Core 6作为主要版本不会更新以包含更新版本。
从GitHub存储库中的.NET zlib.3文件:
.TH ZLIB 3 "15 Jan 2017"
.SH NAME
zlib \- compression/decompression library
[...]

同时,该存储库文件夹中的zlib.h(自述文件):

/* zlib.h -- interface of the 'zlib' general purpose compression library
  version 1.2.11, January 15th, 2017
[...]

GitHub上的ZLIB变更日志中可以看到:

ChangeLog file for zlib

Changes in 1.2.12 (27 Mar 2022) 
[...]
- Fix a bug that can crash deflate on some input when using Z_FIXED 
[...]

(跳过与CVE无关的行,着重关注由CVE引发的具体更改)。


4
DeflateStream类中,我没有看到可以指定Z_FIXED的方法。 - Mark Adler
3
嗨@MarkAdler--为了明确,我以前没有使用过DeflateStream,所以我不知道.NET团队的zlib实现是如何工作的,包括Z_FIXED或库的任何方面。我只提供OP要求的版本信息。答案仅在OP引用它的情况下提到DeflateStream。如果DeflateStream不使用Z_FIXED,则尽管.NET中包含有漏洞的zlib _version_,但使用DeflateStream的代码本身可能根本不会有漏洞... 我会更新答案以反映这种可能性。 - TylerH
1
嗨@TylerH,非常感谢您提供如此详细的答案。我将把它标记为答案。考虑到这个漏洞在IT世界中引起的波动,我对微软的懈怠态度感到惊讶。希望这个答案能帮助下一个遇到这个问题的可怜人(尽管有奇怪的负评)。同时,感谢您对相关元问题的支持! - johnivers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接