PyPI、新たなアップロード制限でパッケージセキュリティを強化

Python Package Index(PyPI)は現在、14日以上前にリリースされた版に対する新規ファイルのアップロードを拒否するようになりました。プロジェクトの公開用トークンやリリースワークフローが侵害された場合に、攻撃者が長期間安定稼働してきたリリースを汚染するのを防ぐための措置です。

Image

「この変更はPythonユーザーを保護するとともに、プロジェクトが侵害された際にPyPI管理者が行う『クリーンアップ』作業の量を減らします。また、この制限によって、侵害が発生した際にリリースが『侵害された』状態と『侵害されていない』状態の両方が混在する不明瞭な状態に陥ることもなくなります。これまでは一部のファイルだけがマルウェアに汚染される可能性がありました」と、Python Software FoundationのSecurity Developer-in-Residenceを務めるSeth Larson氏は説明しています

PyPIは、新規ファイルの受け付けを停止したリリースに関する仕様をまだ定めておらず、リリースの状態を確認するためのAPIも提供していません。そのため、ユーザーはどちらにも依存すべきではありません。プロジェクト側は、Pythonパッケージインデックスへのファイルアップロード用の拡張可能なAPIを提案するPEP 694に基づき、Upload 2.0 APIとStaged Previewsを標準化した後に、これらの仕様を定める予定です。

コミュニティが変更を支持

この提案は、2024年1月にPEP 740(Digital Attestations)を巡る議論の中で生まれたもので、2026年3月にLiteLLMおよびTelnyxのパッケージが、両プロジェクトによるTrivy GitHub Actionの利用に含まれるミュータブルな参照が原因で侵害された事件を受けて、再び議論が動き出しました。

当初この提案は、一部のプロジェクトが新しいPythonバージョンへの対応を追加するために、古いリリースに新規ファイルをアップロードしていたことから見送られていました。PyPIがこの慣行を分析した結果、実際には稀であることが判明しました。上位15,000パッケージのうち、オリジナルのリリースから14日以上経過後にPython 3.14対応のwheelをアップロードしたのはわずか56件にとどまり、この制限の影響を受けるプロジェクトはごく少数にとどまる見込みです。

PyPIのSafety & Security EngineerであるMike Fiedler氏がこの変更を提案し、2026年のPackaging Summitでの議論を経て支持を集めました。参加者の間では、新しいPythonリリースへの対応を追加する際には、既存のリリースを更新するのではなく、新しいパッケージバージョンを公開すべきだという大まかな合意が形成されました。その後Larson氏がこの変更を実装し、パッチは2026年7月8日にマージされました。

翻訳元: https://www.helpnetsecurity.com/2026/07/23/pypi-secures-package-releases/

ソース: helpnetsecurity.com