北朝鮮 ハッカー グループがMastra AIのnpmへサプライチェーン攻撃

セキュリティニュース

投稿日時: 更新日時:

Microsoftが北朝鮮ハッカーグループがMastra AIのnpmへサプライチェーン攻撃

Microsoftは2026年6月19日、AIエージェントフレームワーク「Mastra AI」のnpmエコシステムを標的とした大規模なサプライチェーン攻撃を北朝鮮の国家支援型ハッカーグループ「Sapphire Sleet」(別名:BlueNoroff)に高確度で帰属すると発表しました。

攻撃者はMastra AIの@mastra スコープ全体への公開権限を持つnpmメンテナーアカウントを乗っ取り、140本超のパッケージに「easy-day-js」という悪意ある依存関係を注入しました。

easy-day-jsは週間ダウンロード数5,700万を超える正規ライブラリ「dayjs」のtyposquatで、npm installの実行時にpostinstallフックが自動起動し、開発者端末やCI/CDパイプライン上で認証情報・APIキー・暗号資産ウォレットを窃取するクロスプラットフォームマルウェアを展開します。同グループによる同種のnpmサプライチェーン攻撃としては、2026年4月のAxiosへの攻撃が前例として確認されています。

サマリー

  • 帰属発表日:2026年6月19日(Microsoft Security Blog更新)
  • 攻撃グループ:Sapphire Sleet(BlueNoroff)- 北朝鮮国家支援型。主に金融セクターと暗号資産を標的とする
  • 侵入経路:npmメンテナーアカウント「ehindero」の乗っ取り(@mastraスコープ全体への公開権限を保有)
  • 注入した悪意ある依存関係:easy-day-js(dayjsのtyposquat)
  • 侵害パッケージ数:140本超(@mastra スコープ)
  • 攻撃タイムライン:
    • 2026年6月16日07:05 UTC:[email protected]公開(クリーンなおとり版、ペイロードなし)
    • 6月17日01:01 UTC:[email protected]公開(悪意あるpostinstallフック追加)
    • 6月17日01:20 UTC:[email protected]ほか140本超のパッケージが同依存関係付きで公開
  • 窃取対象:認証情報・APIキー・OAuthトークン・暗号資産ウォレット(166種の拡張機能を対象)・ブラウザ閲覧履歴
  • マルウェアの特徴:クロスプラットフォーム(Windows・macOS・Linux)、Windows上ではfileless .NETリフレクションインジェクション、自己削除で痕跡を消去
  • C2 IP:23.254.164[.]92(主)・23.254.164[.]123(副)
  • 安全なバージョン:mastra 1.13.0以前・@mastra/core 1.42.0以前
  • 関係するSapphire Sleetの前例:2026年4月のAxios npmサプライチェーン攻撃

何が起きたか

Microsoftの脅威インテリジェンスチームは、npmレジストリ上の@mastraスコープにおける異常な公開パターンを検知したことでこの攻撃を把握しました。mastraパッケージのバージョン1.13.0以前はすべてGitHub Actions OIDCを通じてCI/CDパイプライン経由で公開されていました。ところが2026年6月17日に公開されたバージョン1.13.1は、Tutamailのアドレス(ehindero2016@tutamail[.]com)を使ったehinderoという名前のアカウントから手動で公開されており、GitHub上のMastraリポジトリにはそれに対応するコード変更が一切ありませんでした。

Microsoftはehinderoアカウントが攻撃者によって乗っ取られていると判断し、@mastra スコープ全体への調査を進めた結果、140本超のパッケージが同様の形で悪意ある依存関係の注入を受けていることを確認しました。この情報はnpmセキュリティチームに共有され、侵害されたパッケージはすでに削除され、ehinderoアカウントの@mastraスコープへの公開権限は剥奪されています。

Microsoftは6月17日に最初の分析ブログを公開した後、6月19日の更新でこの活動をSapphire Sleetに「高確度で帰属する」と結論付けました。その根拠として、攻撃で展開されたPowerShellバックドアのコード・TTPs(戦術・技術・手順)・C2インフラがSapphire Sleetの過去のキャンペーンで使われてきたものと一致することを挙げています。

概要

Mastra AIは、TypeScriptでAIエージェントとワークフローを構築するためのオープンソースフレームワークです。

AgentやToolなどの抽象化レイヤーを提供しており、OpenAIやAnthropicなどのLLMを組み合わせてAIエージェントを迅速に開発できる点から、AIアプリケーション開発者の間で普及しつつあったパッケージです。

攻撃者が選んだ侵入経路は、Mastraパッケージエコシステム全体への公開権限を持つメンテナーアカウントの乗っ取りでこの権限を悪用して、攻撃者は正規のdayjsライブラリを装った悪意あるeasy-day-jsパッケージを作成し、各パッケージのpackage.jsonにeasy-day-js@^1.11.21という依存関係を追加しました。SemVer(セマンティックバージョニング)の^1.11.21という記述は1.11.22を自動的に解決するため、weaponizedバージョンが公開された段階で、次のnpm installやnpm updateで自動的に悪意ある版が取得されます。

この攻撃で特に注意が必要なのは、パッケージがアプリケーションのコード内でimportやrequireによって明示的に利用されているかどうかにかかわらず、npm installの実行時にpostinstallフックが自動実行される点です。

つまり、Mastra関連のパッケージを依存関係として記述しているプロジェクトのビルドが実行された時点で、開発者の意図とは無関係にマルウェアが起動します。CI/CDパイプライン上での自動ビルドが侵害のトリガーになり得る点は、影響範囲の広さという意味で深刻な問題です。

原因

攻撃の起点となったehinderoアカウントが乗っ取られた具体的な経路はMicrosoftの報告では明示されていませんが、攻撃者がTutamail(匿名性の高いメールサービス)を使用しており、typosquatパッケージの公開者アカウント(sergey2016@tutamail[.]com)と同一プロバイダーを使っている点から、事前に計画された組織的な攻撃であることが推測されます。

攻撃のもう一つの重要な要因は「staged delivery(段階的デリバリー)」という手口です。攻撃者は[email protected](クリーンなおとり版)を6月16日に公開し、翌6月17日に悪意あるフック付きの1.11.22を公開しました。最初にクリーンなバージョンを公開して当該パッケージ名をnpmレジストリに登録しておくことで、セキュリティスキャナーによる初期評価をすり抜け、武器化バージョンの公開直後に侵害された140本超のパッケージが同時に公開されたことで検知までの時間を最小化しています。

npmのpostinstallフックというエコシステム設計上の問題も攻撃の成立に寄与しています。依存パッケージのインストール時に任意スクリプトを自動実行できるpostinstallの仕組みは、開発者の利便性のために設けられたものですが、悪意あるパッケージにとっては確実なコード実行経路となります。GitHubが2026年7月にリリース予定のnpm v12でpostinstallスクリプトをデフォルト無効化するBreaking Changeを発表したのも、こうした繰り返される攻撃への対応です(関連記事参照)。

情報システム部門が今すぐ取るべき対応

まず影響確認として、[email protected]以降または@mastra/[email protected]以降を使用しているプロジェクトがないかを確認してください。package-lock.jsonまたはnode_modulesディレクトリに対して以下のコマンドで確認できます。

cat package-lock.json | grep -A2 "easy-day-js"
find . -path "*/node_modules/easy-day-js" -type d

影響を受けたシステムが確認された場合は、そのシステム上に存在していた可能性があるすべての認証情報・APIキー・OAuthトークン・クラウドプロバイダーのアクセスキー・GitHubトークンを即座にローテーションしてください。CI/CDランナーが影響を受けた場合は、そのランナーが参照していたすべてのシークレットを対象とする必要があります。

侵害の痕跡の確認については、以下のホスト上のIoCを確認してください。$TMPDIR/.pkg_historyおよび$TMPDIR/.pkg_logsファイルの有無、ランダムな16進数名の.jsファイル(例:a1b2c3.js)がtempまたはホームディレクトリに存在するか、Windows上ではHKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunにNvmProtocalという値がないか、macOS上では~/Library/LaunchAgents/com.nvm.protocal.plistが存在しないか、Linux上では~/.config/systemd/nvmconf/nvmconf.serviceが存在しないかを確認してください。

Microsoft Defender XDRを利用している環境では、以下のKQLクエリで挙動を検出できます。

DeviceProcessEvents
| where Timestamp > ago(7d)
| where FileName in ("node", "node.exe")
| where ProcessCommandLine has "setup.cjs"
    or ProcessCommandLine has "easy-day-js"
| where ProcessCommandLine has "--no-warnings"
| project Timestamp, DeviceName, AccountName,
    ProcessCommandLine, FolderPath, InitiatingProcessFileName
| sort by Timestamp desc

ネットワーク境界では、C2 IPアドレス23.254.164.92と23.254.164.123への通信をブロックしてください。

今後の予防策として、npm installに–ignore-scriptsオプションを付与することで、postinstallフックの自動実行を防ぐことができます。AI関連のフレームワークパッケージを業務で使用しているチームについては、SBOMの整備とソフトウェアコンポジション解析(SCA)ツールを組み合わせた依存パッケージの監視体制を強化することを推奨します。

FAQ

Q. Mastra AIそのものを使っていなければ影響はありませんか?

A. はい。直接的な影響を受けるのは@mastraスコープのパッケージをnpm依存関係として記述しているプロジェクトのみです。ただし、package.jsonのdependenciesやdevDependenciesに記述されているだけでコード内でimportしていない場合でも、npm installを実行した時点でpostinstallフックが起動するため影響を受けます。

Q. 安全なバージョンはどれですか?

A. mastraは1.13.0以前、@mastra/coreは1.42.0以前が安全です。それ以降のバージョンについては、攻撃者が公開権限を剥奪された以降のバージョンが正常なものとして公開されていますが、念のためnpmセキュリティアドバイザリで最新の状況を確認してから更新することを推奨します。

Q. CI/CDが影響を受けた場合、何を最優先でローテーションすべきですか?

A. CI/CDランナーが参照していたGitHubシークレット・AWS/GCP/AzureのIAMキー・npmアクセストークン・コンテナレジストリの認証情報を最優先でローテーションしてください。これらは攻撃者によって収集されている可能性が最も高いデータです。

Q. Sapphire Sleet(BlueNoroff)とLazarusグループの関係は何ですか?

A. Sapphire Sleetは北朝鮮のサイバー作戦の中で主に金融セクターと暗号資産企業を専門的に標的とするクラスターで、Microsoft・Google・Mandiantの追跡においてBlueNoroffという呼称とも重複します。Lazarusグループはこれらの活動の上位概念として北朝鮮が国家資金調達のために展開するサイバー作戦の総称として使われます。今回のサプライチェーン攻撃も、暗号資産ウォレットの166種の拡張機能を対象としている点から、金融資産の収奪という活動目的と一致しています。


出典

当サイト関連記事