被忽視15年的CVE-2007-4559 Python漏洞導致35萬項目陷入代碼執行風險
Python 編程語言中一個被忽視了15 年的漏洞,正在重新引發人們的關注,因為它可能對超過35 萬個開源存儲庫項目造成影響。其實早在2007 年,就已經有安全研究人員披露並標記過CVE-2007-4559 。遺憾的是,它一直沒有獲得正式的修復補丁。唯一的緩解措施,也只是在更新後的開發者文檔中提示了相關風險。但是現在,該漏洞又被發現可用於代碼執行。
Bleeping Computer指出,該漏洞位於Python tarfile 包中。在使用未經處理的tarfile.extract() 函數、或tarfile.extractall() 內置默認值的代碼中,這個路徑遍歷漏洞就有可能被利用於覆蓋任意文件。
雖然自2007 年8 月首次報告以來,我們一直沒有聽說與CVE-2007-4559有關的漏洞利用報告,但它確實向外界提示了軟件供應鏈中長期被忽視的風險。
Spyder IDE Demo Video – Trellix(via)
今年早些時候,Trellix 的一位安全研究人員在調查另一個安全問題時、再次揪出了CVE-2007-4559 。
作為一家提供擴展檢測和響應(XDR)解決方案的新企業,它由McAfee Enterprise 和FireEye合併而來。
來自Trellix 高級威脅研究團隊的Charles McFarland 指出:
在調用tarfile.extract() 和tarfile.extractall() 之前,若開發者未能編寫任何安全的代碼來清理成員文件,就會導致該目錄遍歷漏洞被不良行為者利用於訪問文件系統。
該缺陷源於Python 的tarfile 模塊/ extract 函數中的代碼,其明確信任TarInfo 對像中的信息,並加入了傳遞給extract 函數的路徑和TarInfo 對像中的名稱。
Polemarch Demo Video – Trellix(via)
披露後不到一周,Python 錯誤追踪器上的一條消息,就稱該問題已經被關閉。更新文檔指出,官方正在修復該問題,並提醒大家始終不要通過不受信任的來源來提取檔案、否則會陷入相當大的風險。
通過分析,Trellix 研究人員發現該漏洞波及成千上萬個開源和閉源軟件項目。在隨手拉來的一批257 個有較高可能性包含易受攻擊代碼的存儲庫中,他們手動檢查了其中175 個,結果表明風險率高達61% 。
在對其餘存儲庫開展自動檢查後,可知這一機率增加到了65%,表明問題的存在相當廣泛—— 而且這還只是針對GitHub 這一個代碼託管平台的評估結論。
Charles McFarland 補充道:“在GitHub 幫助下,我們獲得了一個更大的數據集—— 其中有58 萬8840 個獨特的存儲庫在其Python 代碼中包含了import tarfile”。
手動驗證的漏洞率高達61%,Trellix 預估有超過35 萬個存儲庫易受該漏洞攻擊的影響,且其中不乏幫助開發者更快完成項目的多款機器學習工具—— 比如GitHub Copilot 。
這款AI 編程輔助工具依賴於來自數十萬個存儲庫的代碼,來提供便捷的“自動完成”編程體驗。但若參考代碼本身就不夠安全,問題就會在不知不覺中傳播到更多無辜的新項目中。
通過深入研究,Trellix 發現易受CVE-2007-4559 漏洞攻擊的開源代碼,橫跨了眾多的行業。
如預期那樣,開發部門(Development)首當其衝,其次是人工智能(AI)/ 機器學習(ML),以及Web、安全、管理員工具等項目。