PyInstaller工具漏洞預警,可致攻擊者執行任意 Python 代碼
漏洞概況
PyInstaller項目近日發布補丁,修復了一個影響6.0.0之前版本打包應用程序的本地權限提升漏洞(CVE-2025-59042,CVSS評分7.0)。該漏洞可能導致攻擊者在PyInstaller凍結應用的引導過程中執行任意代碼。
技術原理
PyInstaller通過打包解釋器和依賴項將Python應用程序轉換為獨立可執行文件。安全公告指出:"由于PyInstaller凍結應用在引導過程中會將特殊條目附加到sys.path,且引導腳本在sys.path仍包含該條目時嘗試加載用于字節碼解密的可選模塊,導致使用PyInstaller 6.0.0之前版本構建的應用可能被低權限攻擊者誘騙執行任意Python代碼。"
該漏洞的成因在于:當滿足特定條件時,引導腳本可能錯誤導入攻擊者放置的惡意模塊。具體攻擊方式需要攻擊者能夠在可執行文件旁創建精心構造的目錄或zip壓縮包,這些文件需模仿PyInstaller引導加載器用于傳輸PYZ存檔位置的格式。
攻擊條件
成功利用該漏洞需要同時滿足以下五個前提條件:
- 使用PyInstaller 6.0.0之前版本構建的應用程序(影響onedir和onefile兩種模式)
- 未啟用可選的字節碼加密功能
- 攻擊者能在可執行文件所在目錄創建文件/目錄
- 文件系統允許在文件/目錄名中使用"?"字符(非Windows系統)
- 攻擊者能夠確定嵌入式PYZ存檔的偏移量
修復方案
PyInstaller團隊分兩個階段解決了該問題:
- 6.0.0版本:移除對字節碼加密的支持,由于引導腳本不再嘗試加載字節碼解密模塊,從根本上消除了該攻擊向量
- 6.10.0版本:通過消除使用sys.path傳輸PYZ存檔位置的做法,進一步強化了引導過程
臨時緩解措施
對于無法立即升級的環境,建議采取以下防護措施:
- 對包含特權可執行文件(如setuid二進制文件)的目錄設置嚴格的權限控制
- 確保攻擊者無法在敏感可執行文件旁創建任意文件