標準 Python 發行版中包含的 tarfile 模組(提供讀寫 tar 壓縮包的函數)中發現了五個漏洞,其中一個漏洞的嚴重程度被指定為「嚴重」。這些漏洞已在 Python 3.13.4 和 3.12.11 中修復。最危險的漏洞 (CVE-2025-4517) 允許在解壓縮特製壓縮包時將檔案寫入檔案系統的任何部分。在使用 tarfile 並以 root 權限執行的系統腳本中(例如,在用於處理套件和隔離容器的公用程式中),該漏洞可用於提升權限或逃離隔離容器。
此漏洞影響使用 tarfile 模組來提取不受信任 tar 檔案的項目,這些項目使用 TarFile.extractall() 或 TarFile.extract() 函數提取不受信任的 tar 檔案,並將「filter=」參數設為「data」或「tar」。此漏洞是由於連結名稱中“..”序列處理不當造成的。該問題影響自 3.12 以來的 Python 版本。 「filter=」data「」模式是 Python 3.14 開發分支(計畫於今年秋季發布)的預設模式。
TarFile 中的其他漏洞:
- CVE-2025-4330 - 可能繞過提取資料的過濾器,這可能導致從檔案中提取符號鏈接,指向執行解包的基本目錄之外。
- CVE-2025-4138 - 使用「filter="data"」參數解壓縮檔案時,能夠在基底目錄之外建立任意符號連結。
- CVE-2024-12718 - 使用「filter="data"」參數解壓縮檔案時,可以修改基底目錄外檔案的元資料(例如修改時間),或使用「filter="tar"」參數解壓縮檔案時,可以修改存取權限(chmod)。
- CVE-2025-4435 - 如果在解壓縮檔案時將 TarFile.errorlevel 參數設為 0,則與文件相反,與指定篩選器相符的檔案元素將被解壓縮而不是被忽略。
來源: opennet.ru
