「npm install」は任意コード実行!?Web制作・AI開発を脅かすサプライチェーン攻撃と対策

「npm install」の裏に潜むリスクとは?開発環境を守る新常識
現代のWeb制作やAI開発において、CI/CDパイプラインの構築やパッケージマネージャによる依存関係の自動解決は、もはや当たり前の手法となっています。特にnpmパッケージはフロントエンド開発の根幹をなし、AIエージェントの進化はさらにその自動化を加速させていますよね。しかし、その利便性の裏で、恐ろしいセキュリティリスクが急速に高まっていることをご存知でしょうか?
「npm install」という、日々当たり前のように実行するコマンドが、実は「任意コード実行」のような危険をはらんでいる――。これは決して大げさな話ではありません。2025年以降、このソフトウェア開発の自動化プロセスを悪用したサプライチェーン攻撃が多発し、私たちの開発環境、ひいては提供するサービス全体の信頼を揺るがしかねない状況になっているのです。
今回は、Web制作・AI開発に携わる皆さんが直面する新たな脅威について、GMO Flatt Securityの米内貴志氏が警鐘を鳴らしたウェビナー「GitHub Actions侵害 — 相次ぐ事例を振り返り、次なる脅威に備える」の内容を基に、その実態と具体的な対策を解説していきます。「これ使えそう!」「試してみよう」と思える実用的な情報をお届けしますので、ぜひ最後までご覧ください。
多発するサプライチェーン攻撃の実態:Web制作・AI開発への影響
米内氏は、近年のサプライチェーン攻撃の厄介な点として「何らかのソフトウェアが供給側で侵害されたという単体の問題に留まらず、侵害されたソフトウェアがさらに次の利用者へ影響を与え、連綿と影響を与えていく点」を指摘しています。つまり、私たちが利用しているオープンソースソフトウェア(OSS)やCI/CDツールが攻撃されると、その影響は連鎖的に広がり、最終的に私たちのプロジェクトやユーザーにまで及ぶ可能性があるということです。
しかし、だからといってOSSの利用やCI/CDツールの活用をやめるのは現実的ではありません。重要なのは、「自分たちが使っているツールやパッケージもやられるかもしれない」というリスクを念頭に置き、「もしその場合はどうするか」を学んで対策を実践することです。
事例1:GitHub Actions「reviewdog」への侵害(2025年3月)
2025年3月に発覚したのが、レビューコメントを自動投稿する人気のGitHub Action「reviewdog」に対する侵害です。攻撃者は、reviewdogのメンテナーの一人のアカウントを侵害し、タグの一つを改ざん。悪意あるスクリプトを含むコミットに誘導しました。この結果、reviewdogを参照していた「tj-actions」も連鎖的に被害を受けてしまいました。
この攻撃は比較的シンプルな手口でしたが、GitHub Actions上の一つの自動化ステップが侵害されたことで被害が広がり、数時間もの間気づかれずに拡大してしまった点が恐ろしいところです。攻撃者は、侵害したGitHub Actionsを利用しているユーザーのCIログやメモリダンプから、ワークフローが依存するシークレット情報、GitHubトークン、関連APIキーなどを窃取し、悪用していきました。
事例2:ワーム型攻撃「Shai-Hulud」(2025年秋頃)
2025年秋頃から流行した「Shai-Hulud」は、さらに巧妙な手口です。これもGitHub Actionsを侵害することでnpmパッケージを改ざんし、それを知らずにインストールしてしまった環境に感染します。ポイントは、単にシークレット情報を窃取するだけでなく、npmトークンを見つけると、そのユーザーが公開している他のパッケージにも同じスクリプトを植え付け、自己増殖していく「ワーム型」の攻撃だったことです。
このケースでは最終的に数百件のパッケージが影響を受けたと報じられていますが、米内氏は「実際のところ、依存しているプライベートパッケージは数に含まれていません。実際にはクローズドな環境でも侵害されてしまったケースがあるのではないかと思われます」と指摘しており、潜在的な被害はさらに大きい可能性があります。Web制作者が公開しているnpmパッケージが踏み台にされるリスクも十分に考えられます。
最悪のシナリオ:セキュリティツール「Trivy」への侵害(2026年)
2025年だけでも緊張感が高まっていた中、2026年に入ってさらに衝撃的なインシデントが発生しました。それが、TeamPCPによるセキュリティツール「Trivy」への侵害です。米内氏はこれを「僕の人生の中でも、ソフトウェアサプライチェーンの領域で最も大きな動きがあった」と語るほど、業界に大きな衝撃を与えました。
Trivyへの侵害もGitHub Actions経由でした。何らかの原因でTrivyのシークレットが抜き取られ、二度にわたる侵害が行われ、Trivyのバイナリそのものに加え、Trivyで利用する「trivy-action」などのActionに不正コードが注入されました。この結果、「LiteLLM」のような人気の高いパッケージも侵害され、改ざんされてしまいました。
攻撃者は、ほんの13分足らずで新バージョン(ただし、バグでまともに動作しない)をリリースしたり、直接コミットするのではなく、forkさせて悪性のリポジトリを作成してタグで関連付けるなど、検知を防ぐためにさまざまな「小賢しい」偽造工作を行っていました。最も重要なポイントは「単に一つのセキュリティツールが侵害されたのではなく、DevSecOpsを採用してセキュリティ対策に力を入れている組織に侵害が及ぶような、一番最初の大きな石が動いてしまった」ことです。つまり、セキュリティ意識が高い組織ほど、その対策ツールが狙われるという、まさに悪夢のようなシナリオが現実になったのです。
Web制作者・AI開発者が今すぐ始めるべき対策
これらの事例から見えてくるのは、「npm install」一つとっても、その背後にあるサプライチェーン全体のセキュリティを意識しなければならないということです。では、私たちは具体的に何をすべきでしょうか?
1. 開発環境とCI/CDパイプラインの最小権限原則を徹底する
- 必要な権限のみを付与: GitHub ActionsやCI/CDツールに与える権限は、そのタスクを遂行するために最低限必要なものに限定しましょう。過剰な権限は攻撃者に悪用されるリスクを高めます。
- シークレット管理の強化: APIキーやトークンなどのシークレット情報は、環境変数に直接書き込むのではなく、GitHub ActionsのSecretsや専用のシークレット管理サービスを利用し、アクセス権限を厳しく管理しましょう。
2. アカウントと認証情報のセキュリティを強化する
- MFA(多要素認証)の導入: GitHubアカウント、npmアカウント、クラウドサービスのアカウントなど、開発に関わる全てのアカウントで多要素認証を必須にしましょう。これは最も基本的ながら、効果的な対策です。
- 定期的なパスワード変更と使い回しの禁止: 強固なパスワードを設定し、定期的に変更することはもちろん、使い回しは絶対に避けましょう。
3. 依存関係の監視と検証を怠らない
- SBOM(ソフトウェア部品表)の導入検討: 自身が利用・開発するソフトウェアに含まれるOSSコンポーネントを可視化し、脆弱性がないか常に把握できる体制を検討しましょう。
- 依存パッケージの脆弱性スキャン: Trivyのようなセキュリティツール(Trivy自体が狙われたため、複数のツールを組み合わせるなど、ツールの選定と信頼性評価も重要です)を活用し、定期的に依存パッケージの脆弱性をスキャンしましょう。
- バージョン固定と更新の確認:
package-lock.jsonやyarn.lockで依存パッケージのバージョンを固定し、更新時には変更内容をレビューする習慣をつけましょう。不審な変更がないか、リリースノートをしっかり確認することも重要です。
4. 不審なアクティビティの監視と検知体制を構築する
- CI/CDログの監視: CI/CDパイプラインの実行ログを定期的に確認し、通常とは異なる挙動やエラーがないか監視しましょう。
- リポジトリの変更履歴のレビュー: 不審なコミット、プルリクエスト、フォーク、タグの追加・変更がないか、チームでコードレビューを徹底しましょう。特に、普段あまり変更がない部分に急な変更があった場合は要注意です。
5. チーム全体でセキュリティ意識を高める
- 定期的なセキュリティ教育: チームメンバー全員でサプライチェーン攻撃のリスクや最新の脅威について学び、セキュリティ意識を共有する機会を設けましょう。
- インシデント対応計画の策定: 万が一攻撃を受けた場合の対応手順(被害範囲の特定、封じ込め、復旧など)を事前に定めておくことも重要です。
「npm install」は、もはや単なるパッケージ導入コマンドではなく、信頼できないコードを実行する可能性を秘めた、一種の「任意コード実行」と捉えるべき時代に入っています。Web制作・AI開発の現場で、安全な開発環境を維持し、ユーザーに信頼されるサービスを提供するためには、常に最新の脅威に目を向け、能動的に対策を講じることが不可欠です。今日からできることから、ぜひ始めてみてください。


