Tinyproxy 曝出嚴重漏洞,影響全球52000 臺主機
近日,攻擊面管理公司 Censys 分享了一組數據:截至 2024 年 5 月 3 日,在90310臺主機中,有 52000 臺(約占 57%)運行著有漏洞的 Tinyproxy 版本。
這些可能受到漏洞影響的主機分布于美國(32846 臺)、韓國(18358 臺)、中國(7808 臺)、法國(5208 臺)和德國(3680 臺)。
該漏洞是HTTP/HTTPS代理工具中一個未修補的重要安全漏洞,被追蹤為 CVE-2023-49606,CVSS 得分為 9.8,Cisco Talos 將其描述為一個影響 1.10.0 和 1.11.1 版本(即最新版本)的免用漏洞。
Talos在上周的一份報告中提到:攻擊者可通過精心構造的HTTP頭觸發先前釋放內存的重復使用,導致內存破壞且可能導致遠程代碼執行。攻擊者需要發送未經身份驗證的HTTP請求以觸發此漏洞。
換句話說,未經身份驗證的威脅行為者可以發送特制的 HTTP 連接頭,從而引發內存破壞,導致遠程代碼執行。
Tinyproxy 是一個輕量級的開源 HTTP 代理守護程序,專注于簡單性和效率。根據 HTTP 規范,客戶端提供的標頭表示代理在最終 HTTP 請求中必須刪除的 HTTP 標頭列表。代理從請求中刪除這些 HTTP 標頭,向遠程服務器執行請求,并將響應發送回客戶端。Tinyproxy 在函數中正是這樣做的:
首先,我們應該注意到客戶端發送的 HTTP 標頭駐留在鍵值存儲中。該代碼搜索 和 標頭,并在 (1) 處獲取它們的值,如前所述,這是一系列要刪除的 HTTP 標頭??蛻舳肆谐龅拿總€ HTTP 標頭在 (3) 處被刪除。從本質上講,和 標頭值中的每個 HTTP 標頭都用作從 中刪除的鍵。最后,在 (4) 處,HTTP 標頭本身被刪除。
在函數中,我們看到:
對于具體提供的,其哈希值計算為 (5)。使用哈希值,在 (6) 處檢索并釋放鍵值的指針。最后,鍵本身從(7)的哈希圖中刪除。
現在考慮一下當客戶端發送 HTTP 標頭時會發生什么。出于演示目的,我們將它們區分為。在 (1) 處檢索標頭的值,這當然是 。在 (3) 處,該值用作 處的變量。在(5)處計算字符串的哈希值,與完全相同。請注意,哈希值也不區分大小寫。在 (6) 處,哈希用于檢索和釋放 HTTP 標頭值的指針,即 。因此,此時代碼已釋放了 的內存。在 (7) 處,現在包含過時指針的變量被重用,從而導致釋放后使用方案。
很明顯,此漏洞可用于執行內存損壞并獲得代碼執行權限。
去年 12 月 22 日,塔洛斯公司報告了這一漏洞,并發布了該漏洞的概念驗證(PoC),描述了如何利用解析 HTTP 連接的問題來觸發崩潰,并在某些情況下執行代碼。
Tinyproxy 的維護者在上周末提交的一組文件中,指責 Talos 將報告發送到了一個已經不再使用的電子郵件地址,并補充說他們是在 2024 年 5 月 5 日被 Debian Tinyproxy 軟件包維護者發現的。
rofl0r 提到:沒有人在 GitHub 上提交問題,也沒有人在提及的 IRC 聊天中提到漏洞。如果在 Github 或 IRC 上報告了該問題,該漏洞會在一天內得到修復。該公司建議用戶在最新版本發布后及時更新。