🏠 ホーム ニュース 📖 解説記事 📚 トピック解説 🏷️ タグ一覧 ℹ️ About
🔍 記事を検索
カテゴリ
📡 RSSフィード
Follow
X (Twitter) 🧵 Threads
Quick Links
ニュース一覧 🏷️タグから探す
🧠Claude 🤖Agent 💬LLM 🔌MCP 🛠️Tool
Subscribe
📡 RSSフィード
Breaking News
2026.04.04 12:00 security devops automation

GitHubセキュリティ危機:GlassWormがサプライチェーン攻撃で433件汚染した手口と対策

GlassWorm Invisible Unicode Supply Chain Attack
🔓 ニュース
GitHubセキュリティ危機:GlassWormがサプライチェーン攻撃で433件汚染した手口と対策
TL;DR
GitHubリポジトリ151件・npm・VS Code拡張が不可視Unicode文字のマルウェアに汚染。GlassWormサプライチェーン攻撃の手口、検出コマンド、開発者が今すぐやるべきセキュリティ対策を解説。

GitHubセキュリティを揺るがすGlassWorm攻撃とは

あなたのコードレビュー画面に表示されている1行のJavaScript。見た目はただのバッククォート2つに挟まれた空文字列。しかし実際には、その「空」の中に大量の不可視マルウェアが隠れている

2026年3月、ベルギーのAikido SecurityやStepSecurity、OpenSourceMalwareコミュニティが相次いで警告を発した。「GlassWorm」と名付けられたサプライチェーン攻撃は、Unicodeの不可視制御文字を悪用し、GitHub・npm・VS Code拡張の433件以上を汚染していた。

flowchart LR A["攻撃者"] -->|"盗んだGitHubトークン"| B["正規リポジトリに
force-push"] B --> C["不可視Unicodeで
ペイロード埋込"] C --> D["開発者がインストール"] D --> E["認証情報・暗号資産
を窃取"] E -->|"Solana C2で
指令受信"| A

サプライチェーン攻撃の手口――Unicodeの「見えない文字」を武器に

異体字セレクターの悪用

攻撃の核心は、Unicodeの異体字セレクター(Variation Selector)だ。本来は漢字やアラビア文字の字形を指定するための制御文字で、以下の2つの範囲が悪用されている。

Unicode範囲 名称 本来の用途 攻撃での役割
U+FE00U+FE0F Variation Selectors 絵文字・漢字の字形指定 0〜15の値をエンコード
U+E0100U+E01EF Variation Selectors Supplement 拡張字形指定 16〜239の値をエンコード

これらの文字は表示幅がゼロで、GitHub・VS Code・ターミナル・diffビューアのすべてで完全に不可視。テキストエディタのカーソルすら止まらない。

デコーダーの仕組み

攻撃コードは以下のようなデコーダー関数を使い、不可視文字列からバイト列を復元する。

// GlassWormデコーダーパターン(検出用に簡略化)
const decode = v => [...v].map(w => (
  w = w.codePointAt(0),
  w >= 0xFE00 && w <= 0xFE0F ? w - 0xFE00 :
  w >= 0xE0100 && w <= 0xE01EF ? w - 0xE0100 + 16 : null
)).filter(n => n !== null);

// 見た目は空文字列だが、数千の不可視文字が含まれている
eval(Buffer.from(decode(``)).toString('utf-8'));

バッククォートの間に不可視文字が大量に埋め込まれ、eval()で実行される。見た目は1行の空文字列だが、不可視文字として大量のマルウェアコードが隠されている。

Solanaブロックチェーンを使ったC2――テイクダウン不能な指揮統制

従来のマルウェアはC2(Command & Control)サーバーにドメインやIPアドレスを使うため、セキュリティチームがドメインを差し押さえれば無力化できた。GlassWormはSolanaブロックチェーンのウォレットをC2として使う。

sequenceDiagram participant M as マルウェア participant S as Solanaブロックチェーン participant A as 攻撃者 A->>S: トランザクションメモに
ペイロードURL書き込み loop 5秒ごと M->>S: ウォレットの最新
トランザクションを照会 S-->>M: メモフィールドから
C2 URLを取得 end M->>A: 窃取データを送信 Note over A,S: ブロックチェーンは
誰にも削除できない

2025年11月27日から2026年3月13日までの間に、研究者は50回のトランザクションを確認。攻撃者はウォレットのメモフィールドを更新するだけで、マルウェアの接続先を自在に変更できる。

GitHub・npm・VS Codeのセキュリティ被害――汚染433件の内訳

GlassWormは単一のプラットフォームに留まらず、開発エコシステム全体に拡散した。

プラットフォーム 汚染数 手法
GitHub(Pythonリポジトリ) 数百件 盗んだトークンでforce-push
GitHub(JS/TSリポジトリ) 151件 不可視Unicodeペイロード
VS Code / Open VSX拡張 72件 悪意ある拡張機能
npmパッケージ 10件 汚染パッケージ
合計 433件以上

影響を受けたプロジェクトには、状態管理ライブラリ「reworm」(1,460スター)、Wasmerの公式サンプルリポジトリ「wasmer-examples」、OpenCode関連の「opencode-bench」などが含まれる。悪意あるVS Code拡張7つの合計ダウンロード数は約35,800回に達していた。

攻撃の拡散メカニズム

flowchart TD A["悪意あるVS Code拡張
(計35,800 DL)"] -->|"開発者の認証情報を窃取"| B["GitHubトークン取得"] B --> C["正規リポジトリに
force-push"] C --> D["LLMで生成した
カバーコミット"] D --> E["ドキュメント修正に偽装
バージョンバンプに偽装"] E --> F["他の開発者が
pullして感染"] F -->|"自己複製ループ"| B

攻撃者はまずVS Code拡張やnpmパッケージから開発者のGitHubトークンを盗み、そのトークンで正規リポジトリにforce-pushする。コミットは「ドキュメント修正」「バージョンアップ」などに偽装され、LLMで生成された自然なコミットメッセージが使われている可能性がある。

攻撃タイムライン

時期 出来事
2025年3月 Aikido Securityが不可視Unicode使用のnpmパッケージを最初に発見
2025年5月 Unicodeベースの攻撃リスクに関する研究論文が公開
2025年10月17日 Koi SecurityがOpen VSXの汚染拡張を特定
2025年11月27日 Solana C2のトランザクション開始
2026年1月31日 追加の悪意あるOpen VSX拡張が発見
2026年3月3〜9日 大規模波:1週間で151以上のGitHubリポジトリが汚染
2026年3月13日 最後に確認されたC2トランザクション更新
2026年3月16日 Aikido Security等が詳細レポートを公開
2026年4月3日 複数のセキュリティブログが詳細分析を公開

窃取される情報と攻撃者の痕跡

標的データ

マルウェアが狙うのは開発者の資産だ。

ロシア語圏の関与

コード分析から、マルウェアはロシア語ロケールが検出された場合に実行をスキップする仕様が確認されている。ロシア語圏の攻撃者が関与している可能性を示唆するが、偽旗工作の可能性もあり、確定的な帰属は困難だ。

マルウェア検出方法――GitHubリポジトリの安全確認コマンド

以下のコマンドで感染の兆候をチェックできる。

# 1. GlassWorm特有の変数名を検索
grep -r "lzcdrtfxyqiplpd" --include="*.js" --include="*.ts" .

# 2. 不可視Unicode文字(異体字セレクター範囲)のスキャン
grep -rP '[\x{FE00}-\x{FE0F}]|[\x{E0100}-\x{E01EF}]' --include="*.js" .

# 3. 感染時に作成されるファイルの確認
ls -la ~/init.json ~/node-v22* 2>/dev/null && echo "⚠️ 感染の痕跡あり"

# 4. バッククォート内の不可視文字を検出(Node.js)
node -e "
const fs = require('fs');
const code = fs.readFileSync(process.argv[1], 'utf-8');
const invisible = code.match(/[\uFE00-\uFE0F\u{E0100}-\u{E01EF}]/gu);
if (invisible) console.log('⚠️ 不可視文字検出:', invisible.length, '個');
else console.log('✓ 不可視文字なし');
" target_file.js

セキュリティ対策――開発チームが今すぐやるべきこと

対策 優先度 効果
デフォルトブランチへのforce-push禁止 最優先 不正コミットの注入を防止
ハードウェアキー(YubiKey等)認証 最優先 トークン窃取後の悪用を防止
Unicode制御文字の自動スキャン導入 不可視ペイロードの検出
依存関係のロック+ハッシュ検証 サプライチェーン改ざん検出
VS Code拡張の定期監査 悪意ある拡張の排除

Claude Codeのようなコーディングツールを使う場合、感染リポジトリのコードをAIが読み込むと人間のレビューなしにペイロードが実行されるリスクがある点にも注意が必要だ。

LLM悪用でサプライチェーン攻撃が加速する懸念

専門家が指摘するのは、LLMを使った攻撃の自動化だ。GlassWormでは以下の場面でAIが悪用された可能性がある。

Hacker Newsの議論では、「GitHubはUnicode警告機能を持っているが、バグバウンティ報告者に対して『修正予定なし』と回答した」という情報も共有されている。開発環境のセキュリティを個々の開発者だけに委ねるのは限界があり、プラットフォーム側の対応が問われている。

で、結局どこまで確認されているのか

flowchart TD subgraph confirmed["✅ 確認済みの事実"] F1["433件以上のコンポーネントが汚染"] F2["Unicode異体字セレクターによる
不可視ペイロード"] F3["Solana C2で50回の
トランザクション確認"] F4["React, Wasmer, OpenCode
が影響"] end subgraph analysis["🔍 専門家の分析・推測"] A1["LLMによるカバーコミット
大量生成の可能性"] A2["ロシア語圏の攻撃者が
関与した可能性"] A3["AIエージェントを介した
二次感染リスク"] end subgraph unknown["❓ 未確認"] U1["攻撃者の正確な所属・動機"] U2["実際に暗号資産が
窃取された被害額"] U3["GitHub側の対応計画"] end

GlassWormは「サプライチェーン攻撃」の新たな段階を示している。コードの見た目だけを信頼する時代は終わった。

参照ソース


この記事はAI業界の最新動向を速報でお届けする「AI Heartland ニュース」です。

よくある質問
Q. GlassWormとは何か
Unicodeの不可視制御文字(異体字セレクター)をソースコードに埋め込み、人間の目には見えないマルウェアを混入させるサプライチェーン攻撃。2025年3月に最初の兆候が発見され、2026年3月に大規模な汚染が確認された。
Q. なぜコードレビューで検出できないのか
攻撃に使われるU+FE00〜U+FE0FやU+E0100〜U+E01EFは表示幅ゼロの制御文字で、GitHub・VS Code・ターミナルのすべてで目に見えない。1行のコードに大量の不可視ペイロードが埋め込まれていた事例もある。
Q. 自分のプロジェクトが感染しているか確認する方法は
変数名「lzcdrtfxyqiplpd」の検索、~/init.jsonや~/node-v22*ディレクトリの存在確認、Unicode制御文字(U+FE00-U+FE0F範囲)のスキャンが推奨される。Aikido Securityが公開した検出パターンも参考になる。
Q. なぜSolanaブロックチェーンがC2に使われるのか
従来のC2サーバーはドメインやIPアドレスを遮断すれば無力化できるが、ブロックチェーン上のウォレットは誰にも削除できない。攻撃者はウォレットのトランザクションメモにペイロードURLを書き込み、マルウェアが5秒ごとに問い合わせる仕組みを構築した。
Q. LLMとGlassWormの関係は何か
専門家は、LLMを使って正規のコミットに見せかけたカバーコミット(ドキュメント修正、バージョンアップなど)を大量生成し、攻撃の規模拡大に利用している可能性を指摘している。AIコーディングエージェントが感染ファイルを読み込むと、人間のレビューなしにペイロードが実行されるリスクもある。
🔔 AI速報、毎日Xで配信中
Claude Code・MCP・AIエージェントの最新ニュースをいち早くお届け
@peaks2314 をフォロー
広告
🔥 Popular
#1 POPULAR
🔓 Claude Codeのソースコード流出、npmソースマップに51万行が丸見えだった件
Anthropic Claude Codeのnpmパッケージにソースマップが含まれ、1,902ファイル・51万行超のTypeScriptソースが公開状態に。未公開プロジェクト「KAIROS」や107個のフィーチャーフラグなど、内部コードの全貌を解説する。
#2 POPULAR
🚨 【速報】JavaScript主流ライブラリAxios、NPM供給チェーン攻撃でRAT配布
JavaScriptの週間1億DL HTTPクライアント「Axios」がNPM供給チェーン攻撃の被害に。[email protected]と0.30.4に悪意あるパッケージplain-crypto-jsが注入され、クロスプラットフォーム対応RATが配布。証拠自動削除機能を備えた高度な攻撃。
#3 POPULAR
⚠️ Anthropic、Claude Codeで予想外の高速クォータ枯渇認める。キャッシュバグで料金10〜20倍
Claude Codeでプロンプトキャッシュを破壊する2つのバグが発見され、API利用料が10〜20倍に跳ね上がる問題が発生。Anthropicは「チームの最優先事項」と認める。Pro/Maxユーザーから月間の大半で使用不可との報告多数。
#4 POPULAR
🔍 Claude Codeセキュリティ事件を切り分ける:ソース漏洩とaxios攻撃の違いと対処法
3月31日にClaude Codeで起きたソース漏洩とaxiosマルウェア。感染チェックコマンド・対策コードを交えて、2つの別事件の実態と具体的な対応手順を解説。
#5 POPULAR
🚀 ソフトウェア開発者ではない人が400ドルから年7M達成。AI時代の先発者優位性
AI技術を活用して短期間で大規模な収益を生み出した事例から、開発経験がなくても可能な起業の実態と、AI知識の先発者優位性について解説する。
← agent-browser入門:VercelがOSS公開したAIエージェント向けRust製ブラウザ自動化CLI Qwen 3.6 Plusが1日1.4兆トークン処理でOpenRouter新記録――LLMベンチマーク比較と料金 →