2026年5月19日、Grafana Labsが公式ブログを公開した。TanStack npmサプライチェーン攻撃(Mini Shai-Hulud)がGitHub環境への侵入経路だったと確認し、5月11日の検出から5月16日の身代金要求・拒否に至る全タイムラインを初公開した。コードベース・内部リポジトリ・ビジネス連絡先・メールアドレスが流出したが、顧客の本番システムへの侵害証拠は見つかっていないという。

監視ツールの雄が、npmサプライチェーン攻撃の踏み台になった。2026年5月11日に14本の正規@tanstack/*パッケージに仕込まれたMini Shai-Huludワームが、Grafana Labs社内の開発環境で実行され、GitHubワークフロートークンが窃取された。攻撃者はそのトークンでGitHub環境に侵入しコードベースをダウンロードし、身代金を要求した。Grafana LabsはFBIの公式立場に沿って支払いを拒否し、5日後に全容を公式ブログで開示した。本記事では2026年5月19日公開の公式ブログ全内容と、5月17日の公式X 6連投スレッドを統合し、確認された事実と残存する未確認事項を整理する。

本インシデントの侵入経路となったTanStack npmサプライチェーン攻撃の詳細はTanStack公式@tanstack/*にマルウェア混入|205パッケージに広がるMini Shai-Huludワームで解説しています。攻撃手法・防御の全体像はサプライチェーンセキュリティ完全ガイド2026をご覧ください。

公式ブログ(2026年5月19日)で明らかになった新事実

Grafana Labsは5月19日に公式ブログ「Grafana Labs security update: latest on TanStack npm supply chain ransomware incident」を公開した。5月17日のX 6連投から2日間で追加開示された最重要情報をまとめる。

公式ブログ(5月19日)で初確認された事実
  • 侵入経路確定:TanStack npmサプライチェーン攻撃(Mini Shai-Hulud)経由でGitHub環境への侵入が発生
  • 検出日:2026年5月11日に悪意のあるアクティビティを検出しインシデント対応を開始
  • 身代金要求日:2026年5月16日に身代金グループから要求を受領
  • 流出データの詳細:ソースコード・GitHub内部リポジトリ・ビジネス連絡先・メールアドレス
  • 対応済み:GitHubワークフロートークンの大規模ローテーション・5月11日以降の全コミット監査・連邦法執行機関への通知
  • 顧客への影響:「顧客は現時点でアクションを取る必要はない」と明言

インシデントの概要:公式X声明スレッド(6連投)と公式ブログの統合

Grafana Labsは2026年5月17日の公式Xスレッド(6連投)に続き、5月19日に公式ブログで詳細を開示した。両方を統合した公式確認情報は以下の通りだ。

Grafana Labs公式声明の要点(X 6連投+公式ブログ統合)
  • (1/6 + blog) TanStack npmサプライチェーン攻撃(Mini Shai-Hulud)経由で不正な第三者がGitHub環境にアクセスできるトークンを入手し、コードベースをダウンロードした
  • (2/6) このインシデント中に顧客データや個人情報がアクセスされた形跡はなく、顧客システムや業務への影響を示す証拠も見つかっていない
  • (3/6 + blog) 侵害された認証情報を無効化し、GitHubワークフロートークンの大規模ローテーションを実施。5月11日以降の全コミットを監査済み
  • (4/6) 攻撃者はGrafanaを脅迫し、コードベースの公開を防ぐために支払いを要求した(5月16日)
  • (5/6) FBIの公式立場に従い、身代金を支払わないことを決定
  • (6/6 + blog) 身代金を支払わないことが適切な道と判断。調査完了次第、追加情報を共有する

このインシデントで重要なポイントは3つだ。

第一に、侵入経路がTanStack npmサプライチェーン攻撃(Mini Shai-Hulud)と公式確認された。これは2026年5月11日に発生した@tanstack/*パッケージへのマルウェア混入事件と同根の攻撃であることを意味する。GitHubワークフロートークンがMini Shai-Huludのペイロードによって窃取された可能性が高い。

第二に、攻撃者はコードベース公開を防ぐ対価として身代金を要求した。これは典型的なデータ窃取型ランサムウェアの恐喝モデルであり、データ暗号化は伴わないことが裏付けられた。

第三に、Grafana LabsはFBIの公式立場に従って身代金支払いを明確に拒否した。オープンソース企業として身代金市場への資金供給を断つ責任ある姿勢は、業界全体にとって重要な前例となる。

公式確認された攻撃経路:TanStack → トークン窃取 → コードベース流出

公式ブログで確定した攻撃の連鎖構造を図示する。

flowchart TD A["TanStack npmサプライチェーン攻撃
Mini Shai-Hulud ワーム
(2026年5月11日)"] --> B["Grafana Labs開発環境で
router_init.js実行
GitHubトークン窃取"] B --> C["窃取したトークンで
GitHub環境に侵入"] C --> D["コードベース・内部リポジトリ
をダウンロード"] C --> E["ビジネス連絡先・
メールアドレスを取得"] D --> F["身代金要求
(2026年5月16日)
Grafanaは拒否"] style A fill:#c0392b,color:#fff style B fill:#e74c3c,color:#fff style C fill:#e67e22,color:#fff style D fill:#d35400,color:#fff style F fill:#8e44ad,color:#fff

TanStack npmサプライチェーン攻撃は、GitHub Actions OIDCトラステッドパブリッシャー経由で公開された正規パッケージにoptionalDependenciesを悪用して悪性ペイロードを仕込み、npm install時に自動実行させる手口だった。2.3MBの難読化ペイロード(router_init.js)がGitHubトークンを含む認証情報を窃取し、分散メッセンジャーネットワーク(Session/Oxen)経由で流出させる設計になっていた。

なぜGitHubトークン1本でコードベースが取れるのか

GitHubのPersonal Access Token(PAT)やGitHub Actionsワークフロートークンは、適切にスコープ設定されていない場合、組織内の複数リポジトリへの読み取り権限を一括で持つ。古典的な「Classic PAT」は特定のリポジトリではなくスコープ(repo、read:orgなど)単位で権限が付与されるため、1本のトークンで組織全リポジトリへのアクセスが可能になる。

# トークンのスコープを確認するコマンド(漏洩したトークンの調査に使用)
curl -H "Authorization: token YOUR_TOKEN" \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/user

# レート制限情報でトークンの有効性を確認
curl -I -H "Authorization: token YOUR_TOKEN" \
  https://api.github.com/rate_limit

Fine-grained PATを使えばリポジトリ単位・権限種別単位でのスコープ制限が可能だが、多くの組織でまだ移行が完了していないのが現実だ。

公式確認されたインシデントタイムライン

公式ブログと公式X声明の両方から確認された時系列を整理する。

日時 出来事 ソース
2026-05-11 ~19:20 UTC TanStack @tanstack/react-router等14パッケージにMini Shai-Huludが公開される TanStack/router #7383
2026-05-11 Grafana Labsが悪意のあるアクティビティを検出しインシデント対応を開始 Grafana公式ブログ
2026-05-15 20:57 UTC ransomware.liveがcoinbasecartelのリークサイトにGrafanaを掲載 ransomware.live
2026-05-16 身代金グループがGrafana Labsに要求書を送付 Grafana公式ブログ
2026-05-17 Grafana Labsが公式Xで6連投スレッドを公開。身代金拒否を表明 Grafana公式
2026-05-19 Grafana Labsが公式ブログでTanStack経由の侵入経路を確認・詳細公開 Grafana公式ブログ

TanStack npmサプライチェーン攻撃が検出されたのと同じ5月11日にGrafana Labsも悪意のあるアクティビティを検出している点が重要だ。両インシデントが同じ攻撃キャンペーン(Mini Shai-Hulud)の一環であることを裏付けている。

coinbasecartelとの関連:身代金を要求した脅威アクター

ランサムウェア追跡サイト「ransomware.live」の記録によると、coinbasecartelというグループが2026年5月15日20:57 UTCにGrafanaを被害者としてリストアップしている。Grafana Labsの公式発表における「攻撃者はGrafanaを脅迫しコードベースの公開を防ぐために支払いを要求した」という記述と一致しており、このグループが今回の身代金要求に関与している可能性が高いと推定される。

ただし、侵入経路はTanStack npmサプライチェーン攻撃(Mini Shai-Hulud)で確定しており、coinbasecartelは身代金の要求者として関与したと見られる。TanStack攻撃キャンペーンの主体とcoinbasecartelが同一グループかどうかは現時点で公式帰属が確認されていない。

coinbasecartelとはどのような脅威アクターか

以下はcoinbasecartelの一般的な手口に関するものです(Bitdefender / InfoStealers.com分析)。
Grafanaへの侵入経路はTanStack npmサプライチェーン攻撃と公式確認されています。

coinbasecartelは2025年9月に活動を開始した比較的新しい脅威グループで、登場から半年あまりで急速に被害規模を拡大している。

coinbasecartelの主要メトリクス(2025年9月〜2026年5月)
  • 累計被害企業数:170社以上
  • 被害国数:34カ国
  • 身代金支払いまでの猶予:侵入後 48時間以内の連絡要求、最大10日間の支払い期限
  • 決済通貨:Bitcoin(BTC)

暗号化なしの純粋なデータ窃取型:一般的なランサムウェアがファイルを暗号化して業務を停止させるのに対し、coinbasecartelはデータを暗号化せず、窃取したデータの公開を脅しに身代金を要求するモデルを採る。Grafana Labsへの恐喝(「コードベース公開を防ぐための支払い要求」)はこのモデルに一致する。

主要な標的セクター:技術・医療・輸送・エネルギー分野で被害報告が多く、Grafana Labsはその「技術」セクターに該当する。

他の著名な被害組織

組織 セクター 規模・特徴
Cognizant IT・コンサルティング 売上約 $21B 規模のグローバルIT大手
ENGIE エネルギー フランスの大手エネルギー企業(旧GDF Suez)
SK Telecom 通信 韓国の最大手通信キャリア
Grafana Labs 監視・可観測性OSS 今回の被害(2026年5月17日公表・5月19日詳細確認)

確定・未確定の事項整理

公式ブログと公式Xスレッドで確認された事実と、依然として調査中の事項を整理する。

区分 内容 ソース
確定 TanStack npmサプライチェーン攻撃(Mini Shai-Hulud)経由で侵入 Grafana公式ブログ
確定 不正な第三者がGitHubワークフロートークンを入手 Grafana公式スレッド(1/6)
確定 ソースコード・内部リポジトリ・ビジネス連絡先・メールアドレスが流出 Grafana公式ブログ
確定 顧客データ・本番システムへのアクセス痕跡なし Grafana公式スレッド(2/6)
確定 GitHubワークフロートークンの大規模ローテーション完了 Grafana公式ブログ
確定 5月11日以降の全コミット監査済み Grafana公式ブログ
確定 連邦法執行機関に通知済み Grafana公式ブログ
確定 身代金要求を受領(5月16日)・拒否 Grafana公式ブログ
未確定 coinbasecartelとTanStack攻撃者の同一性 PIR待ち
未確定 漏洩トークンの具体的スコープ PIR待ち
未確定 侵入から検知までのDwell Time詳細 PIR待ち
未確定 流出コードベースの具体的な範囲・リポジトリ名 PIR待ち

Grafana Labsの過去のセキュリティインシデントとの比較

Grafana Labsはオープンソース企業として、セキュリティインシデントへの透明性の高い対応で知られる。今回の事案と2025年4月のGitHub Actionsインシデントを比較する。

項目 2025年4月インシデント 2026年5月インシデント(今回)
公表日 2025年4月26日 2026年5月17日(詳細は5月19日)
侵入経路 pull_request_targetの設定不備 TanStack npmサプライチェーン攻撃(Mini Shai-Hulud)公式確認
攻撃主体 自動化ボット(hackerbot-claw) coinbasecartel(身代金要求)・Mini Shai-Hulud(侵入)
コードベースのダウンロード なし あり(公式認定)
本番システムへのアクセス なし なし(公式認定)
顧客データの漏洩 なし アクセス痕跡なし(公式認定)
身代金要求 なし あり(5月16日)・拒否済み
事後対応 PIR公開・Zizmor/TruffleHog導入 トークンローテーション・全コミット監査・PIR予定

2025年のインシデントは「コードは見られていない、顧客データも無事」という比較的軽微な結果で終息した。今回はコードベースのダウンロード自体は確認されており、その意味では深刻だが、公式発表により顧客データ・本番システムへのアクセス痕跡はなしと明確に否定された点は重要だ。

コードベース流出が持つ意味:なぜオープンソースでも危険なのか

Grafanaは主要なコードをオープンソースとして公開しているが、全てのコードが公開されているわけではない

公式ブログで確認された流出データの内訳
  • ソースコード(内部リポジトリ含む)
  • GitHub内部リポジトリ
  • ビジネス連絡先とメールアドレス

また、オープンソースであっても、コードベース全体を入手した攻撃者は以下のことが可能になる。

既知の脆弱性パターンの大規模探索:公開コードでは読みにくい部分も、ローカルにクローンすれば高度なSAST(Static Application Security Testing)ツールで網羅的にスキャンできる。例えば2026年3月に修正されたCVE-2026-27876(SQLエクスプレッション任意ファイル書き込み、CVSS 9.1)の類似パターンを新たに探索するといった用途が考えられる。

ゼロデイ脆弱性の発掘:OSSとして公開されていないプライベートコードに未修正の脆弱性が潜んでいれば、攻撃者がそれを発見・悪用する時間を得る。

内部アーキテクチャの把握:コードを読むことで内部APIのエンドポイント、認証フロー、データの流れを把握し、標的型攻撃の精度を高めることができる。

組織が今すぐ実施すべき対策

Grafana Labsを直接利用している組織だけでなく、GitHubを使って開発している組織全体に当てはまる対策を整理する。

1. TanStack依存関係の緊急確認(今回の直接対策)

本インシデントの侵入経路がTanStack npmサプライチェーン攻撃と確認されたため、まず自社のlockfileを確認する。

# 感染バージョンの@tanstack/*パッケージがlockfileに含まれるか確認
grep -E "@tanstack/(history|router|react-start|router-core)" \
  package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/null \
  | grep -E "1\.16[1-9]\.[0-9]+"

# 感染指紋ファイルがキャッシュに残っていないか確認
find ~/.npm ~/.pnpm-store -name "router_init.js" 2>/dev/null

2. 既存GitHubトークンの棚卸しと権限の最小化

# GitHub CLIで組織内のPersonal Access Tokensを確認(管理者権限が必要)
gh api /orgs/{ORG}/personal-access-tokens \
  --jq '.[] | {id: .id, name: .name, created_at: .created_at, expires_at: .expires_at}'

# TruffleHogでリポジトリ内の漏洩シークレットをスキャン
docker run --rm -it \
  -v "$(pwd):/repo" \
  ghcr.io/trufflesecurity/trufflehog:latest \
  git file:///repo --only-verified

Fine-grained PATへの移行は組織ポリシーとして強制できる。GitHub Organizationの設定で「Personal access tokens → Fine-grained tokens」を必須化し、Classic PATの新規発行を防ぐことを推奨する。

3. GitHub OIDCへの移行:トークンを発行しないCI/CDアーキテクチャ

最も根本的な対策は、静的なGitHubトークンをCI/CDパイプラインから完全に排除することだ。

name: Secure Deploy

permissions:
  id-token: write   # OIDC トークン取得に必要
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # 静的なトークンをSecretに保存する代わりにOIDCで一時認証情報を取得
      - name: Configure AWS Credentials via OIDC
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123456789012:role/GitHubActionsRole
          aws-region: ap-northeast-1

このアーキテクチャでは、長期間有効な静的トークンが存在しないため、トークンを窃取されるリスク自体を排除できる。

4. トークン使用のリアルタイム監視

# GitHub 組織の監査ログで不審なアクセスを検索
gh api \
  "/orgs/{ORG}/audit-log?phrase=action:git.clone&per_page=100" \
  --jq '.[] | {
    action: .action,
    actor: .actor,
    repo: .repo,
    created_at: .created_at,
    country_code: .country_code
  }'

Canaryトークン(特定のURLや認証情報を含むダミートークン)を組み合わせることで、漏洩を秒単位で検知できる体制が作れる。

セキュリティ体制の成熟度チェックリスト

GitHub環境セキュリティ チェックリスト(Grafana Labs事案を踏まえた版)
  • [ ] TanStack等のnpm依存関係にMini Shai-Hulud感染バージョンがないか確認した
  • [ ] CI/CDランナー上のGitHubトークンをローテーションした
  • [ ] 組織のClassic PATを全て棚卸しし、Fine-grained PATに移行した
  • [ ] CI/CDパイプラインでGitHub OIDCを使い、静的トークンを排除した
  • [ ] TruffleHogまたはgitleaksでリポジトリ内のシークレットをスキャンした
  • [ ] ブランチ保護ルール(必須レビュー・ステータスチェック)を全主要リポジトリに適用した
  • [ ] 組織の監査ログを外部SIEMに転送し、異常なgit.cloneを検知できる状態にした
  • [ ] GitHub Actionsのpermissionsを各ジョブに明示的に設定した
  • [ ] 重要リポジトリにCanaryトークン・ファイルを配置した
  • [ ] インシデント発生時のトークン一括無効化手順を文書化・テストした

最新パッチの適用確認

今回の事案とは別に、直近でGrafanaには複数の重大な脆弱性が修正されている。

# 現在稼働しているGrafanaのバージョン確認
curl -s http://localhost:3000/api/health | jq .version

# Grafana公式APIで最新リリースを確認
curl -s https://api.github.com/repos/grafana/grafana/releases/latest \
  | jq '{version: .tag_name, published: .published_at, url: .html_url}'

直近の主要修正パッチ:

  • v12.4.2 / v12.3.6 / v12.2.8 / v12.1.10 / v11.6.14(2026年3月25日リリース)
    • CVE-2026-27876(CVSS 9.1 Critical):SQLエクスプレッションによる任意ファイル書き込み
    • CVE-2026-27880(CVSS 7.5 High):OpenFeature DoS

Grafana利用者への影響評価

公式ブログで「顧客の本番システムまたは業務への侵害の証拠は見つかっておらず、顧客は現時点でアクションを取る必要はない」と明言された。

Grafana Cloud利用者:本番システム・顧客データへのアクセス痕跡なしと確認された。即時のサービス利用への影響はないが、念のためAPIキー・サービスアカウントの権限棚卸しを推奨する。

Grafana OSS(セルフホスト)利用者:コードベースを入手した攻撃者が新たな脆弱性を発見・悪用するリスクは中長期で残存する。直近の重大脆弱性(CVE-2026-27876 CVSS 9.1)はパッチ済みバージョン(v12.4.2以降)への更新で対処できている。

自社でGrafanaのビルドパイプラインに依存している組織:5月11日以降のGrafana公式リリースのコミット監査は完了しているとのことだが、ビルドアーティファクトの完全性確認(コンテナイメージのダイジェスト検証など)を推奨する。

インシデント対応の透明性:Grafana Labsが示した開示姿勢

今回の発表で注目すべき点は、身代金要求とその拒否を即日かつ公然と開示し、さらに2日後に侵入経路の詳細まで公式ブログで開示したことだ。

身代金拒否が業界に与える影響
  • データ窃取型ランサムウェアグループへの資金供給を断つ姿勢の表明
  • 「コードベース公開を防ぐための支払い」という恐喝モデルへの先例
  • オープンソース企業として透明性を選択した判断の実例
  • FBI公式立場の権威付け(IC3が長年推奨してきた立場)の実例化

詳細なPost-Incident Review(PIR)は調査完了後に公開される予定で、続報のキャッチアップが望まれる。

まとめ:TanStack npmサプライチェーン攻撃がGrafana侵害に連鎖した教訓

Grafana Labsの今回の事案は、npmサプライチェーン攻撃が開発者環境経由でGitHub環境全体の侵害に連鎖するという新たなリスクシナリオを現実のものとした。公式ブログで確認された事実は次の4点に集約できる。

公式情報で確認された4つの重要事実
  • 侵入経路はTanStack npmサプライチェーン攻撃(Mini Shai-Hulud)と公式確認
  • 流出データはソースコード・内部リポジトリ・ビジネス連絡先・メールアドレス
  • 顧客の本番システムへのアクセス痕跡なし、顧客は現時点でアクション不要
  • 身代金要求(5月16日)をFBI公式立場に沿って拒否

npm依存関係のnpm installは今や「コードのダウンロード」であるだけでなく、「任意コードの実行」でもある。ignore-scripts=trueでインストール時スクリプトを無効化し、CI/CDランナー上では最小権限のGitHubトークンを使うか、GitHub OIDCで静的トークンを排除する——これが今回の事案が示した直接的な教訓だ。

Grafana Labs公式の続報チェックポイント
  • grafana.com/blog — 公式ブログ(詳細インシデントレポート・PIR)
  • grafana.com/security — セキュリティアドバイザリ
  • @Grafana(X/Twitter)— 公式リアルタイムアップデート
  • github.com/grafana/grafana/security — GitHubセキュリティアドバイザリ

参照ソース

  1. Grafana Labs security update: latest on TanStack npm supply chain ransomware incident(2026年5月19日) — 公式ブログ。TanStack npmサプライチェーン攻撃を侵入経路として確認、タイムライン・流出データ・対応策を詳細開示。
  2. Grafana Labs公式X: @grafana 6連投スレッド(2026年5月17日) — GitHub環境への不正アクセスとコードベースダウンロード公表・身代金拒否表明。
  3. Several npm latest releases are potentially compromised · Issue #7383 · TanStack/router — Mini Shai-Hulud(TanStack側)の詳細レポート、IOC一覧。
  4. Mini Shai-Hulud is Back: A Self-Spreading Supply Chain Attack Hits the npm Ecosystem — StepSecurity — ペイロード逆解析、Bun起動フロー。
  5. Grafana Labs公式ブログ: Grafana security update: no customer impact from GitHub workflow vulnerability(2025年4月) — 2025年4月インシデントのPost-Incident Review。
  6. Grafana security release: Critical and high severity security fixes for CVE-2026-27876 and CVE-2026-27880 — 直近の重大CVE修正パッチ情報。
  7. Bitdefender Business Insights: No Encryptors, No Problem: The Coinbase Cartel Ransomware Group — 累計170社/34カ国・古いログ購入→正規ログイン手口の分析。
  8. ransomware.live: Victim: Grafana – coinbasecartel(2026年5月15日 20:57 UTC掲載) — 身代金グループによる被害者掲載。
  9. FBI Internet Crime Complaint Center (IC3): ランサムウェア身代金支払いに関する公式立場。