概要
遠端 Debian 主機上缺少一個或多個安全性更新。
說明
遠端 Debian 12 主機上安裝的多個套件受到 dla-4821 公告中提及的多個弱點影響。
- ------------------------------------------------------------------------- Debian LTS 公告[email protected]://www.debian.org/lts/security/ArnaudRebillout 2026 年 10 月 5 日https://wiki.debian.org/LTS
- -------------------------------------------------------------------------
套件:perl 版本:5.36.0-7+deb12u4 CVE ID:CVE-2025-15649 CVE-2026-7010 CVE-2026-7017 CVE-2026-8376 CVE-2026-12087 CVE-2026-13221 CVE-2026-19487 CVE-2026-42496 CVE-2026-42497 CVE-2026-48959 CVE-2026-48962 CVE-2026-57432 CVE-2026-57433 Debian 錯誤:1137345 1138854 1138856 1138858 1138859 1138860 1138863 1138905 1138906 1140152 1141639 1142037 1144668
在 Perl 程式設計語言中發現多個弱點。
CVE-2025-15649
IO::Uncompress::Unzip 中的標頭剖析
Perl 的 IO::Uncompress::Unzip 版本低於 2.215 時,在剖析包含格式錯誤 DOS 日期的 ZIP 標頭時,可能會傳播未捕獲的異常。
_dosToUnixTime() 會解碼本地檔案標頭中的最後修改日期欄位,並在沒有 eval 防護的情況下呼叫 Time::Local::timelocal()。如果標頭中的日期欄位解碼後包含超出有效範圍的月份、日期或小時,timelocal() 就會拋出例外並導致程式終止。此例外會一路傳播出 IO::Uncompress::Unzip->new($file);然而,呼叫端原本預期的是回傳 undef,並透過 $UnzipError 提供錯誤資訊。
CVE-2026-7010
HTTP::Tiny 中的 CRLF 驗證
Perl 的 HTTP::Tiny 0.093 之前版本,未驗證 HTTP 請求行或控制欄位標頭值中的 CRLF 字元。未經驗證的輸入包括請求行中的方法與 URI,會成為 Host: 標頭的 URL 主機以及 HTTP/1.1 控制資料欄位的值。
如果攻擊者能控制其中任一輸入,例如將使用者提供的 URL 傳入 Webhook 或 URL 擷取端點,就可能注入額外標頭,並向上游伺服器進行請求走私攻擊。
CVE-2026-7017
HTTP::Tiny 在重新導向時轉發認證憑證
Perl 的 HTTP::Tiny 0.095 之前版本,會將憑證標頭轉發至跨來源的重新導向目標。當伺服器回傳 3xx 重新導向時,_maybe_redirect 會遵循 Location: 標頭,而 _prepare_headers_and_cb 會在未檢查重新導向目標是否與原始 URL 共用相同來源的情況下,將呼叫端傳入的 headers 引數重新合併至新請求中。因此,呼叫端提供的 Authorization、Cookie 和 Proxy-Authorization 標頭,可能會被重新傳送至重新導向所指定的任何主機,甚至跨越通訊協定、主機或連接埠邊界;其中也包括從 https 降級至 http 的情況,導致這些憑證以明文形式在網路上傳輸。HTTP::Tiny POD 中「重新導向的請求不會包含 Authorization 標頭」的說明,僅適用於透過 URL 使用者資訊所進行的 Basic-Auth 路徑,並不適用於由呼叫端明確傳入的標頭。
CVE-2026-8376
Perl_study_chunk 中的緩衝區溢位
Perl 5.40.5-RC1 之前的版本、5.41.0 至 5.42.3-RC1 之前的版本,以及 5.43.0 至 5.43.11 之前的版本,在 32 位元建置環境中編譯包含重複固定字串的規則運算式時,存在堆積緩衝區溢位問題。
regcomp_study.c 中的 Perl_study_chunk 會檢查已聯結子字串緩衝區的大小(以字元而非位元組為單位)。對於具有較大最小重複次數的量化固定子字串,
其位元組長度 mincount * l 可能會溢位 SSize_t,導致 SvGROW 配置的緩衝區大小不足;後續的複製操作便會寫入緩衝區末端之外。如果呼叫端在 32 位元 Perl 建置環境中編譯由攻擊者控制的規則運算式,就可能在編譯期間觸發堆積緩衝區溢位。
CVE-2026-12087
Socket::pack_ip_mreq_source() 超出邊界堆積讀取
Perl 的 Socket 2.041 之前版本存在超出邊界堆積讀取弱點。在 Socket.xs 中,pack_ip_mreq_source() 會在讀取 source 引數之前檢查其長度。因此,該檢查實際上測試的是前一個 multiaddr 引數遺留下來的位元組長度,而不是 source 的長度。由於兩個位址都使用 4 位元組欄位,只要 multiaddr 是有效的 4 位元組值,任何長度的 source 都可能通過檢查。之後,函式會使用固定大小的複製操作,將 source 複製到 4 位元組的 imr_sourceaddr 欄位中。不會拒絕長度小於 4 位元組的 source,複製操作可能讀取超出其緩衝區末端最多 3 個位元組。呼叫 pack_ip_mreq_source() 並傳入少於 4 位元組的 source 值時,鄰近的堆積記憶體內容可能會被複製到回傳的封裝結構中。
CVE-2026-13221
規則運算式比對結果靜默錯誤
Perl 5.40.5-RC1 之前的版本、5.41.0 至 5.42.3-RC1 之前的版本,以及 5.43.0 至 5.43.10 之前的版本,在 Perl_study_chunk 將包含超過 65535 個固定字串分支的替代式編譯為 trie 時,可能產生靜默錯誤的規則運算式比對結果。當這些分支合併至 trie 時,第一個分支與共用尾部之間的差值會儲存在 16 位元欄位中。當分支數量超過 65535 時,該欄位會溢位,導致 trie 的比對決策表被截斷,而且不會產生警告或錯誤。這種形式的模式會產生誤報匹配結果 (匹配本不應匹配的字串) 和漏報匹配結果 (無法匹配本應匹配的字串)。當這種模式控制存取或篩選決策時,結果會是錯誤的。
CVE-2026-19487
錯誤的規則運算式匹配結果
Perl 5.9.4 及之後、5.41.9 之前的版本,當過時的失敗旗標在 S_find_byclass 中使 Aho-Corasick 預掃描提前結束時,會產生錯誤的規則運算式匹配結果。預掃描會遍歷主體,尋找完整模式可能匹配的位置,而引擎會從記錄下來的最左側位置開始嘗試。失敗的轉移會設定 failed 旗標,而之後成功的轉移不會清除它,因此預掃描會將過時的旗標讀作失敗,並在能夠記錄一個更早開始的候選項之前停止。它需要一個主體,其中已記錄一個候選項,之後的字元又會透過一個成功的失敗連結強制回退。範例:ABCDE =~ m/ABCF|BCDE|C/; # 在偏移量 2 處匹配 C,而不是 BCDE ABCDE =~ m/ABCF|BCDE|C(G)/; # 無匹配,漏掉 BCDE 這樣的替代式可能漏掉本應匹配的輸入,或在錯誤的分支上匹配,因此根據結果作出的存取或篩選決策可能會錯誤。
CVE-2026-42496
Archive::Tar 符號連結擷取
Perl 的 Archive::Tar 3.08 之前的版本會將符號連結擷取到提取目錄之外由攻擊者控制的目標。
_make_special_file() 會將 tar 標頭的連結名稱傳遞給 symlink(),而不會驗證其中是否包含絕對路徑或 .. 片段。保護一般檔案擷取的安全提取模式檢查不涵蓋符號連結目標。之後透過擷取出的名稱進行開啟操作時,會讀取或寫入攻擊者選擇的路徑。
CVE-2026-42497
Archive::Tar 硬連結擷取
Perl 的 Archive::Tar 3.08 之前的版本會將硬連結擷取至提取目錄之外由攻擊者控制的路徑。
_make_special_file() 會將 tar 標頭的連結名稱傳遞給 link(),而不會驗證其中是否包含絕對路徑或 .. 片段,從而建立與受害者檔案共用 inode 的硬連結。之後透過擷取出的名稱進行寫入操作時,會修改受害者檔案,而 _extract_file() 中提取後的 chmod、chown 和 utime 區塊 (僅透過 -l 防範符號連結) 會在提取過程中,將 tar 標頭中的模式、所有者和時間戳記套用至共用的 inode。
CVE-2026-48959
IO::Uncompress::Unzip 中的 CPU 耗盡
Perl 的 IO::Uncompress::Unzip 2.220 之前的版本會透過 fastForward 中的逐位元組讀取迴圈造成 CPU 耗盡。fastForward() 會將 $offset 的長度 (偏移量的位數,1 至 19) 與區塊大小 $c 進行比較,而不是與 $offset 本身比較,因此 $c 會在每次迭代中從 16 KiB 縮小至 1–19 位元組。透過 IO::Uncompress::Unzip->new($zip, Name => $target) 從攻擊者提供的 zip 中擷取指定型項目時,會驅動逐位元組讀取迴圈,其運算量會隨項目的壓縮大小增加,最高可達非 Zip64 的 4 GiB 上限。
CVE-2026-48962
透過輸出 glob 在 IO-Compress 中執行程式碼
Perl 的 IO::Compress 2.220 之前版本可透過由攻擊者控制的輸出 glob,在 File::GlobMapper 中執行任意程式碼。
_parseOutputGlob() 會將呼叫者提供的輸出 glob 字串包在雙引號中,並將其儲存在剖析器狀態中;接著,_getFiles() 會透過 eval STRING 執行儲存的運算式。輸出 glob 中的雙引號字面值可以結束外層的雙引號包裝函式,而其後的字元則會被當作 Perl 程式碼進行評估。輸出 glob 中的任意 Perl 程式碼都會以呼叫程序所具備的特權執行。
CVE-2026-57432
pack() 和 unpack() 中的超出邊界堆積讀取
Perl 5.40.5-RC1 之前、5.41.0 至 5.42.3-RC1 之前,以及 5.43.0 至 5.43.11 之前的版本,在 S_measure_struct 中存在整數溢位問題,導致 pack 和 unpack 發生超出邊界堆積讀取。
S_measure_struct 會將每個項目的大小乘以其重複次數,並在未進行溢位檢查的情況下累加至總計值。當 pack 或 unpack 模板包含很大的重複次數時,有號 SSize_t 類型的總計值會溢位並變為負數。接著,@、X 和 x 位置代碼會使用有號長度比較來檢查位移操作;當長度為負數時,該檢查反而會通過,使緩衝區指標超出邊界移動。如果模板源自不受信任的輸入,攻擊者便可讀取緩衝區之外的堆記憶體,並將讀取到的內容返回給呼叫者。
CVE-2026-57433
Storable 中帶正負號的整數溢位弱點
Perl 的 Storable 3.41 之前版本,在還原序列化經過特製的 SX_HOOK 記錄時,會發生帶正負號的整數溢位。retrieve_hook_common 會從 SX_HOOK 記錄中讀取有號 32 位元項目計數,並以該計數加一後的結果呼叫 av_extend。當計數為 I32_MAX 時,加一操作會溢位並變成負值。將特製的資料 blob 傳入 thaw 或 retrieve 會觸發此溢位;此時 av_extend 會收到負的計數值,並因錯誤而終止還原序列化程序。
針對 Debian 12 bookworm,已在 5.36.0-7+deb12u4 版本中修正這些問題。
建議您升級 perl 套件。
如需有關 perl 安全性狀態的詳細資訊,請參閱其安全追蹤頁面:
https://security-tracker.debian.org/tracker/perl
有關 Debian LTS 安全公告、如何將這些更新套用至您的系統以及常見問題的詳細資訊,請參閱:https://wiki.debian.org/LTS
Tenable 已直接從 Debian 安全公告擷取前置描述區塊。
請注意,Nessus 並未測試這些問題,而是僅依據應用程式自我報告的版本號碼作出判斷。
Plugin 詳細資訊
檔案名稱: debian_DLA-4821.nasl
代理程式: unix
支援的感應器: Frictionless Assessment Agent, Nessus Agent, Agentless Assessment, Continuous Assessment, Tenable Cloud Security, Tenable Self-Hosted Container Security, Nessus
風險資訊
媒介: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C
媒介: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
時間媒介: CVSS:3.0/E:P/RL:O/RC:C
弱點資訊
CPE: cpe:/o:debian:debian_linux:12.0, p-cpe:/a:debian:debian_linux:libperl-dev, p-cpe:/a:debian:debian_linux:libperl5.36, p-cpe:/a:debian:debian_linux:perl-base, p-cpe:/a:debian:debian_linux:perl-debug, p-cpe:/a:debian:debian_linux:perl-doc, p-cpe:/a:debian:debian_linux:perl-modules-5.36, p-cpe:/a:debian:debian_linux:perl
必要的 KB 項目: Host/local_checks_enabled, Host/Debian/release, Host/Debian/dpkg-l
可輕鬆利用: Exploits are available
參考資訊
CVE: CVE-2025-15649, CVE-2026-12087, CVE-2026-13221, CVE-2026-19487, CVE-2026-42496, CVE-2026-42497, CVE-2026-48959, CVE-2026-48962, CVE-2026-57432, CVE-2026-57433, CVE-2026-7010, CVE-2026-7017, CVE-2026-8376
IAVA: 2026-A-0618, 2026-A-0696-S, 2026-A-0889