我正在嘗試確定我們是否遇到了最近報告的 CVE-2018-25032 漏洞,因為 .NET 確實在 DeflateStream 實作中使用了 zlib 庫。
我似乎找不到微軟發布的關于此的任何內容。
有沒有辦法找出哪個 .NET Framework 版本使用哪個版本的 zlib?
uj5u.com熱心網友回復:
根據DeflateStream 檔案頁面,4.5 之前的 .NET Framework 版本根本不使用 zlib:
從 .NET Framework 4.5 開始,DeflateStream 類使用 zlib 庫
我不知道每個后續版本的 .NET Framework 使用了哪些確切版本的 zlib(并且隨著時間的推移,版本可能會隨著小補丁而改變),但我可以根據每個 .NET Framework 版本的發布時間給出一個近似值并進行比較到當時最新版本的 zlib(.NET 團隊很可能選擇使用每個外部庫的最新版本,包括 zlib,在任何給定時間都可用):
| .NET 框架版本 | 相應 .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 資訊),因此 DeflateStream 代碼可能不會受到 CVE 的影響,盡管它使用的 zlib 版本包含所述漏洞。如果您有任何與使用 .NET 打包的 zlib 版本互動的自定義??代碼Z_FIXED,您應該手動緩解漏洞或顯式匯入 zlib v1.2.12 以覆寫 .NET 的內置版本。
請注意,CVE 和 zlib 的補丁非常新,以至于 .NET 的最新版本 .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 [...]
以及來自同一個存盤庫檔案夾的 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 的具體更改)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457505.html
