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