PyPIのパッケージ管理に潜む「見えない脅威」
Pythonの開発者なら誰もが使うパッケージ管理システム「PyPI」。pip installの一行で必要なライブラリを導入できます。しかし、この便利さの裏側に深刻なセキュリティリスクが潜んでいます。
2024年から2025年にかけて、PyPIやnpmを悪用した「サプライチェーン攻撃」が急増しています。つまり、正規ライブラリに偽装した悪質パッケージによる被害が広がっているのです。
PyPIでSolanaユーザーを狙った巧妙な偽パッケージ
2024年8月に発覚した事例は、この問題の深刻さを示しています。具体的には、暗号資産プラットフォーム「Solana」のPythonライブラリを装った悪質パッケージがPyPIに公開されました。
正規ライブラリはPyPIでは「solana」という名前です。しかし、攻撃者は「solana-py」という名前で登録しました。つまり、GitHubリポジトリ名と同じだから正規品だと思い込む開発者を狙ったのです。
さらに、この偽パッケージは正規コードをほぼ流用していました。そのため、ウォレットの秘密鍵を盗むコードが仕込まれていても気づきにくかったのです。なお、発見までに1,100回以上ダウンロードされていました。
PyPIで多発するタイポスクワッティング攻撃
この手口は「タイポスクワッティング」と呼ばれます。正規パッケージに似た名称を使い、タイプミスで誤ってインストールさせるのが目的です。
たとえば、PyPIでは以下のようなパターンが確認されています。
- ハイフンやアンダースコアの違い
- 単語の順序の入れ替え
- よくあるタイプミスを狙った名前
- 「-dev」「-utils」などを付加した名前
また、2024年後半にはnumpyやrequestsの偽物も大量にアップロードされました。さらに、攻撃者は自動化ツールで数百個を一気に登録するケースもあります。
npmでも広がるサプライチェーン攻撃
この問題はPyPIに限りません。npmでも同様の攻撃が深刻化しています。
具体的には、数十万件のスパムパッケージが登録されています。また、人気パッケージの依存関係に悪意のあるコードを混入させる事例もあります。つまり、直接インストールしたパッケージが安全でも油断できないのです。
PyPIへのサプライチェーン攻撃が増えている理由
サプライチェーン攻撃が増加している背景にはいくつかの要因があります。
まず、現代のソフトウェアは膨大な外部ライブラリに依存しています。そのため、すべてを人の目で検証するのは現実的ではありません。
次に、PyPIやnpmの審査体制に限界があります。パッケージ登録に厳格な審査はありません。つまり、悪質なパッケージが報告されるまでの間に被害が発生します。
さらに、AIの存在も大きな要因です。攻撃者はAIで正規パッケージを分析し、効率的に偽パッケージを作成できるようになりました。
PyPIのサプライチェーン攻撃から身を守る5つの防御策
では、開発者はどう身を守ればよいでしょうか。以下の対策を日常的に実践しましょう。
1. パッケージ名をPyPI公式サイトで確認する。作者、ダウンロード数、更新履歴をチェックしましょう。
2. ロックファイルを活用する。requirements.txtでバージョンを固定します。そのため、意図しないパッケージの混入を防げます。
3. 依存関係のスキャンツールを導入する。たとえば、SnykやDependabotで脆弱性を自動検出しましょう。
4. 最小権限の原則を徹底する。CI/CD環境の認証情報は最小限にしましょう。また、シークレットマネージャーでの管理が推奨されます。
5. 新しいパッケージのコードを確認する。特にsetup.pyは要注意です。なお、不審な外部通信がないか確認する習慣をつけましょう。
まとめ──PyPIの悪質パッケージから開発者を守るために
オープンソースのエコシステムは開発の生産性を高めてくれます。しかし、その利便性は攻撃者にとっても魅力的なターゲットです。つまり、「pip installしたら終わり」ではなくインストール対象を意識する姿勢が不可欠です。
また、フィッシング攻撃の最新動向やLNKファイルを悪用した攻撃もセキュリティ対策の参考にしてください。
