DependabotとPyPI、サプライチェーンに「クールダウン」期間を導入

GitHubとPython Package Index(PyPI)は、依存関係の更新に戦略的な遅延を導入しました。これは、開発者が公開直後の悪意あるパッケージを誤って導入してしまう事態を防ぐための措置です。Dependabotはデフォルトで3日間の保留期間を強制するようになり、PyPIは公開から14日を経過したリリースへの新規ファイル追加を禁止しました。

ソフトウェアサプライチェーン侵害への対策

今回の防御的な制限は、注目度の高いソフトウェアサプライチェーン侵害事件が相次いだことを受けて導入されました。この1年間、脅威アクターはchalkdebugといったアクセス数の多いパッケージを標的にしたほか、悪意あるs1ngularity作戦を仕組んだり、Shai-Huludキャンペーンを展開したり、GhostAction攻撃を実行したりしてきました。いずれのケースでも、攻撃者は信頼されているオープンソースツールやライブラリを通じて開発パイプラインへの侵入を試みていました。

Dependabotは通常、GitHubリポジトリ内の依存関係を監視し、新しいパッケージのリリースをスキャンして、開発者にソフトウェアコンポーネントの更新を促します。従来、この自動化された仕組みは新しいリリースをほぼ即座に取り込んでおり、悪意ある行為者がアップロードしてからわずか数分しか経っていないパッケージが配信されてしまうこともありました。

新たな仕組みでは、Dependabotはデフォルトで72時間の待機期間を設けるようになりました。GitHubが「Dependabotがバージョン更新の発行前に待機するようになった理由」を説明した技術的な根拠によると、この時間的な猶予により、セキュリティソリューションやプロジェクトのメンテナー、リポジトリの所有者が、悪意あるリリースが広く拡散する前にそれを検知し排除するための十分な時間を確保できるとしています。

時間的猶予の背景にある理由

セキュリティプラットフォームは、侵害されたnpmパッケージを公開から数分以内に特定できることが少なくありません。しかし、迅速な検知だけでは安全性を保証できません。リポジトリのメンテナーは正式にパッケージを隔離し、開発者は侵害されたバージョンを取り下げ、セキュリティベンダーは脅威インテリジェンスのフィードを更新する必要があります。これらの是正措置が完了するまでの間に、悪意あるコードが下流のプロジェクトに侵入してしまう可能性があるのです。

GitHubは、堅牢なセキュリティと迅速なソフトウェア反復開発との最適な均衡点として、この3日間のクールダウン期間を設定しました。プロジェクトの所有者は、Dependabotの設定内でこの保留期間を調整または無効化する完全な裁量権を保持しています。ただし、GitHubは、時間的な遅延は事前に計画された攻撃や、公開からかなり時間が経過してから侵害されたパッケージへの対策にはならないと明確に注意を促しています。そのため、メンテナーは依存関係の正確なハッシュ値を固定し、アクセストークンの権限を制限し、継続的インテグレーション(CI)パイプライン内で不要なビルドスクリプトを無効化することが望まれます。

PyPI、旧リリースへのファイル追加を制限

これと並行して、Python Package Indexも補完的な構造上の制約を新たに設けました。PyPIのポリシー発表で「リリースは14日経過後、新規ファイルを拒否するようになった」ことが確認された通り、同インデックスは公開から14日を経過したパッケージリリースへのファイル追加を禁止します。この制限により、攻撃者が認証情報の窃取やパイプラインの侵害を経た後、確立され信頼されている既存のリリースをひそかに改変することを防止できます。

PyPIの内部監査により、正規の開発者が公開から2週間後にリリースへファイルを追加することはほとんどないことが明らかになりました。そのため、このポリシーはメンテナーに与える運用上の負担をほとんど生じさせない一方で、危険な感染経路を効果的に封じ込めることができます。PyPI上での旧リリース改ざんを悪用した攻撃は確認されていないものの、レジストリ側は将来起こり得る攻撃ベクトルを無力化するため、先手を打ってこの制約を導入しました。

翻訳元: https://meterpreter.org/dependabot-pypi-supply-chain-cooldown/

ソース: meterpreter.org