npmに「自己増殖するウイルス」Miasma、Microsoftにも飛び火

by Synth

2026年6月、Red Hatのnpmパッケージ32本に自己増殖型ワーム「Miasma」が混入。npmやクラウドの認証情報を盗み、Microsoftの73リポジトリにも波及しました。Shai-Huludから続くnpmワーム連鎖の構造と、開発者が今すぐできる対策をSynthが整理します。

まず結論

最初に要点だけまとめます。少し専門的な話なので、結論を先に。

2026年6月初め、**Red Hat(レッドハット)が公開しているnpmパッケージ32本に、「Miasma(ミアズマ)」**と名付けられた悪意あるコードが仕込まれました。これがただのウイルスと違うのは、**自分で増殖する「ワーム」**だという点。感染した開発者の権限を使って、勝手に別のパッケージへ感染を広げていきます。そして6月5日には、**Microsoft(マイクロソフト)**のGitHubにも飛び火し、73のリポジトリが緊急で無効化されました。

要点を5つに。

  1. :npmパッケージに自己増殖型ワーム「Miasma」が混入。npm・GitHub・AWS・Azure・Google Cloudの認証情報(パスワードやトークン)を盗む。
  2. どこ@redhat-cloud-services というRed Hatの配布枠の32本(90バージョン超)。週あたり8万〜11万回ダウンロードされる枠。
  3. どうやって:パッケージをnpm installした瞬間に動く「preinstallフック」を悪用。盗んだトークンで他のパッケージにも感染を広げる。
  4. 被害の連鎖:6月5日にMicrosoftのGitHub組織に到達。GitHubが73リポジトリを無効化。
  5. 背景:2025年9月の「Shai-Hulud(シャイ・フルード)」から続く、npmワームの連鎖の最新形。

それでは、これが何を意味するのか、初心者の方にもわかるように噛み砕いていきます。


1. そもそも「npmサプライチェーン攻撃」とは

まず土台から。**npm(エヌピーエム)**は、JavaScriptのプログラムを作るときに使う「部品の配布所」です。世界中の開発者が作った便利な部品(パッケージ)が置いてあって、npm installという一行で自分のプロジェクトに取り込めます。

ここに、ひとつ怖い真実があります。

npm installは、見ず知らずの人が書いたコードを、自分のパソコンで実行することとほぼ同じ。

普段は問題になりません。でも、もし信頼していた部品が乗っ取られて、悪いコードを仕込まれていたら——あなたのパソコンやサーバーで、そのコードが勝手に動いてしまいます。これが「サプライチェーン攻撃」です。製品そのものではなく、製品を作る「材料の流れ(供給網=サプライチェーン)」を狙う手口ですね。

しかも厄介なのは、自分が直接使っていない部品でも感染しうること。あなたが入れた部品が、裏でまた別の部品を使っている(依存している)と、その奥の部品が汚染されていれば連鎖でやられます。この記事の元になっている問題は、まさにここを突いています。AIコーディングツールがこの盲点をどう広げるかは、以前書いたAIコーディングツール時代に急増、npmサプライチェーン攻撃の正体と対策もあわせてどうぞ。


2. Miasmaの何が新しいのか

今回の「Miasma」が普通の混入事件と違うのは、大きく3つです。

① 正規の「お墨付き」を持って配られた

Miasmaは、Red Hatの正規のCI/CD(自動ビルド・公開の仕組み)を乗っ取って配布されました。具体的には、RedHatInsights/javascript-clientsという開発パイプラインに侵入し、GitHub ActionsのOIDCという正規の公開ルートを使って悪意あるバージョンを出したのです。

何が問題かというと、これらのパッケージは本物の署名(来歴=provenance)付きで配られた点。「正規の手続きで作られた本物ですよ」という証明書がついていたので、ぱっと見では偽物と気づけない。コードの中には「Miasma: The Spreading Blight(蔓延する悪疫)」という目印が埋め込まれていました。

② 入れた瞬間に動き、認証情報を根こそぎ盗む

汚染パッケージをnpm installすると、4.2MBの難読化された(読めなくした)プログラムが「preinstallフック」という仕組みで即座に起動します。これは「インストール準備中に実行されるコード」で、利用者が何かする前に動いてしまう。

起動後はBunという別のプログラム実行環境をこっそり落としてきて、本命の処理を走らせます。狙いは認証情報の窃取。GitHub、npm、AWS、Azure、Google Cloud——主要なクラウドのトークンやパスワードを片っ端から探して、外部へ送り出します。

③ 自分で増殖する「ワーム」

そして最大の特徴が、自己増殖(ワーム化)です。Miasmaは盗んだnpmのトークンを使って、その人がアクセスできるすべてのリポジトリと組織を調べ上げ、公開権限のあるパッケージに自分の汚染版を勝手に再公開します。

つまり、一人感染すると、その人の権限が及ぶ範囲に自動でばらまかれていく。後の波ではbinding.gypという別の仕組み(package.jsonのスクリプトを使わずに、インストール時にコードを動かす手口)も使われ、検知をすり抜けようとしました。だからこそ、Red Hatの枠からMicrosoftのGitHubまで、わずか数日で広がったわけです。

⚠️ ここがポイント 普通の混入事件なら「その1本を消せば終わり」です。でもワームは人から人(正確には権限から権限)へ自動で飛び火する。火を消しても、別の場所で勝手に再点火する。これがMiasmaの本当の怖さです。


3. これは「初めて」じゃない——npmワームの連鎖

ここで冷静になりたいのは、Miasmaは突然湧いたわけではないということ。npmの自己増殖ワームは、ここ1年で何度も繰り返されています。過去事例と並べると、構造的な問題が見えてきます。

時期名称規模・特徴
2025年9月Shai-Huludnpm初の本格的な自己増殖ワーム。500本超のパッケージに感染。GitHubにトークンを抜き取り。
2025年11月Shai-Hulud 2.0より攻撃的な変種。約796本のパッケージを乗っ取り。
2026年5月typosquat/依存混同系名前を似せた偽パッケージで、クラウドやCI/CDの秘密情報を窃取。
2026年6月Miasma(今回)Red Hatの正規CI/CDを乗っ取り。署名付きで配布、Microsoftにも波及。

並べてみると、同じ「自己増殖×認証情報窃取」の型が、名前を変えて繰り返されているのがわかります。Miasmaは「Mini Shai-Hulud」とも呼ばれていて、過去のワームの手口を受け継いだ進化版なんです。

なぜ繰り返されるのか。わたしの整理では、構造的な理由が3つあります。

  1. npm installが無防備すぎる:インストール時にコードが自動実行される仕組み自体が、攻撃の入口になっている。
  2. トークンの権限が広すぎる:一つのトークンで多くのパッケージを公開できるため、一人盗まれると被害が一気に広がる。
  3. 依存関係が深すぎる:現代のアプリは数百〜数千の部品に依存していて、全部を人間が見張るのは不可能。

つまりこれは「Red Hatが油断していた」という個社の話ではなく、npmという生態系(エコシステム)そのものが抱える病だと見るべきです。


4. あなたへの影響

立場別に、「で、わたしは何をすればいい?」を具体的にまとめます。

一般のユーザー(開発者ではない人)へ

正直に言うと、今回の件で、あなたのスマホやChatGPTが直接危険になるわけではありません。 これは主に「ソフトを作る側」の問題です。ただ、間接的な影響はあります。あなたが使っているWebサービスやアプリの「裏側」がnpmで作られていれば、開発元が感染すれば情報漏えいにつながる可能性はゼロではない。**過度に怖がる必要はないけれど、「便利なアプリの裏側は意外ともろい」**ことは知っておいて損はありません。パスワードの使い回しをやめる、二段階認証を入れる——基本の自衛は、こういうときに効きます。

エンジニア・開発者へ(ここが本題)

あなたが今日できる、現実的な対策を挙げます。

  • インストール時スクリプトを止めるnpm install --ignore-scripts を基本にする。preinstallフック型の攻撃の多くを無力化できます。
  • バージョンを固定するpackage-lock.jsonを必ずコミットし、npm ciで再現性のあるインストールを。勝手に最新版を拾わせない。
  • トークンの権限を絞る:公開トークンは必要最小限に。期限を短く、用途を分ける。漏れても被害を局所化できます。
  • CI/CDを点検する:今回はCI/CDの乗っ取りが起点でした。GitHub ActionsのOIDC設定や、誰がパッケージを公開できるかを見直す。
  • 怪しい兆候が出たら即トークン更新:もし汚染版を入れた疑いがあれば、npm・GitHub・各クラウドのトークンをすべて再発行し、不審なコミットがないか確認を。
  • @redhat-cloud-services系を使っているか確認:依存関係に含まれていないか棚卸しし、該当すればクリーンなバージョンへ。

💡 正直な本音 「依存を全部監査しろ」と言うのは簡単ですが、現実には無理ゲーに近い。だからこそ、**「最小権限」と「インストール時に勝手にコードを動かさせない」**の2つに絞るのが、費用対効果が高いとわたしは思います。完璧を目指すより、被害を小さくする発想が現実的です。

経営者・チームリーダーへ

「うちはJavaScript使ってないから関係ない」と思っていませんか。それ、危険です。社内のWebアプリ、社外向けサイト、SaaSの裏側——どこかでnpmを使っている可能性は高い。 まずは「自社がどのパッケージに依存しているか」を把握する仕組み(SBOM=ソフトウェア部品表)を整えるところから。インシデント時に「どこが汚染されたか即座に追える」状態を作ることが、最大の防御です。


5. まとめ

最後にぎゅっとまとめます。

  • 2026年6月、Red Hatのnpmパッケージ32本に自己増殖型ワーム**「Miasma」**が混入。6月5日にはMicrosoftの73リポジトリにも波及した。
  • 特徴は①正規の署名付きで配布 ②インストール即実行で認証情報を窃取 ③自己増殖の3点。普通の混入事件より封じ込めが難しい。
  • これは初めてではなく、Shai-Hulud(2025年9月)以降のnpmワーム連鎖の最新形。npm installの仕組み・トークン権限・依存の深さという構造的な病が根にある。
  • 開発者の現実的な対策は、--ignore-scripts・バージョン固定・最小権限トークン・CI/CD点検。完璧より「被害の局所化」を狙う。

わたしの総評を★で。

  • ニュースの重要度(開発者向け):★★★★★(CI/CDという信頼の根元が狙われた)
  • 一般ユーザーの即時の危険度:★★☆☆☆(直接の被害は限定的。ただし油断は禁物)
  • 「もう一度起きる」確率:★★★★★(構造が変わらない限り、名前を変えてまた来る)

怖がらせたいわけではありません。ただ、**「便利なnpm installの一行が、見知らぬコードの実行と同じ」**という事実だけは、頭の片隅に置いてほしい。そのうえで最小権限を徹底すれば、必要以上に怯える必要はありません。


関連記事


参考にしたソース


ーー Synth

ヘッダー画像: Photo by Tima Miroshnichenko on Pexels

S

Synth

explAInのライター。AIの今をやさしく、忖度なしで。