Pythonの公式パッケージリポジトリ「PyPI」に悪質なパッケージが紛れ込んでいます。2024年には複数の大規模なサプライチェーン攻撃が確認されました。しかも、22,000件の削除済みパッケージが乗っ取りリスクに晒されていました。しかし、適切な対策で被害を防げます。そこで今回は、PyPIを安全に使うための知識と対策を解説します。
PyPIサプライチェーン攻撃の最新手口
攻撃手口は年々巧妙化しています。最も一般的なのはタイポスクワッティングです。人気パッケージに似た名前の偽パッケージを登録します。たとえば、coloramaに対してcolorizrという類似名を使います。つまり、開発者がタイプミスでインストールしてしまうのです。
さらに、Revival Hijackという新手口も登場しました。削除されたパッケージの名前を再登録する攻撃です。しかし、それだけではありません。正規パッケージのビルドパイプラインを侵害する手口も確認されています。具体的には、Ultralyticsパッケージが一時的にマルウェアに汚染されました。特に、CI/CDの脆弱性を突いた攻撃が増加しています。
Ultralyticsパッケージ侵害の詳細
Ultralyticsは人気のAI/MLライブラリです。2024年に公式パッケージが侵害されました。攻撃者がGitHub Actionsの脆弱性を悪用したのです。なぜなら、ビルドプロセスに介入できたからです。
具体的には、正規のビルドにマルウェアが混入されました。しかし、パッケージ名は正規のままでした。つまり、正しい名前をインストールしても感染する状況でした。また、暗号通貨マイナーが含まれていました。さらに、この攻撃はかなりの期間検出されませんでした。実際、サプライチェーン攻撃の巧妙さを示す事例です。
PyPIを安全に使うための対策
いくつかの防御策があります。まず、パッケージ名を正確に確認しましょう。また、インストール前にダウンロード数や更新頻度を確認します。さらに、依存関係のロックファイルを活用します。
具体的には、pip-auditでセキュリティ脆弱性をスキャンできます。しかし、ツールだけでは完全な防御は困難です。つまり、人間の注意力も重要です。特に、新しいパッケージの導入時は慎重に調査しましょう。なお、requirements.txtではバージョンを固定することが推奨されます。実際、ハッシュ検証も有効な手段です。
組織レベルでの防御戦略
企業ではより包括的な対策が必要です。まず、プライベートPyPIミラーの構築が効果的です。また、承認済みパッケージのホワイトリスト管理も重要です。さらに、CI/CDパイプラインのセキュリティ強化も必須です。
特に、依存関係の定期的な監査を実施しましょう。なぜなら、知らないうちに危険なパッケージが混入する可能性があるからです。しかし、すべてを手動で確認するのは非現実的です。つまり、自動スキャンツールとの併用が現実的な解です。このように、複数の防御層を組み合わせることが重要です。
まとめ
PyPIのサプライチェーン攻撃は年々巧妙化しています。しかし、適切な対策で被害を大幅に減らせます。特に、パッケージ名の確認やバージョン固定が基本です。また、組織レベルではプライベートミラーの活用も効果的です。実際、セキュリティ意識を持った開発が今まで以上に重要になっています。