Aikido

Glasswormが再び登場:数百のリポジトリを襲う見えないUnicode攻撃の新たな波

執筆者
Ilyas Makari

約1年間追跡してきた見えない脅威が再び現れました。PolinRiderキャンペーンが数百のGitHubリポジトリを侵害したことで見出しを飾っている一方で、私たちは、GitHub、npm、VS Codeを襲うGlassworm活動の新たな波を別途確認しています。

昨年10月、私たちは隠されたUnicode文字がGitHubリポジトリを侵害するためにどのように使用されているかについて書き、その手法をGlasswormという脅威アクターにまで遡って追跡しました。今月、同じアクターが再び現れ、影響を受けたリポジトリの中には、WasmerReworm、そしてOpenCodeとSSTの背後にある組織であるanomalycoのopencode-benchといった注目すべき名前が含まれています。

見えないコードキャンペーンの1年

  • 2025年3月: Aikidoは、PUA Unicode文字を使用してペイロードを隠蔽する悪意のあるnpmパッケージを初めて発見しました。
  • 2025年5月: 不可視Unicodeのリスクと、それがサプライチェーン攻撃でどのように悪用されうるかを詳述するブログを公開しました。
  • 2025年10月17日: Open VSX上で同じ手法を使用している侵害された拡張機能を発見しました。
  • 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を配信チャネルとして使用して、トークン、認証情報、およびシークレットを盗むことができるセカンドステージスクリプトをフェッチして実行しました。

2026年3月の攻撃の規模

Glassworm脅威アクターによる、オープンソースリポジトリ全体に広がる大規模なキャンペーンを観測しています。デコーダーパターンに対するGitHubコード検索では、現在少なくとも151件の一致するリポジトリが返されますが、執筆時点ですでに多くの影響を受けたリポジトリが削除されているため、この数は真の範囲を過小評価しています。GitHubの侵害は3月3日から3月9日の間に発生したようです。

このキャンペーンはGitHub以外にも拡大しています。現在、npmとVS Codeマーケットプレイスでも同じ手法が展開されているのを確認しており、Glasswormが協調的なマルチエコシステムプッシュを運用していることを示唆しています。これは、レジストリ間をピボットするグループの歴史的なパターンと一致しています。

  • @aifabrix/miso-client (npm)
    • バージョン: 4.7.2
    • 日付: 2026年3月12日
  • @iflow-mcp/watercrawl-watercrawl-mcp (npm)
    • バージョン: 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4
    • 日付: 2026年3月12日
  • quartz.quartz-markdown-editor (VS Code)
    • バージョン: 0.3.0
    • 日付: 2026年3月12日

GitHub上で侵害された注目すべきリポジトリ

我々が特定したリポジトリの中には、意味のあるスター数を持ち、よく知られたプロジェクトに属するものがいくつかあり、これらはダウンストリームのサプライチェーンへの影響にとって価値の高いターゲットとなっています。

自然に馴染むコミット

10月の記事で指摘したように、悪意のあるコードの挿入は、明らかに不審なコミットとして現れるわけではありません。 周囲の変更内容は現実的であり、ドキュメントの微調整、バージョンアップ、小規模なリファクタリング、そして各ターゲットプロジェクトのスタイルに整合したバグ修正などが含まれています。このレベルのプロジェクト固有の調整は、攻撃者がAIを活用しているか、あるいは周囲に溶け込むよう過去のコミットを改変してフォースプッシュしていることによるものと考えられます。現在確認されている規模において、異なるコードベースにまたがる151件以上の特注コード変更を手作業で作成することは、単純に現実的ではありません。 

検出と保護

目に見えない脅威には、積極的な防御が必要です。目に見えないものを検出するために、目視によるコードレビューや標準的なリンティングに頼ることはできません。Aikidoでは、目に見えないUnicodeインジェクションの検出機能をマルウェアスキャンパイプラインに直接組み込んでいます。

すでにAikidoをご利用の場合、これらのパッケージはフィード内で100/100の重大な検出結果としてフラグ付けされます。

まだAikidoをご利用ではありませんか? 無料アカウントを作成し、リポジトリを連携してください。無料プランには、マルウェア検出機能が含まれています(クレジットカードは不要です)。

最後に、サプライチェーンマルウェアが出現した際にリアルタイムで阻止できるツールは、深刻な感染を防ぐことができます。これがAikido Safe Chainの背後にある考え方です。これは、npm、 npx、yarn、pnpm、pnpxをラップする無料のオープンソースツールであり、AIと人間のマルウェア研究者の両方を利用して、最新のサプライチェーンリスクが環境に侵入する前に検出・ブロックします。

{{cta}}

共有:

https://www.aikido.dev/blog/glassworm-returns-unicode-attack-github-npm-vscode

本日より無料で開始いただけます。

無料で始める
CC不要

脅威ニュースをサブスクライブ

4.7/5
誤検知にうんざりしていませんか?
10万人以上のユーザーと同様に Aikido をお試しください。
今すぐ始める
パーソナライズされたウォークスルーを受ける

10万以上のチームに信頼されています

今すぐ予約
アプリをスキャンして IDORs と実際の攻撃パスを検出します

10万以上のチームに信頼されています

スキャンを開始
AI がどのようにアプリをペンテストするかをご覧ください

10万以上のチームに信頼されています

テストを開始
目に見えないUnicode攻撃に対してリポジトリをスキャンします。

10万以上のチームに信頼されています

無料で開始

今すぐ、安全な環境へ。

コード、クラウド、ランタイムを1つの中央システムでセキュアに。
脆弱性を迅速に発見し、自動的に修正。

クレジットカードは不要です。 | スキャン結果は32秒で表示されます。