PyPIは、公開から14日以上経過したパッケージリリースに対して追加ファイルのアップロードを拒否する、新たなサプライチェーンセキュリティ対策を導入しました。攻撃者がプロジェクトの認証情報や自動化ワークフロー、公開用トークンを侵害した後に、これまで信頼されてきたバージョンを改ざんするリスクを軽減することが狙いです。
クラウドセキュリティソリューション
Python Package Index (PyPI) は、公開から14日以上経過したリリースへの新規配布ファイルのアップロードを拒否するようになりました。これは、確立されたPythonプロジェクトを狙ったパッケージ改ざん攻撃を防ぐことを目的とした、セキュリティ重視の変更です。
2026年7月8日にWarehouseのコードベースにマージされたこの制限は、メンテナーが既に公開済みのバージョンに対してwheelやソース配布物を無期限に追加できてしまう「オープンエンド」なリリースが生み出す、長年の懸念に対処するものです。
PyPI、新規ファイルアップロードをブロック
従来のモデルでは、プロジェクトのPyPIトークンやリリースパイプラインへのアクセス権を得た攻撃者が、広く信頼されている古いバージョン番号のもとで悪意あるパッケージ成果物をアップロードできてしまう可能性がありました。
これにより、そのリリースについて過去には提供されていなかったプラットフォーム固有のwheelをダウンロードする環境を持つユーザーが標的になる恐れがあります。PyPIは、この手口が実際に悪用された事例は把握していないとしながらも、攻撃者がこの機会に気づいていなかっただけで、悪用を防ぐ技術的な障壁はこれまで存在していなかったと指摘しています。
今回のルールは、14日間のウィンドウを過ぎた過去のリリースを事実上変更不可能にすることで、侵害が及ぼす被害を制限します。また、あるバージョンの成果物の一つが悪意あるものであるという、対応の難しいインシデント対応シナリオを回避する助けにもなります。
一方で、同じリリースに紐づく他のファイルは正当なままです。こうした混在状態は、脆弱性に関する周知やパッケージの削除、クリーンアップ作業を、メンテナーや管理者、そして下流のユーザーにとってより複雑にしかねません。
この提案は、Pythonパッケージ公開向けにデジタル証明を導入したPEP 740の検討作業の中で、2024年1月に初めて議論されました。
議論は、LiteLLMおよびTelnyxのパッケージに影響を及ぼした侵害事案を受けて、2026年3月に再開されました。これらのインシデントは、両プロジェクトのTrivy GitHub Action実装で使われていた可変参照に起因するもので、サードパーティ製のCI/CD依存関係が、信頼されているソフトウェアのリリースワークフローをサプライチェーン侵害にさらしかねないことを示しています。
一つの懸念点は、パッケージのメンテナーが公開後に、既存のリリースへ新しいPythonバージョン対応のwheelを追加することが時折あるという点でした。PyPIは、想定される影響を測るため、過去の公開挙動を調査しました。
人気の高い15,000のプロジェクトを対象に、CPython 3.14対応wheelについて分析したところ、リリースが初めて公開されてから14日以上経ってから互換wheelをアップロードしたプロジェクトは、わずか56件にとどまりました。
PyCon US 2026のPackaging Summitでは、新しく登場したPythonランタイムへの対応を追加するためにメンテナーが新バージョンを公開することを必須とするのは、エコシステム全体のセキュリティ強化と引き換えとして許容できるトレードオフであるという点で、参加者の間で概ね意見が一致しました。
今回の変更により、各プロジェクトは古いパッケージバージョンにファイルを後から追加できることに頼るのではなく、バージョンのリリースをより計画的に行う必要があります。
PyPIは、ユーザーに対してこの挙動をまだ正式な保証として当てにすべきではないと注意を促しています。同サービスは、ファイルを受け付けなくなったリリースに関する標準化された仕様をまだ定義しておらず、あるリリースがクローズされているかどうかを確認するAPIも現時点では提供していません。
これらの機能は、PEP 694で提案されているUpload 2.0 APIおよび段階的なプレビュー機構を通じて、今後正式に整備される見込みです。
警告:20を超える政府系サイトが企業や市民にマルウェアを配信していました。 攻撃調査の全容を見る で、ご自身の環境が影響を受けていないか確認してください。
アンチウイルス&マルウェア
翻訳元: https://gbhackers.com/pypi-blocks-new-file-uploads-to-old-releases/