Python 隱藏漏洞通過超 14.5 萬個軟件包傳播
新澤西理工學院的一項研究揭露了Python軟件包生態系統中潛藏的大規模安全隱患。這項名為"PyPitfall"的研究報告揭示,復雜且深度嵌套的軟件包依賴關系正在數千個項目中無聲傳播已知安全漏洞。
"一個軟件包中的漏洞可能通過其依賴關系傳播,最終影響下游軟件包和應用程序,"研究人員警告稱。

漏洞傳播規模驚人
Python作為最流行編程語言的地位,很大程度上得益于PyPI(Python Package Index)托管的海量開源庫生態系統。目前PyPI擁有超過62.7萬個軟件包和600多萬個版本,開發者往往在引入功能時并未意識到隨之而來的安全隱患。
PyPitfall研究分析了378,573個軟件包的依賴關系,發現:
- 4,655個軟件包明確要求安裝已知存在漏洞的版本(必然暴露)
- 141,044個軟件包允許安裝可能包含漏洞的版本(潛在暴露)
- 研究團隊在定義"必然暴露"時指出:"成功安裝這些軟件包將不可避免地導致漏洞版本被安裝。"
依賴關系迷宮加劇風險
研究凸顯了PyPI生態系統的極端復雜性,包括存在超過20層傳遞依賴的軟件包,以及100多萬個循環依賴。典型案例是square-0-5軟件包,經過75次遞歸跳轉后竟然依賴于自身,導致pip install命令陷入無限循環。
"依賴鏈可能極其漫長復雜,單個軟件包可能依賴數百個其他組件,形成深不可測的軟件供應鏈迷宮。"
這種深度嵌套的關系往往掩蓋了漏洞組件的存在,使其在廣泛傳播的同時保持隱蔽。
檢測方法與關鍵發現
研究團隊使用Johnnydep工具對PyPI軟件包進行模擬安裝,在不實際安裝的情況下收集依賴樹數據。隨后將其與67個精選CVE漏洞數據庫進行交叉比對,僅關注影響PyPI托管庫的漏洞。
這種方法幫助他們在urllib3等廣泛使用的軟件包中發現嚴重漏洞——僅該組件就占所有"必然暴露"案例的41.4%。作為Python HTTP棧的核心組件和requests庫的依賴項,urllib3的漏洞影響尤為突出:
- 出現在407,333條依賴鏈中
- 引入包括CVE-2024-37891和CVE-2023-43804在內的漏洞
- 導致1,926個軟件包存在必然暴露風險
- 核心數據與改進建議
- 關鍵數據:
- 漏洞暴露平均深度:必然暴露4.1層,潛在暴露6.2層
- Setuptools是被依賴最多的軟件包,出現在超700萬條依賴鏈中
- 檢測到1,075,559個循環依賴關系
- 許多軟件包未遵循PEP 440版本規范,導致解析問題
改進建議:
- 開發能在安裝前審計依賴關系的工具
- 提升開發過程中對傳遞性漏洞的認知
- 后續研究應采用更全面的CVE數據集掃描PyPI
研究團隊已向Python打包管理局披露發現,強調解決Python開源生態系統這一系統性風險的緊迫性。報告總結稱:"我們的發現凸顯了提升Python軟件供應鏈安全意識的必要性。"




























