Red Hat npm Miasma攻撃とは?Microsoft公式情報から見る影響範囲と確認手順

結論から言うと、Red Hat npm Miasma credential-stealing campaignで最初に確認すべきなのは、「対象パッケージを使っていたか」だけではありません。@redhat-cloud-services 配下の影響版をCI/CDや開発端末でインストールした可能性がある場合、GitHub、npm、Azure、AWS、GCP、Vault、Kubernetes、SSH鍵などの認証情報が露出した前提で調査する必要があります。

Microsoft Threat Intelligenceは、@redhat-cloud-services 配下の32パッケージ、90を超えるバージョンに悪意ある変更が入った大規模なnpmサプライチェーン攻撃としてこのキャンペーンを報告しています。攻撃は、正規のGitHub Actions OIDC公開フローを悪用し、正規に見えるprovenance署名を伴って悪性パッケージを公開していた点が特に重要です。(Microsoft)

一方で、Red Hatは2026年6月3日に更新した公式情報で、影響を受けたパッケージはHybrid Cloud ConsoleのWebインターフェースで使われるフロントエンドJavaScriptライブラリであり、侵害期間中にHybrid Cloud Consoleのリリースは行われていないと説明しています。また、Azure Red Hat OpenShift、OpenShift Dedicated、ROSAなどのRed Hat管理クラウドサービスとは関係しないとも説明しています。(Red Hat Customer Portal)

目次

Microsoft公式情報で押さえるべき変更点

今回の情報は、Microsoft製品の新機能追加ではなく、Microsoft Securityによる脅威分析と防御ガイダンスの更新です。管理者や開発者にとっての変更点は、「npmパッケージの信頼性を名前や署名だけで判断できない」ことが改めて明確になった点にあります。

観点これまで見落とされがちな判断今回確認すべきポイント
パッケージ名正規スコープなら比較的安全正規の @redhat-cloud-services スコープでも侵害版が公開された
provenance署名署名があれば安心侵害されたCI/CDから公開されると、正規に見える署名が付く場合がある
npm install依存関係を取得するだけpreinstall が自動実行され、アプリを起動しなくても感染し得る
影響調査package.json の直接依存だけを見るlockfile、CIログ、キャッシュ、ビルド成果物、開発端末まで確認する
対応範囲パッケージ更新で終わり認証情報のローテーション、GitHub監査、クラウド権限の棚卸しが必要

Microsoftの分析では、悪性パッケージはインストール時にnpmの preinstall フックを使って難読化された4.29MBのドロッパーを実行し、Bunランタイムをダウンロードしたうえで第2段階のペイロードを動かしていました。対象はLinux、macOS、Windowsに及びますが、特にLinuxのCI/CDランナーが主要な標的とみられています。(Microsoft)

何が危険だったのか

この攻撃の危険性は、単に「悪意あるnpmパッケージがあった」という話にとどまりません。攻撃者は、開発者やCI/CD環境にある認証情報を盗み、さらに信頼済みパッケージを再公開することでワームのように拡散しようとしていました。

Microsoftの報告では、ペイロードはGitHub、npm、AWS、Azure、GCP、HashiCorp Vault、Kubernetes、CircleCI、SSH鍵、CLI認証情報、ブラウザデータ、ウォレットファイルなどを対象にしていました。Azureについては、management.azure.comgraph.microsoft.com、Key Vault向けのIMDS OAuth2トークン収集が挙げられています。(Microsoft)

特に注意すべき攻撃の流れ

段階内容実務上の意味
インストール時実行preinstall により npm install 中に自動実行アプリを起動していなくても影響を受ける
Bunランタイム悪用Node.jsからBunへ処理を移すNode.js前提の監視だけでは見落とす可能性がある
CI/CDメモリの探索GitHub Actions Runner.Workerのメモリからシークレットを探索GitHub Actionsのマスク表示だけでは守れない
権限昇格passwordless sudoの設定を試みるself-hosted runnerでは被害が深くなる可能性がある
外部送信GitHubリポジトリ作成やコミットを悪用通常のC2ブロックだけでは検知が難しい
自己拡散npmパッケージを再公開し、provenanceを偽装downstream依存先にも被害が広がる

特に「署名があるから安全」「GitHub Actionsで正式にpublishされたから安全」という判断は危険です。今回のケースでは、正規の公開ワークフローが悪用され、悪性パッケージが本物らしく見える形で配布されていました。(Microsoft)

影響を受ける可能性がある組織

影響確認の対象は、Red Hatのサービス利用者だけではありません。自社プロジェクト、社内ツール、CI/CD、サンプルコード、検証環境のいずれかで @redhat-cloud-services 配下のnpmパッケージをインストールしていた場合は確認対象です。

対象確認すべき理由
ReactやNode.jsを使う開発チーム@redhat-cloud-services のUI部品やAPIクライアントを直接・間接依存している可能性がある
GitHub Actions利用チームActionsシークレット、OIDCトークン、公開権限が狙われた
self-hosted runner運用チームランナー上の環境変数、クラウド認証情報、SSH鍵が残っている可能性がある
Azure利用組織Azure IMDS、Microsoft Graph、Key Vault関連トークンが収集対象に含まれていた
npmパッケージ公開者盗まれたnpm権限で別パッケージが再公開される可能性がある
Microsoft Defender XDR利用組織Defenderの検知、Threat Analytics、Advanced Huntingで調査できる可能性がある

Red Hatは、現在の調査結果に基づき顧客側で必要な対応はないと説明しています。ただし、これはRed HatのHybrid Cloud Consoleや管理クラウドサービスに関する説明です。自社の開発環境やCI/CDで該当npmパッケージを利用していた場合は、自社側の調査を省略すべきではありません。(Red Hat Customer Portal)

まず確認すべき依存関係

Microsoftの影響リストには、typesfrontend-componentsrbac-clienthost-inventory-clientcompliance-clientpatch-clienthcc-pf-mcphcc-feo-mcphcc-kessel-mcp など、@redhat-cloud-services 配下の多数のパッケージが含まれています。公式リストには32パッケージと各悪性バージョンが掲載されていますが、実務ではまずスコープ単位で検索するのが安全です。(Microsoft)

package.jsonとlockfileを検索する

Linux、macOS、WSLでは、リポジトリ直下で次のように検索します。

grep -R "@redhat-cloud-services/" package.json package-lock.json npm-shrinkwrap.json pnpm-lock.yaml yarn.lock 2>/dev/null

PowerShellでは次のように確認できます。

Select-String -Path package.json,package-lock.json,npm-shrinkwrap.json,pnpm-lock.yaml,yarn.lock -Pattern '@redhat-cloud-services/' -ErrorAction SilentlyContinue

package.json に直接書かれていなくても、lockfileに含まれていれば間接依存としてインストールされていた可能性があります。特にCIでは npm ci によりlockfileどおりに依存関係が復元されるため、lockfileの確認を優先してください。

node_modulesとCIキャッシュも確認する

過去にインストールされた依存関係が、CIキャッシュ、Dockerレイヤー、開発端末の node_modules、社内npmプロキシに残っている場合があります。

find node_modules/@redhat-cloud-services -maxdepth 2 -name package.json -print 2>/dev/null

CI/CDでは、パッケージ名だけでなく次の痕跡も確認します。

確認場所見るべき内容
CIログpreinstallbunbun run@redhat-cloud-services の出力
lockfile悪性バージョンが解決されていないか
npmキャッシュ侵害期間中に取得したtarballが残っていないか
Dockerイメージ影響版を含んだままビルドされていないか
self-hosted runner/tmp 配下の不審なBun実行、資格情報ファイル、改変された設定

Microsoftは、依存関係ツリーの直接・間接利用、影響版をインストールまたはビルドしたシステム、lockfile、ビルドログ、artifact provenanceを確認するよう推奨しています。(Microsoft)

管理者がすぐ行うべき対応

影響が疑われる場合は、「パッケージを更新してから考える」のではなく、調査範囲を固定し、認証情報の流出を前提に封じ込める順序で対応します。

優先度対応失敗しやすいポイント
該当CIジョブとself-hosted runnerを一時停止する先に再ビルドすると、残った認証情報で再感染や追加流出が起きる可能性がある
GitHub、npm、クラウド、Vault、Kubernetes、SSH鍵をローテーションするGitHubのトークンだけを変えて、AzureやKey Vault権限を見落とす
lockfileとCIログを保全するnpm update で証跡が上書きされ、どの版を使ったか分からなくなる
既知の安全なバージョンへ固定するlatest への自動更新だけに頼る
CIキャッシュ、Dockerレイヤー、npmキャッシュを破棄するクリーンビルドしたつもりで古いキャッシュを再利用する
GitHubの不審な公開リポジトリやコミットを監査する個人アカウント側のリポジトリ作成を見落とす
Microsoft Defender XDRで横断調査するエンドポイントだけを見て、クラウドアプリやIDの異常を見ない

Microsoftは、GitHubチームが該当するnpmトークンを無効化した後も、影響を受けた可能性のある認証情報、npmアクセストークン、CI/CDシークレット、クラウド認証情報をローテーションすることを推奨しています。また、GitHub上に「Miasma: The Spreading Blight」という説明を持つ公開リポジトリや、予期しないリポジトリが作られていないか監査することも推奨しています。(Microsoft)

Microsoft Defender XDRで確認すべき設定と検知

Microsoft環境では、Defender製品群を使ってエンドポイント、ID、クラウドアプリ、開発環境を横断的に調査できます。Microsoftは、Microsoft Defender Antivirusのクラウド提供の保護を有効化すること、Microsoft Defender XDRやMicrosoft Defender Vulnerability Managementを使って調査することを推奨しています。(Microsoft)

確認項目管理者が見るべきポイント
Microsoft Defender Antivirusクラウド提供の保護が有効か
Microsoft Defender for EndpointNode.jsからBunを起動する不審なプロセス、資格情報アクセスの検知
Microsoft Defender XDRエンドポイント、ID、クラウドアプリのインシデント相関
Defender Vulnerability Managementredhat-cloud-services パッケージの利用有無
Defender for Cloud AppsGitHub APIによる不審なリポジトリ作成、異常なコミット量、通常と異なる場所からの認証
Microsoft Security Copilot利用権限がある場合、インシデント調査や脅威ハンティングの支援

Microsoftの検知例には、Trojan:JS/ShaiWorm.DAW!MTBTrojan:JS/ObfusNpmJs、不審なNode.jsプロセス、不審なBunランタイム導入、Kubernetes secrets列挙、GitHub APIの不審利用などが含まれます。Microsoft Defender XDR利用者は、DefenderポータルのThreat Analyticsレポートも参照できます。(Microsoft)

Advanced Huntingでの確認例

Microsoftの公式情報では、Bunの一時ディレクトリ実行、Bunのダウンロード、npmからNode.js、Bunへつながるプロセスチェーン、クラウドメタデータエンドポイントへのアクセスなどを確認するKQL例が示されています。以下は調査時に使いやすい形に整理した例です。(Microsoft)

DeviceProcessEvents
| where FileName in~ ("bun", "bun.exe") or ProcessCommandLine has "bun run"
| where FolderPath startswith "/tmp/" or FolderPath has @"\AppData\Local\Temp"
| project Timestamp, DeviceName, AccountName, InitiatingProcessFileName, ProcessCommandLine, FolderPath
| sort by Timestamp desc
DeviceNetworkEvents
| where RemoteIP in ("169.254.169.254", "169.254.170.2")
| where InitiatingProcessFileName in~ ("node", "node.exe", "bun", "bun.exe")
| project Timestamp, DeviceName, RemoteIP, RemoteUrl, InitiatingProcessFileName, InitiatingProcessCommandLine
| sort by Timestamp desc

最初のクエリは、通常の開発フローでは説明しにくい一時ディレクトリ上のBun実行を探すものです。2つ目は、Node.jsやBunプロセスがクラウドメタデータエンドポイントへアクセスした痕跡を探します。Azure VM、コンテナ、self-hosted runnerでクラウドIDを使っている場合は特に確認してください。

開発者が見直すべきnpm運用

今回の攻撃では、アプリケーションコードを実行する前に npm install の段階で悪性コードが動きます。そのため、依存関係の導入手順そのものを見直す必要があります。

緊急時はinstall scriptsを止めて検証する

Microsoftは、検証が完了するまで自動的な依存関係アップグレードを避け、可能な場合は既知の安全なパッケージバージョンに固定し、npm install 時に --ignore-scripts を使ってpreinstallやpostinstallの実行を無効化することを推奨しています。(Microsoft)

npm ci --ignore-scripts

ただし、--ignore-scripts は万能ではありません。正当なパッケージでもインストール時スクリプトを使う場合があり、ビルドやテストが失敗することがあります。恒久対策としては、単にスクリプトを全面禁止するのではなく、次のような運用に寄せるのが現実的です。

対策実務での使い方
lockfile固定CIでは npm ci を使い、レビュー済みのlockfileだけを反映する
自動更新の一時停止インシデント対応中はDependabotなどの自動マージを止める
install scriptsの制限初回検証や本番ビルドでは --ignore-scripts を使い、必要なスクリプトだけ個別に許可する
CIの最小権限化build jobにpublish権限、クラウド管理権限、長期トークンを持たせない
runnerの使い捨て化可能な限りephemeral runnerを使い、ジョブ後に環境を破棄する
provenanceの過信を避ける署名やSLSAだけでなく、公開元CIの権限と変更内容を確認する

AzureやMicrosoft 365管理者が確認すべきポイント

この攻撃はnpmの問題ですが、Microsoft環境にも影響が及ぶ可能性があります。AzureやMicrosoft 365を使っている組織では、CI/CDに渡している権限を中心に確認してください。

確認対象チェック内容
Azure Managed Identityself-hosted runnerやVMに不要なロールが付いていないか
Microsoft Entra IDアプリクライアントシークレット、証明書、フェデレーション資格情報が不要に広く使われていないか
Key VaultCI/CDから読めるシークレットの範囲が広すぎないか
Azureサブスクリプションビルド用IDにContributor以上の権限を常時付与していないか
GitHub Actions OIDCsub、branch、environmentなどの条件が緩すぎないか
GitHub Secrets組織全体に共有されたシークレットが不要なリポジトリから参照可能になっていないか

特に、ビルド用IDに本番環境のKey Vault読み取り権限やサブスクリプション全体のContributor権限を付けている構成は危険です。攻撃者がCIランナー上でクラウドトークンを取得できると、パッケージ侵害がクラウド侵害へ広がる可能性があります。

安全な移行・展開の進め方

影響が疑われるプロジェクトでは、次の順序で安全な状態へ戻します。

フェーズ作業判断基準
封じ込め該当CIジョブ、runner、公開ワークフローを一時停止影響版をインストールした可能性がある環境を増やさない
証跡保全lockfile、CIログ、runnerログ、GitHub監査ログを保存後からインストール時刻と取得バージョンを追える
依存関係修正影響版を除外し、既知の安全なバージョンへ固定lockfile上から影響版が消えている
認証情報更新GitHub、npm、Azure、Vault、Kubernetes、SSH鍵を更新古いトークンでAPIアクセスできない
クリーンビルド新しいrunner、破棄済みキャッシュ、検証済みlockfileで再ビルド古い node_modules やDockerレイヤーを再利用していない
展開後監視Defender XDR、GitHub監査ログ、クラウド監査ログを確認不審なrepo作成、Bun実行、メタデータアクセスがない

ここで重要なのは、パッケージ修正より先に認証情報を整理することです。影響版が実行された後に同じrunnerや同じシークレットで再デプロイすると、修正済みビルドでも侵害済み資格情報が残る可能性があります。

よくある疑問

インストールしただけでも影響を受けるのか

受ける可能性があります。今回の悪性コードはnpmの preinstall フックで動くため、アプリケーションを起動していなくても、npm installnpm ci の段階で実行され得ます。直接依存だけでなく、推移的依存として解決された場合も確認対象です。(Microsoft)

Red Hatのクラウドサービス利用者も対応が必要か

Red Hatは、Hybrid Cloud Consoleのリリースは侵害期間中に行われておらず、該当パッケージはAzure Red Hat OpenShift、ROSA、OpenShift Dedicatedなどの管理クラウドサービスとは関係しないと説明しています。したがって、Red Hatサービス利用だけで直ちに自社CI/CDが影響を受けるとは限りません。ただし、自社プロジェクトで該当npmパッケージを使っていた場合は別問題です。(Red Hat Customer Portal)

provenance署名やSLSAを使っていれば安全か

それだけでは不十分です。今回の攻撃では、侵害されたCI/CD公開フローを通じて、正規に見えるprovenanceを持つ悪性パッケージが公開されました。署名やSLSAは重要ですが、CI/CDの権限、公開ワークフロー、トークン管理、依存関係レビューと組み合わせて使う必要があります。(Microsoft)

Windows開発端末は関係ないのか

関係する可能性があります。Microsoftは、ペイロードがLinux、macOS、Windowsで動作するように各プラットフォーム向けのBunランタイムを動的に取得していたと説明しています。ただし、主な標的はLinuxのCI/CDランナーとみられています。(Microsoft)

まず今日やるべきこと

今回のRed Hat npm Miasma credential-stealing campaignでは、被害確認を「依存パッケージの有無」だけで終わらせないことが重要です。まず、全リポジトリのlockfileで @redhat-cloud-services/ を検索し、該当するCI/CD実行履歴を洗い出してください。次に、影響が疑われるrunnerや開発端末を特定し、GitHub、npm、Azure、Vault、Kubernetes、SSH鍵などの認証情報をローテーションします。

Microsoft Defender XDRを利用している組織は、Threat Analytics、Advanced Hunting、Defender Vulnerability Managementを使い、Bunの不審実行、クラウドメタデータエンドポイントへのアクセス、GitHubでの不審なリポジトリ作成を確認しましょう。

最後に、今後の対策として、CI/CDの最小権限化、ephemeral runnerの採用、lockfileレビュー、install scriptsの制御、GitHub OIDC条件の厳格化を進めることが現実的です。今回の教訓は、サプライチェーン攻撃では「信頼できる名前」よりも「インストール時に何が実行され、どの認証情報に届くか」を基準に設計する必要がある、という点です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次