觀點 · 資訊分享
Perl 爆出 CVSS 9.8 的正規表達式漏洞:只有 32 位元版受影響,但要記得檢查
CVE-2026-8376 是 Perl 編譯正規表達式時的堆積緩衝區溢位,NVD 給 9.8 分。關鍵條件是 32 位元的 perl,而且程式會編譯外部輸入的正規表達式。
- 發布
- 2026-05-26
- 篇幅
- 約 3 分鐘 · 1,287 字
- 結構
- 7 節 + 3 題常見問題
- 標籤

一句話看懂:Perl 在編譯含有「大量重複字串」的正規表達式時算錯記憶體大小,導致 32 位元版本寫出界,NVD 評為 9.8 分。

先用白話講:緩衝區溢位是什麼?
想像你要在一個小盒子裡放 100 顆彈珠,卻只準備了一個放得下 10 顆的盒子。多出來的彈珠會掉到桌上,壓到旁邊別人的東西。
緩衝區溢位就是這件事:程式先向記憶體要一塊空間,結果資料比空間大,多的部分就寫到別人的地盤。壞人可以利用這一點讓程式當機,甚至執行自己的指令。
發生什麼事
- CVE 編號:CVE-2026-8376,2026 年 5 月 26 日公開
- 問題出處:Perl 的
Perl_study_chunk(原始碼regcomp_study.c) - 成因:有一種正規式寫法是「某個固定字串重複很多次」。Perl 在算「合併後要多少位元組」時,用的是字元數而不是位元組數;次數很大時乘法結果會溢位,配置的空間就變得太小,接下來複製資料就寫過頭
- 觸發條件:程式在 32 位元的 Perl 上,編譯了攻擊者能控制的正規表達式
誰會受影響?
| 條件 | 風險 |
|---|---|
| 64 位元 Perl | 公告只描述 32 位元建置會觸發 |
| 32 位元 Perl,正規式都是寫死的 | 攻擊者碰不到,風險低 |
| 32 位元 Perl,吃外部輸入的正規式 | 需要優先處理 |
受影響版本:5.40.5-RC1 以前、5.41.0 至 5.42.3-RC1 以前、5.43.0 至 5.43.11 以前。
給開發者的技術細節
- NVD 的主要評分是 CVSS 3.1 的 9.8(向量:網路、低複雜度、免登入、免互動、機密與完整與可用性皆高);另一個來源給的是 7.3
- 官方沒有說明是否已有實際攻擊,請不要把「可能被利用」寫成「已被利用」
- 修補提交在 Perl 的 GitHub 專案內,NVD 頁面的參考連結可以找到
- 臨時作法:不要把使用者輸入直接當正規表達式編譯;真的需要時,限制長度與重複次數,或改用
\Q...\E把輸入當純文字
我的看法
接案時常遇到客戶的舊系統裡還有 Perl 腳本,像是老舊的表單處理、記錄檔分析。這類東西最麻煩的是沒人記得它跑在哪台機器、是幾位元。
這個漏洞的條件很具體,所以反而是好事:先查 32 位元,再查有沒有吃外部正規式,兩關都過才需要緊張。自架服務的人也一樣,最好趁這次把「我到底跑了哪些 Perl 工具」列一張清單,比單純看分數有用得多。
名詞小辭典
- CVE:全球通用的漏洞編號,方便各家用同一個名字討論同一個漏洞。
- CVSS:漏洞嚴重度評分,0 到 10 分,9 分以上稱為 Critical。
- 正規表達式:用特殊符號描述文字規則的寫法,常用來搜尋與驗證文字。
- 堆積(Heap):程式執行時動態向系統要來的記憶體區域。
資料來源
常見問題
我的 Perl 受影響嗎?
要同時符合兩件事:Perl 是 32 位元建置,而且你的程式會編譯來自使用者或外部的正規表達式。可以用 perl -V 查看建置資訊中的指標大小。
為什麼是 9.8 分卻只影響 32 位元?
CVSS 分數是從「最糟情況」估算:網路可達、不用登入、影響機密、完整與可用性。實際上要不要中,還要看你的環境條件,所以官方的分數看到「32 位元」這個前提就不能直接當作你一定會中。
要怎麼修?
升到包含修補的版本,也就是 5.40.5-RC1、5.42.3-RC1、5.43.11 之後的版本;發行版的套件請看各家的更新公告。
接著讀
全部觀點 →NGINX njs 爆 CVE-2026-8711:js_fetch_proxy 用了客戶端變數,沒登入的人也能打到 workerF5 公開 NGINX JavaScript(njs)的 CVE-2026-8711:只要 js_fetch_proxy 用了客戶端可控的變數,又有 location 呼叫 ngx.fetch(),沒登入的攻擊者就能送特製請求,讓 worker 緩衝區溢位重啟,某些情況下甚至能執行程式碼。閱讀 →Cloudflare 為 Brotli 漏洞緊急上架 WAF 規則:預設只記錄不攔截,上線前先檢查你的覆寫設定Brotli 壓縮函式庫爆出 CVE-2026-111497 後,Cloudflare 在 10 月 25 日為 Managed Ruleset 緊急加了兩條規則,預設只記錄、不攔截。如果你曾把整組規則改成封鎖,新規則上線就會直接擋下符合的請求。閱讀 →Ollama 加入 d3 決策模型:本機就能做分類、是非題與評分,最小 2B 版約 3.6GB 記憶體Ollama 0.40.11 在 10 月 24 日帶進 vLLM Semantic Router 的 d3 決策模型。它不聊天,只回答「分到哪一類、是或不是、幾分」,有 2B 到 27B 四種大小,Apache 2.0 授權,可以在自己的電腦上跑。閱讀 →