コラム

Column

導入事例

Case Study

サイバーニュース

Cyber News

海外のサイバーセキュリティ関連のニュースを日本語でご紹介しています。

お知らせ

News

悪性npmパッケージがGitHubとCI/CDへ拡散、IronWormとMiasmaを解説

npmのソフトウェア開発エコシステムで、認証情報を盗みながら別のパッケージへ拡散する複数のサプライチェーン攻撃が確認されました。「IronWorm」はRust製の情報窃取マルウェアやeBPFルートキットを使用し、別の「Miasma」亜種は57パッケージ、286以上の悪性バージョンへ広がったと報告されています。開発端末とCI/CD環境の双方で確認が必要です。
The Hacker News:IronWorm and New Miasma Worm Variant Hit npm in Supply Chain Attacks

この記事のポイント

影響のあるシステム

  • 悪性バージョンのnpmパッケージをインストールまたはビルドした開発端末
  • npmパッケージを取得してビルドや公開を行うGitHub ActionsなどのCI/CD環境
  • npmアカウント「asteroiddao」から公開された悪性パッケージ
  • IronWormが確認された「weavedb-sdk 0.45.3」を含む関連パッケージ
  • Miasmaの新たな攻撃で確認された57パッケージ、286以上の悪性バージョン
  • 「ai-sdk-ollama」「autotel」「awaitly」「effect-analyzer」「eslint-plugin-awaitly」「http-uploader-dev」「mountly」「node-env-resolver」「node-env-resolver-aws」などの影響対象パッケージ
  • Linux、macOS、Windows上の開発環境およびCI/CDランナー
  • GitHub、npm、AWS、Google Cloud、Microsoft Azure、Docker、Kubernetes、HashiCorp Vaultなどの認証情報を保存している環境
  • Claude、Cursor、GeminiなどのAIコーディング支援ツールを使用するプロジェクト

推奨される対策

  • package-lock.jsonなどのロックファイルとビルドログを確認し、影響対象のパッケージとバージョンが含まれていないか調査する
  • 影響対象をインストールした可能性がある端末やCI/CDランナーをネットワークから隔離し、侵害調査を行う
  • GitHub、npm、クラウド、SSH、Docker、Kubernetes、Vault、AIサービスなど、端末やCI/CD環境から参照できた認証情報を失効・再発行する
  • npm install --ignore-scriptsなどを利用し、不要なインストールスクリプトの実行を制限する
  • node-gypによるネイティブビルドの自動実行を制限し、binding.gypを利用した処理も検査する
  • 依存パッケージを既知の安全なバージョンへ固定し、ロックファイルの完全性ハッシュを検証する
  • GitHub Actionsのワークフロー、ビルド成果物、公開履歴、予期しないコミットやリポジトリの作成を確認する
  • プロジェクト内の「.claude」「.cursor」「.gemini」「.vscode」などを確認し、不審な設定ファイルや起動スクリプトを削除する
  • CI/CDトークンやクラウド権限を最小限に制限し、パッケージ公開権限を持つアカウントへ多要素認証を設定する

上記の対策は、元記事の事実に基づき日本の読者向けに整理したものです。

この記事に出てくる専門用語

  • npm:JavaScriptやNode.jsで使用するソフトウェアパッケージを公開・取得するための仕組みです。
  • ソフトウェアサプライチェーン攻撃:開発ツール、ライブラリ、更新経路などを侵害し、その利用者へ被害を広げる攻撃です。
  • IronWorm:JFrogが命名したRust製の情報窃取マルウェアです。認証情報を盗み、アクセス可能なリポジトリやnpmパッケージを利用して拡散します。
  • Miasma:Shai-Hulud系のコードを基にしたと評価されている、認証情報窃取機能と自己拡散機能を持つnpmワームです。
  • preinstall:npmパッケージのインストール前に自動実行できるスクリプトです。今回の攻撃ではマルウェアの起動に悪用されました。
  • binding.gyp:Node.jsのネイティブ拡張をビルドするための設定ファイルです。Miasmaでは、通常監視されるインストールスクリプトを避けてコードを実行するために悪用されました。
  • Phantom Gyp:binding.gypを利用してnpmインストール時にコードを実行する、StepSecurityが今回の攻撃手法に付けた名称です。
  • eBPFルートキット:LinuxカーネルのeBPF機能を悪用し、プロセスや通信を隠すなどの動作を行うマルウェアです。
  • CI/CD:ソースコードのテスト、ビルド、公開などを自動化する開発工程です。
  • Trusted Publishing:長期間有効な固定トークンを使用せず、CI/CDから短時間だけ有効な認証情報を取得してパッケージを公開する仕組みです。
  • SLSA:ソフトウェアのビルドや提供経路の信頼性を高めるためのセキュリティフレームワークです。

IronWormが開発端末の秘密情報を収集して自己拡散

IronWormは、JFrogがnpmパッケージの調査から発見したRust製の情報窃取マルウェアです。調査の起点となったのは、侵害されたとみられるnpmアカウント「asteroiddao」から公開されたパッケージでした。JFrogは「weavedb-sdk 0.45.3」を例として挙げており、パッケージにはLinux向けのELF実行ファイルが含まれ、npmのpreinstallフックから自動的に起動する構成だったと報告しています。利用者が特別なファイルを開かなくても、悪性バージョンを通常どおりインストールするだけで処理が実行される可能性があります。

マルウェアは86種類の環境変数に加え、GitHub、npm、AWS、Docker、Kubernetes、OpenAI Codex、Anthropic Claude、Google Gemini、Cursorなどに関連する認証情報や設定ファイルを探索します。HashiCorp Vaultの設定やExodus暗号資産ウォレットのファイルも対象とされています。盗まれた情報はデータ窃取に使われるだけでなく、攻撃を別のプロジェクトへ広げるための手段にもなります。

JFrogによると、IronWormは窃取したGitHub認証情報を利用し、アクセス可能なリポジトリへ悪性コードを追加します。その後、改変されたプロジェクトから新たな悪性npmパッケージが公開されれば、次にインストールした開発者へ感染が連鎖します。調査では9つのGitHub組織にまたがる57件の悪性コミットが確認され、コミットの作成者名にはAIサービスを装う目的とみられる「claude」が使用されていました。これはAnthropicの製品が侵害されたことを示す情報ではなく、攻撃者が表示名を偽装していたものです。

さらにIronWormは、Torを経由して攻撃者と通信し、Linux環境ではeBPFを利用したカーネルレベルのルートキットによってプロセスを隠す機能を備えていると報告されています。ただし、カーネルロックダウンが有効な環境では、この隠蔽処理が機能せず、対象のプロセスやソケットが確認可能になるとされています。

Miasmaはbinding.gypを悪用して監視を回避

IronWormとは別に確認されたMiasmaの新たな亜種では、57パッケージにわたって286以上の悪性バージョンが公開されたと報告されています。対象には「ai-sdk-ollama」「autotel」「awaitly」「effect-analyzer」「eslint-plugin-awaitly」「executable-stories-cypress」「http-uploader-dev」「mountly」「node-env-resolver」「node-env-resolver-aws」などが含まれます。パッケージ名が一致していても、すべてのバージョンが悪性という意味ではないため、名称だけでなく導入されたバージョンまで確認する必要があります。

この亜種で特徴的なのが、StepSecurityが「Phantom Gyp」と呼ぶ実行手法です。一般的なnpmマルウェアでは、package.jsonに記述されたpreinstallやpostinstallなどのライフサイクルスクリプトが悪用されます。これに対して今回の攻撃では、わずか157バイトのbinding.gypを利用し、npmインストール時のネイティブビルド処理から不正コードを起動していました。この方法では、インストールスクリプトだけを監視または無効化しているセキュリティ対策を回避できる可能性があります。

起動後のマルウェアは、端末のOSに適したBun JavaScriptランタイムをダウンロードし、複数段階の認証情報窃取処理を実行します。AWS、Google Cloud、Microsoft Azure、HashiCorp Vault、Docker、Kubernetes、GitHub Actions、npm、RubyGems、PyPI、SSH、パスワード管理ツール、AIコーディング支援ツールなどが標的として挙げられています。Linux、macOS、Windowsで動作するよう設計されていますが、LinuxのCI/CDランナーが主な標的だったと報告されています。

npm install --ignore-scriptsは通常のライフサイクルスクリプトを止めるうえで有効ですが、今回の手法に対しては、node-gypによるネイティブ再ビルドも併せて制限する必要があります。単一の設定だけに依存せず、パッケージの固定、完全性ハッシュの検証、公開直後のバージョンを一定期間保留する運用などを組み合わせることが重要です。

GitHub ActionsとAI開発環境が拡散経路に

今回の攻撃では、開発端末から認証情報を盗むだけでなく、GitHub Actionsやnpmの正規機能を利用して悪性パッケージを再公開する仕組みが確認されています。IronWormは既存のGitHub Actionsワークフローを置き換え、収集したシークレットを一見無害なファイルへ書き込み、ビルド成果物としてアップロードできます。この方法では、専用の外部C2サーバーへ直接データを送信しなくても、正規の開発基盤を通じて情報を持ち出せる可能性があります。

CI環境では、npmのTrusted Publishingを悪用し、短時間だけ有効なトークンを取得して、マルウェアを含む改変版をnpmレジストリへ公開する動作も報告されています。Trusted Publishing自体は固定された長期トークンへの依存を減らす仕組みですが、信頼されたCI/CDワークフローそのものが侵害されれば、不正なパッケージの公開に利用される可能性があります。署名や来歴情報が付いているという理由だけで、パッケージの内容まで安全だと判断しないことが重要です。

Miasmaでは、GitHubが盗んだ情報の保管先として利用されただけでなく、次段階のマルウェアを取得するC2のような役割も果たしたと報告されています。攻撃コードは「firedalazer」という文字列を含むGitHubコミットを検索し、別のJavaScriptファイルを取得する仕組みを備えていました。攻撃者は対象コミットを書き換えることで、配布するマルウェアを動的に変更できる可能性があります。GitHubは多くの企業で通信が許可されているため、ドメインやIPアドレスの遮断だけでは検知が難しくなります。

さらに、Miasmaの新たな亜種は、プロジェクト内のAIコーディング支援ツール向け設定へ永続的なバックドアファイルを追加すると報告されています。これにより、開発者がClaude、Cursor、Geminiなどに対応したIDEでプロジェクトを開いた際に、不正な処理が再び実行される可能性があります。影響調査では通常のソースコードやpackage.jsonだけでなく、「.claude」「.cursor」「.gemini」「.vscode」などの隠しディレクトリも確認する必要があります。

国内組織が直ちに確認すべき開発環境と認証情報

組織内でnpmを使用している場合は、まずpackage-lock.json、npm-shrinkwrap.json、ビルドログ、依存関係管理ツールの記録を検索し、影響対象のパッケージとバージョンが直接または間接的に導入されていないか確認してください。パッケージが現在のプロジェクトから削除されていても、悪性バージョンを過去にインストールした端末やCI/CDランナーでは、すでに認証情報が取得されている可能性があります。

該当履歴が見つかった場合は、パッケージを安全なバージョンへ戻すだけでは十分ではありません。対象端末やランナーを隔離したうえで、GitHub、npm、AWS、Google Cloud、Azure、SSH、Docker、Kubernetes、Vault、PyPI、RubyGems、パスワード管理ツール、AIサービスなど、侵害された環境から利用できた認証情報を洗い出し、失効と再発行を行う必要があります。端末内のファイルだけでなく、環境変数やCI/CDのプロセスメモリから取得された可能性も考慮してください。

GitHubでは、不審なコミット、作成者名「claude」を使用した変更、予期しないワークフローの更新、知らないリポジトリ、異常なビルド成果物、パッケージ公開履歴を確認します。Miasmaに関しては、「Miasma: The Spreading Blight」「Miasma : The Spreading Blight」「Miasma – The Spreading Blight」など、表記の異なる文字列がリポジトリの説明に使用されたと報告されています。完全一致の一種類だけを検索すると、別の亜種を見落とす可能性があります。

なお、先行するMiasma攻撃ではRed Hatの「@redhat-cloud-services」名前空間のパッケージも侵害されました。Red Hatは、対象パッケージがHybrid Cloud Consoleのフロントエンドライブラリであり、侵害期間中に同サービスのリリースは行われなかったと説明しています。また、Azure Red Hat OpenShiftやOpenShift DedicatedなどのRed Hat管理クラウドサービスとは関係がなく、同社の調査時点では顧客側の対応は不要としています。一方、自社の開発環境で対象npmパッケージを直接取得した場合は、Red Hat製品の利用有無とは別に影響を確認する必要があります。

参考文献・記事一覧

投稿者プロフィール

CyberCrew(サイバークルー)
CyberCrew(サイバークルー)
CyberCrew(サイバークルー)は、企業の情報セキュリティをトータルで支援する専門チームです。高度なスキルを持つホワイトハッカーが在籍し、サイバー攻撃の監視・検知から初動対応、リスク診断や従業員向けのセキュリティ教育まで、幅広いサービスを提供。企業のニーズに応じた柔軟な対応で、安心・安全なIT環境の実現をサポートします。

情報セキュリティサービス台帳登録事業者

■ セキュリティコンテスト受賞歴
CTF国際大会 世界No.1
CEH Master Leaderboard 世界No.1
Hack The Box Rank TOP10

■ 保有セキュリティ資格
GIAC GXPNCisco Cybersecurity SpecialistCEH MasterCEH Practical
Cyber Security Professional CertificateOSCPOSCP+CPENTOSWP
eCPPTeMAPTCRTSSOC-100PEN-100
HTB Offshore Penetration Tester(Level 3)


Page Top