GitHubのコードに「見えないマルウェア」が仕込まれている―GlassWorm攻撃の手口と対策
GitHubやnpmに「見えないマルウェア」が仕込まれるGlassWorm攻撃が拡大。433件以上のコンポーネントが汚染。攻撃の仕組みと対策を解説。
ニュース
kkm
Backend Engineer / AWS / Django
GitHubやnpmに「見えないマルウェア」が仕込まれている
あなたが普段使っているnpmパッケージやVS Code拡張機能に、目に見えないマルウェアが仕込まれているかもしれません。
セキュリティ企業Aikidoの報告によると、「GlassWorm」と呼ばれるサプライチェーン攻撃が2026年3月に入って急速に拡大しています。GitHubリポジトリ151件以上、VS Code拡張機能72件以上、npmパッケージ複数を含む433件以上のコンポーネントが汚染されました。
最大の特徴は、コードレビューやdiffツールではまったく見えないこと。目視では発見できません。
「見えないコード」とは何か
GlassWormが使うのは、Unicodeの「Variation Selectors」(U+FE00〜U+FE0F、U+E0100〜U+E01EF)という特殊文字です。これらはすべてのコードエディタ、ターミナル、diffツール、リンターで幅ゼロとして描画されます。つまり、画面上には何も表示されません。
攻撃者はこの見えない文字列の中にマルウェアのコードを埋め込みます。空のバッククォート文字列(``)の中に不可視文字でペイロードをエンコードし、デコーダが実行時にバイト列に変換してeval()で実行します。
さらに厄介なのは、盗んだGitHubトークンを使って正規リポジトリにforce-pushでコードを書き換える手口も併用されていることです。コミットメッセージも作者名も日時もそのまま保持されるため、PRやコミット履歴に痕跡が残りません。
どのパッケージが汚染されたのか
| プラットフォーム | 汚染数 | 主な被害パッケージ |
|---|---|---|
| GitHub | 151件以上 | pedronauck/reworm (1,460スター)等 |
| Open VSX | 72件以上 | AI系・リンター系 拡張機能を装う |
| npm | 複数 | react-native- international-phone-number等 |
盗まれるのは、暗号通貨ウォレット、認証情報、アクセストークン、SSH鍵、開発環境のデータです。窃取したデータはSolanaブロックチェーン経由でC2サーバーに送信されるため、従来のドメインベースのセキュリティツールでは検知が難しい構造になっています。
開発者が今すぐやるべきこと
- 1. 依存パッケージの確認: 上記リストに該当するパッケージを使っていないか確認。Aikidoの無料ツールSafe Chainでスキャン可能
- 2. GitHubトークンのローテーション: VS Code/Cursor拡張機能経由で漏洩した可能性がある。特に不審な拡張機能をインストールした覚えがあればすぐに
- 3. force-push保護の有効化: リポジトリのブランチ保護ルールでforce-pushを禁止する
- 4. 目視レビューに頼らない: この攻撃は人間の目では検知不可能。自動スキャンツールが必須
目に見えないものをどう守るか
ソフトウェア開発において「コードレビュー」は品質の最後の砦です。でもGlassWormは、その砦を素通りします。人間の目では見えないのだから、レビューしようがありません。
映画『プレデター』の透明化した敵のようなものです。目の前にいるのに見えない。倒すには、赤外線センサー(自動スキャンツール)が必要です。
npm installを打つたびに、見えないコードが紛れ込んでいないか。開発者にとって、依存関係はもはや「信頼」ではなく「検証」の対象です。
参照元
- 1.Aikido Security — Glassworm Returns: Invisible Unicode Malware
- 2.The Hacker News — GlassWorm Supply-Chain Attack Abuses 72 Open VSX Extensions
- 3.BleepingComputer — GlassWorm malware hits 400+ code repos
- 4.Tom's Hardware — Invisible malicious code attacks 151 GitHub repos
- 5.SecurityWeek — ForceMemo: Python Repositories Compromised