網頁快取與代理伺服器軟體 Squid被找出存在29年的漏洞，HTTP存取的密碼與金鑰可能全都被看光光！

來源：https://www.ithome.com.tw/news/176744

不久前因揭露攻擊手法HTTP/2 Bomb而聲名大噪的資安研究公司Calif，本週公開代號為Squidbleed的資安漏洞CVE-2026-47729，顧名思義，這個漏洞存在於知名的開源網頁代理伺服器（Proxy）與網路快取軟體Squid，而且是類似Heartbleed類似的記憶體洩漏漏洞，原因主要是過去到近期版本Squid的預設配置皆可能導致內部記憶體的內容洩漏，影響範圍相當廣泛。例如，網站伺服器的HTTP存取，以及透過官方套件庫提供 Squid套件的多個Linux發行版，都可能受到影響。

值得注意的是，Squidbleed同樣是透過先進AI模型所發現的漏洞，該公司表示，他們運用Anthropic Claude Mythos探索Squid的內部結構，因此發現這個已存在29年之久的漏洞，而且，也在MADBugs（Month of AI-Discovered Bugs）的GitHub帳號公布利用此漏洞的概念驗證程式碼。Calif表示，這項報告與修正方式在今年4月17日提出，兩天後修正方式納入Squid master/v8分支，5月17日修正方式納入Squid master/v7分支，6月8日發布的Squid v7.6已包含此項修正，目前多個Linux發行版均已公告此項漏洞與列出受影響的版本，像是SUSE、Amazon Linux、Debian。至於CVSS嚴重度評分，出現多家廠商意見不同的現象，例如Rapid7評為 10分，SUSE評為6.5分，Tenable評為9.1分。

簡而言之，Squidbleed的問題涉及FTP與NetWare——Squid預設也支援FTP協定，Claude Mythos在Squid找到FTP目錄列表（directory listing）解析器的漏洞；NetWare是80年代晚期與90年代相當普及的網路作業系統，可供企業用於檔案與列印伺服器，上面也附帶提供FTP服務，用於電腦的檔案傳輸，NetWare FTP伺服器產生目錄列表時，會在檔案修改時戳與名稱之間額外輸出4個空格，但一般FTP伺服器目錄列表的這兩個欄位之間，只間隔1個空格。

當這樣的狀況遇上後續FTP目錄列表擷取檔案名稱的程式碼實作，一旦處理到在字串中尋找字元的函式strchr(w_space, '\0')，在 C 語言中會回傳非 NULL，導致程式把字串結尾誤當成可繼續跳過的空白字元，進而讓字元指標變數copyFrom越界掃描後續記憶體，導致堆緩衝區越界讀取（out-of-bounds read），因此可能隨機洩露用戶的HTTP請求，而這些HTTP請求可能包含密碼或 API金鑰。

Calif建議，在if條件式與while迴圈條件式的前半段加上*copyFrom &&，先計算前面的條件式，如果結果為假（false），後面的條件式就不會被計算。因此，程式會先檢查 *copyFrom 是否為非零值。若 *copyFrom 已是字串結尾字元 '\0'，條件判斷立即結束，不會再呼叫 strchr()。

'