サプライチェーン攻撃と依存パッケージ — npm・PyPI などの取得先を管理する
現代のソフトウェア開発は、npm や PyPI といった公開レジストリからの依存パッケージなしには成り立ちません。コマンド1つで世界中のコードを取り込める利便性の裏で、「取り込むコードそのものが攻撃経路になる」——サプライチェーン攻撃が現実の脅威になっています。この記事では、ネットワークの視点から「依存パッケージの取得先を管理する」という考え方を整理します。
依存パッケージ経由の攻撃という現実
公開レジストリを悪用する攻撃は、一般論として大きく2つの型があります。
- 悪意あるパッケージの公開 — 有名パッケージと紛らわしい名前(タイポスクワッティング)や、便利そうな機能を装ったパッケージを公開し、インストールさせる
- 正規パッケージの乗っ取り — メンテナのアカウント侵害などにより、広く使われている正規パッケージの新バージョンに悪意あるコードが混入する
いずれの場合も、混入したコードは開発者の権限で動きます。典型的な狙いは、開発マシン上の認証情報・APIキー・環境変数の窃取で、盗んだ情報は外部の受け取り先へ送信されます。つまり最終段階は多くの場合、開発環境からの外向き通信として現れます。
ビルド環境・開発環境は「外から取ってくる」マシン
サーバやオフィスPCと比べたとき、開発環境・CI/CDのビルド環境には際立った特徴があります。仕事の前提として、外部から大量のコードを取得し続けることです。
依存パッケージの取得、ベースイメージの取得、ツールチェインの更新——これらはすべて外向き通信であり、止めるわけにはいきません。だからこそ「外と通信すること」自体は異常ではなく、「どこと通信しているか」を管理することが出発点になります。取得先が無秩序なままでは、悪意あるコードの混入にも、混入後の情報送出にも気づきようがありません。
取得先を固定するという考え方
第一歩は、パッケージの取得先を信頼できる少数の宛先に固定することです。
- レジストリの一元化 — 公式レジストリ、あるいは組織で管理するプロキシレジストリ・ミラー経由に取得経路を集約する(一般的な構成の考え方として)。経由点を作れば、そこで取得記録の集約や検査の挿入が可能になります
- ネットワーク層での宛先制御 — 開発・ビルド環境から到達できる宛先を、公認のレジストリ・リポジトリ等に絞る。レジストリ側の設定が漏れていたり、ツールが独自の取得先を持っていたりしても、ネットワーク層の制御が設定漏れを拾う独立した層として機能します
この2つは競合ではなく補完関係です。レジストリの管理は「何を取得したか」を記録し、ネットワーク層の制御は「想定外の場所から取得すること・想定外の場所へ送ること」を抑止します。
インストール時スクリプトの外向き通信を監視する
依存パッケージの厄介な性質として、多くのエコシステムでインストール時に任意のスクリプトが実行されることが挙げられます。悪意あるコードはこの時点で動き出し、収集した情報を外部へ送ろうとします。
ここで効くのが、開発環境の egress(外向き通信)の監視です。パッケージのインストール中に、レジストリでもミラーでもない見知らぬ宛先への接続が発生したら、それは強い調査シグナルです。特に「その環境で初めて観測される宛先」は要注意です(初見ドメインはなぜ危険シグナルになるのか)。AIコーディングエージェントの普及で開発環境の外向き通信はさらに増えており、観測の重要性は増しています(開発環境の egress 監視)。
正直な限界 — 取得先制御で防げないもの
- 正規レジストリ上に公開された悪意あるパッケージは、取得先の制御では防げません。取得先が「公式レジストリ」である以上、宛先としては正常だからです。ここは SBOM(ソフトウェア部品表)の管理、依存関係の監査、バージョン固定といった別の対策の領分です
- 窃取された情報が、業務で許可済みの正規サービス経由で送出された場合、宛先の監視だけでは捕捉が困難です
- 取得先制御は「混入そのもの」ではなく、混入経路の一部を塞ぎ、混入後の情報送出を見えやすくする対策だと位置づけてください
まとめ
- 依存パッケージ経由のサプライチェーン攻撃は、悪意あるパッケージと正規パッケージの乗っ取りという2つの型で現実化している
- 開発・ビルド環境は「外から取ってくる」マシン——取得先の管理が出発点
- レジストリの一元化(プロキシ・ミラー)とネットワーク層の宛先制御は補完関係にある
- インストール時スクリプトの情報送出は開発環境の egress 監視で見えやすくなる
- 正規レジストリ上の悪意あるパッケージは取得先制御では防げない——SBOM・監査との併用が前提
Tate(盾)は、開発セグメントの外向き通信の可視化と宛先制御を、回線に挟むだけで追加するアプライアンスです。観測機能の詳細は可視化・AI解析をご覧ください。
AIエージェントの外向き通信、見えていますか。
Tate(盾)は、回線に挟むだけで導入できる L2透過型ファイアウォール・アプライアンスです。現在、先行案内・お問い合わせを受け付けています。