Python套件索引服務PyPI開始拒絕向發布超過14天的套件版本新增檔案,避免專案發布憑證或自動化流程遭入侵後,攻擊者向長期穩定的舊版本加入惡意程式。PyPI表示,目前尚未發現這種攻擊方式遭實際利用,但在此之前並無技術限制阻止這種做法。
一個Python套件版本通常包含多個檔案,除了原始程式碼,也可能提供適用於不同作業系統、處理器架構或Python版本的預先建置套件。過去維護者發布版本後,仍可陸續補上新檔案,例如增加對新版Python或其他平臺的支援。
不過,攻擊者若取得專案的發布憑證,不必建立新版本,就能在使用者已信任的舊版本中加入惡意檔案。由於不同作業系統會下載不同檔案,同一套件版本可能只有部分使用者受到影響,使版本同時處於正常與遭污染的狀態,增加使用者判斷及PyPI事後清理的難度。
新規則上線後,套件版本發布超過14天便不再接受新檔案。維護者若要增加對新平臺或新版Python的支援,必須改以新版本發布。PyPI引用一項針對下載量前1.5萬名套件的分析,檢查專案加入Python 3.14相容預先建置套件檔案的時間,結果只有56個專案是在既有版本發布超過14天後才補上檔案,顯示為支援Python 3.14而在14天後補上檔案的情況只占少數。
PyPI提醒,目前尚未明確定義套件版本何時算是停止接收檔案,也沒有正式API可供查詢,因此使用者現階段不應只依賴14天限制判斷版本狀態。相關狀態與查詢方式,預計待PEP 694規範的Upload 2.0 API與Staged Previews完成標準化後再明確定義。
GitHub近期也調整Dependabot的套件更新方式,一般版本更新預設會等到套件新版本發布滿3天,才提出更新請求,讓維護者或社群有時間發現問題。安全性更新不受等待期影響,仍會立即提出更新請求。
Comments (0)