我正试图弄清楚我们是否expose 在最近报道的CVE-2018-25032漏洞之下,正如所说.NET确实在DeflateStream实现中使用了zlib库.

我似乎找不到微软发布的关于这个的任何信息.

有没有办法找到答案.NET Framework版本使用哪个版本的zlib?

推荐答案

根据DeflateStream docs page的说法.NET Framework 4.5之前的版本根本不使用zlib:

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

我不知道zlib的每个后续版本有哪些exact个版本.NET框架使用(随着时间的推移,版本可能会有一些小补丁发生变化),但我可以根据每个补丁出现的时间给出一个近似值.NET Framework版本已发布,并将其与当时最新版本的zlib进行比较(该.NET团队很可能 Select 使用每个外部库的最新版本,包括任何给定时间可用的zlib):

.NET Framework Version Latest zlib version upon respective .NET version release
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

正如你所看到的,所有版本的.NET Framework自添加zlib以来,使用易受此CVE影响的zlib版本.Per the author, Mark Adler,但是,DeflateStream甚至可能不会调用Z_FIXED(参见下面的CVE信息),因此DeflateStream代码可能不会受到CVE的影响,尽管它使用的zlib版本包含上述漏洞.如果您有任何与Z_FIXED交互的自定义代码,请使用.NET的打包zlib版本,您应该手动或显式导入zlib v1来缓解该漏洞.2.12+覆盖.NET的内置版本.

请注意,CVE和zlib的补丁非常新,最新版本的.网NET Core 6.0.3(于2022年3月8日发布)仍然使用zlib v1.2.11(自2017年起).从.GitHub存储库中的NET zlib.3文件:

.TH ZLIB 3 "15 Jan 2017"
.SH NAME
zlib \- compression/decompression library
[...]

还有兹利布.h(自述文件)来自同一个存储库文件夹:

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

ZLIB changelog on GitHub人中:

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的具体变化).

Csharp相关问答推荐

向类注入一个工厂来创建一些资源是一个好的实践吗?

读取配置文件(mytest. exe. config)

如何修改中间件或其注册以正确使用作用域服务?

.NET HttpClient、JsonSerializer或误用的Stream中的内存泄漏?

有没有办法使.NET 6应用程序在特定的.NET 6运行时版本上运行

如何在不考虑年份的情况下判断日期时间是否在某个日期范围内?

在C#中,有没有一种方法可以集中定义跨多个方法使用的XML参数描述符?

将现有字段映射到EFCore中的复杂类型

为什么我的表单在绑定到对象时提交空值?

无法通过绑定禁用条目

在实体框架中处理通用实体&S变更跟踪器

按需无缝转码单个HLS数据段

如何将%{v_扩展}转换为%{v_扩展}>>

C#LINQ子字符串

Celler ArgumentExpression是否期望在所有情况下都捕获允许空值的运算符?

为什么C#/MSBuild会自发地为不同的项目使用不同的输出路径?

C#静态抽象属性不能被子接口覆盖

如何在Xamarin.Forms中检索PanGesture事件的位置?

在C#和HttpClient中使用REST API

项目参考和方法签名问题