この記事ではClaude Codeに特化して解説します。Claude Code全般は Claude Code完全ガイド2026:インストールから本番運用まで をご覧ください。

📌 Claude Codeの最新バージョン情報
本記事は2026年4月時点の事件まとめです。最新のClaude Code(v2.1系)の機能・変更点は Claude Code 2.1.108ガイドClaude Codeとは|2026年完全解説 をご覧ください。

同じ日・同じレジストリ、でも全く別の問題

3月31日、Claude Codeに関連して2つのセキュリティインシデントが報告された。SNSでは「Claude Codeがハッキングされた」と混同されて拡散したが、原因・影響・対応策は全く異なる

flowchart TB subgraph E1["事件① ソースマップ混入"] direction TB A1["ビルド設定ミス"] --> B1["️ .mapファイルが
npmに混入"] B1 --> C1["51万行のソース
が閲覧可能に"] C1 --> D1["️ 攻撃研究コスト低下
(即時被害なし)"] end subgraph E2["事件② axiosサプライチェーン攻撃"] direction TB A2["メンテナアカウント
乗っ取り"] --> B2["RAT入りaxios
をnpmに公開"] B2 --> C2["npm install で
マルウェア実行"] C2 --> D2["機密情報窃取
(実害の可能性)"] end style D1 fill:#eab30822,stroke:#eab308 style D2 fill:#ff6b6b22,stroke:#ff6b6b
  事件① ソースマップ漏洩 事件② axiosマルウェア
原因 Anthropicのビルド設定ミス axiosメンテナのアカウント乗っ取り
影響範囲 Claude Codeの開発コードが閲覧可能 npm installした全プロジェクト
緊急度 中(直接被害なし) 高(RAT感染の可能性)
対応 Anthropic側で対応済み ユーザー自身で感染チェックが必要
Claude Code固有か Yes(Anthropicのパッケージ) No(axios依存の全パッケージが対象)

事件①:ソースマップが「設計図ごと出荷」してしまった

Claude Code v2.1.88のnpmパッケージに、Source Mapファイル(.map)が誤って同梱された。

Source Mapとは、圧縮・難読化されたコードと元のソースコードの「対応表」だ。開発時のデバッグには便利だが、本番に含めると元のコードが丸見えになる。

■ リーク前のnpmパッケージ(12MB単一ファイル)
var X6=function(K8){return K8.split("").reverse().join("")};
var Q3=X6("edoCresu")+"."+K8("noitcennoc");
→ 変数名が無意味な記号。解読には専用ツールと膨大な労力が必要

■ ソースマップ適用後(元のTypeScript)
const reverseString = (input: string): string => {
  return input.split("").reverse().join("");
};
const endpoint = reverseString("userCode") + "." + "connection";
→ 変数名・コメント・構造がすべて復元。1,900ファイル・51万行が読める状態
flowchart LR A["TypeScript
1,902ファイル
512,000行"] -->|Bunでビルド| B["minified JS
12MB・1ファイル"] A -->|Bun自動生成| C["️ .mapファイル"] B --> D["npm publish"] C -->|".npmignoreで
除外し忘れ"| D D --> E["誰でも
npm installで取得"] style C fill:#ff6b6b,stroke:#cc5555,color:#fff

なぜ起きたのか:ブラックリスト vs ホワイトリスト

Anthropicは .npmignore(ブラックリスト方式)でパッケージから除外するファイルを管理していた。Bunバンドラーがデフォルトで .map を生成する仕様と噛み合わず、漏れた。

// ❌ ブラックリスト方式(Anthropicが使っていた方法)
// .npmignore に書かれていないファイルタイプは全部入る
// → 新しいファイルタイプ(.map等)が漏れるリスク

// ✅ ホワイトリスト方式(推奨)
// package.json
{
  "files": [
    "dist/index.js",    // ← これだけ入る
    "README.md",
    "LICENSE"
  ]
  // ↑ ここに書いていないファイルは絶対に含まれない
}

漏洩の影響:攻撃者の「研究コスト」が下がった

漏洩したのはCLIツールの開発コードのみ。AIモデル本体やユーザーデータは含まれていない。

ただし、セキュリティモデル・権限制御の実装・内部API構造・107個のフィーチャーフラグが可視化されたことで、攻撃者が脆弱性を探すコストは劇的に低下した。詳細はClaude Codeソースコード流出の全貌で解説している。

事件②:Claude Code axios依存を狙ったサプライチェーン攻撃

週1億ダウンロードのHTTPライブラリ「axios」のメンテナアカウントが乗っ取られ、RAT(Remote Access Trojan)入りの偽バージョンがnpmに公開された。

sequenceDiagram participant 攻撃者 participant npm participant 開発者PC Note over 攻撃者: 18時間前から準備 攻撃者->>npm: ① plain-crypto-js(偽ライブラリ)を登録 攻撃者->>npm: ② axiosメンテナのアカウント乗っ取り 攻撃者->>npm: ③ RAT入りaxios v1.14.1 / v0.30.4 を公開 Note over npm: 汚染期間: 3/31 09:21〜12:29(JST) 開発者PC->>npm: npm install(通常の依存解決) npm-->>開発者PC: axios v1.14.1 + plain-crypto-js Note over 開発者PC: postinstallスクリプトで自動実行 開発者PC->>開発者PC: ④ OS判定 → RAT設置 開発者PC->>開発者PC: ⑤ マルウェア自己削除(痕跡消去) 開発者PC->>攻撃者: ⑥ 機密情報を外部送信

このマルウェアの特徴

plain-crypto-js/
├── package.json          # postinstall でスクリプト自動実行
└── scripts/
    ├── install.js        # OS判定 + RAT配置
    ├── macos_payload     # → /Library/Caches/com.apple.act.mond
    ├── windows_payload   # → %PROGRAMDATA%\wt.exe
    └── linux_payload     # → /tmp/ld.py
  • 全OS対応:macOS、Windows、Linuxそれぞれに専用ペイロード
  • 自己削除:実行後に plain-crypto-js ディレクトリを削除して痕跡を消す
  • Claude Code固有ではない:axiosに依存するすべてのnpmパッケージが対象

事件①の対応:ソースマップ漏洩はユーザー側の対応不要

ソースマップ漏洩はAnthropic側のビルド設定ミスであり、ユーザー環境への直接的な被害はない。Anthropicはソースマップを除去したアップデートを即座にプッシュし、以前のバージョンをレジストリから削除済み。

ユーザー側で必要な対応はない。ただし、Claude Codeのセキュリティモデルや内部実装が公開されたことで、今後新たな脆弱性が発見される可能性はある。通常通りアップデートを適用しておけば問題ない。

# Claude Codeを最新版に更新(念のため)
claude update

Claude Code axiosマルウェアの感染チェック手順

こちらはユーザー自身での確認が必要。axiosに依存するnpmパッケージすべてが対象で、Claude Code固有の問題ではない。

Step 1:axiosのバージョンを確認する

# npm の場合
npm list axios
# pnpm の場合
pnpm list axios
# yarn の場合
yarn list --pattern axios

# → [email protected] または [email protected] が出たら汚染バージョン
# → [email protected][email protected] 以前なら安全

Step 2:マルウェア本体の存在確認

# plain-crypto-js(RAT本体)が存在するか
ls node_modules/plain-crypto-js 2>/dev/null \
  && echo "🔴 感染の可能性あり" || echo "✅ 見つからない"

# 複数プロジェクトを一括チェック
find ~/projects -name "package-lock.json" -exec grep -l "plain-crypto-js" {} \;
flowchart TD A["axiosを使っている?"] -->|No| B["影響なし"] A -->|Yes| C{"3/31 09:21〜12:29 JST に
npm install した?"} C -->|No| D["汚染期間外
念のためStep 2も推奨"] C -->|"Yes / 不明"| E["Step 2: バージョン確認"] E --> F{"v1.14.1 or v0.30.4
が見つかった?"} F -->|No| G["汚染バージョンなし"] F -->|Yes| H["Step 3: RAT痕跡確認"] style B fill:#22c55e22,stroke:#22c55e style D fill:#22c55e22,stroke:#22c55e style G fill:#22c55e22,stroke:#22c55e style H fill:#ff6b6b22,stroke:#ff6b6b

Step 3:RAT痕跡の確認

# macOS
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null \
  && echo "🔴 RAT検出" || echo "✅ 見つからない"

# Windows(PowerShell)
# Test-Path "$env:PROGRAMDATA\wt.exe"

# Linux
ls -la /tmp/ld.py 2>/dev/null \
  && echo "🔴 RAT検出" || echo "✅ 見つからない"

Step 4:感染確定時の対応

# 1. マルウェアの除去
rm -f /Library/Caches/com.apple.act.mond        # macOS
rm -rf node_modules/plain-crypto-js

# 2. クリーンインストール
rm -rf node_modules package-lock.json
npm install

# 3. 認証情報のローテーション(最重要)
# RATがアクセスした可能性があるもの全て:
ローテーション対象 確認場所 操作
APIキー .env, 環境変数 各サービスのダッシュボードで再発行
SSHキー ~/.ssh/ ssh-keygen で新規作成 → GitHubに登録し直し
AWSクレデンシャル ~/.aws/credentials IAMコンソールでキーローテーション
CI/CDシークレット GitHub Actions, etc. リポジトリ設定から再設定
npmトークン ~/.npmrc npm token revokenpm login

注意:これはClaude Code固有の問題ではない

axiosの汚染はnpmエコシステム全体に影響するサプライチェーン攻撃だ。Claude Codeに限らず、axiosを依存関係に持つすべてのNode.jsプロジェクトが確認対象になる。自分のプロジェクトの package-lock.json をチェックしよう。

再発を防ぐ:npmパッケージ公開の3つのガード

今回の事件①(ソースマップ漏洩)を他人事にしないために。npmパッケージを公開するなら、この3つを入れておく。

ガード1:パブリッシュ前の中身確認

# パッケージに何が含まれるか事前確認
npm pack --dry-run

# ソースマップが混入していないかチェック
npm pack --dry-run 2>&1 | grep -i "\.map"
# → 何も出なければOK。出たら除外が必要

ガード2:package.jsonでホワイトリスト管理

{
  "name": "my-package",
  "files": [
    "dist/",
    "README.md",
    "LICENSE"
  ]
}

.npmignore のブラックリスト方式は「書き忘れ」が起きる。files フィールドなら「書いたものだけ入る」。

ガード3:CIにソースマップ検証を追加

# .github/workflows/publish.yml
- name: ソースマップ混入チェック
  run: |
    if npm pack --dry-run 2>&1 | grep -q "\.map"; then
      echo "::error::ソースマップがパッケージに含まれています"
      exit 1
    fi

- name: パッケージサイズ異常検知
  run: |
    SIZE=$(npm pack --dry-run 2>&1 | tail -1 | awk '{print $NF}')
    echo "パッケージサイズ: $SIZE"
    # ソースマップ混入時はサイズが異常に大きくなる

教訓:パニックではなく切り分けが大事

flowchart LR subgraph WRONG["SNSで起きたこと"] W1["2つの事件が混同"] --> W2["Claude Codeが
ハッキングされた!"] W2 --> W3["Codexに移行すべき!"] end subgraph RIGHT["正しい対応"] R1["事件を切り分ける"] --> R2["自分の影響範囲を
特定する"] R2 --> R3["該当するなら
感染チェック+対処"] end style WRONG fill:#ff6b6b11,stroke:#ff6b6b style RIGHT fill:#22c55e11,stroke:#22c55e
  • 事件①(ソースマップ)は「攻撃の準備がしやすくなった」段階。直接被害はなく、Anthropic側で対応済み
  • 事件②(axios)は「すでに実害の可能性がある」ステージ。npm版ユーザーは上記の感染チェックを実行すべき
  • curl版(ネイティブ版)ユーザーはaxiosの影響を受けないと考えられる。公式はnpm非推奨でネイティブ版への移行を案内済み

パニックではなく、事実の切り分けと段階的な対応。それが、この手のインシデントを乗り切る最善策だ。

Claude Code公式ドキュメントと関連リソース

今回の事件を受けて、Claude Codeのセキュリティモデルや正しい使い方を公式ドキュメントで改めて確認しておくことを推奨する。

リソース 内容 URL
Claude Code公式ドキュメント インストール方法、設定、使い方の公式リファレンス docs.anthropic.com
Claude Code セキュリティガイド 権限モデル、信頼境界の解説 docs.anthropic.com/security
Claude Code GitHub 公式リポジトリ、Issue報告 github.com/anthropics/claude-code

Claude Codeの内部設計思想を理解するにはアーキテクチャ解説記事も参考になる。また、Claude Code以外の選択肢を検討する場合はClaude Code vs Cursorの比較記事で機能差を確認できる。

関連記事: Claude Code完全ガイド2026:インストールから本番運用まで

参照ソース