AsyncAPIパッケージの悪意あるバージョン5点がNode Package Manager(npm)に公開されるサプライチェーン攻撃が発生し、情報窃取機能を備えたリモートアクセス型トロイの木馬(RAT)が配布されていたことが判明しました。
攻撃者は設定に不備のあったGitHub Actionsワークフローを悪用し、@asyncapi名前空間に不正コードを仕込んだパッケージをプッシュしました。これらのパッケージの週間ダウンロード数は合計225万件を超えていました。
複数のセキュリティ企業が、7月14日に攻撃者がAsyncAPIの2つのGitHubリポジトリを侵害し、プロジェクトファイルにマルウェアを注入したことを確認しています。
「今回の2件の攻撃はいずれもCI/CDパイプラインの侵害であり、npmトークンの窃取や悪意あるメンテナーによるものではありません」と、Step Securityのレポートは指摘しています。
研究者らの説明によると、「攻撃者はダミーのgitアイデンティティでコミットをプッシュし、各リポジトリの実際のリリースワークフローに、npmのGitHub OIDCトラステッドパブリッシャー統合機能を介した公開作業を行わせていました」。
この手口により、攻撃者は生成されたパッケージに正当なSLSA来歴証明(プロベナンス・アテステーション)を付与させることに成功しており、正規の承認されたワークフローから生成されたものであるかのように見せかけていました。
npmに公開された悪意あるAsyncAPIパッケージは以下の通りです。
- @asyncapi/generator 3.3.1(週間ダウンロード数10万1000件)
- @asyncapi/generator-helpers 1.1.1(週間ダウンロード数4万3000件)
- @asyncapi/generator-components 0.7.1(週間ダウンロード数3万4000件)
- @asyncapi/specs 6.11.2-alpha.1および6.11.2(週間ダウンロード数225万件)
アプリケーションセキュリティ企業のSocketはこう指摘しています。公開されたパッケージに含まれる第1段階のインプラントは難読化されたJavaScriptのステートメントであり、感染したファイルがインポートされると最終的にダウンローダーを起動する仕組みだといいます。
設定情報とメインのランタイムを含む第2段階のスクリプトは、IPFSピアツーピアコンテンツ配信ネットワークから取得され、隠しプロセスとして起動されます。
クラウド・アプリケーションセキュリティ企業のWizはこう述べています。第3段階のペイロードは「9万2000行に及ぶモジュール構造のマルウェアフレームワーク」であり、システム上に永続化を確立した上で、HTTP、Nostrリレー、Ethereumスマートコントラクト、libp2pメッシュネットワークという複数の経路を通じてコマンド&コントロール(C2)サーバーと通信するとのことです。

最終的なペイロードは、過去のサプライチェーン攻撃で確認されたMiasmaバックドア[1、2]を指し示すアーティファクト名や設定ファイルを使用していますが、SafeDepの研究者らは、このマルウェアは「同じ攻撃グループによる非公開の並行ビルド、あるいはソースコードが公開された後にMiasmaのブランドを流用した別グループによるもののいずれかだ」との見方を示しています。
このマルウェアの目的は、認証情報、認証キー、トークン、ブラウザデータ、CI/CDシステムやAI開発者向けツールに含まれる機密情報、暗号資産ウォレット、データベースなど、各種の秘密情報を窃取することにあるとみられます。
さらに、このマルウェアのコードには、機密情報の収集を支援するためにGitleaksやHackBrowserDataといったツールをダウンロードする機能も備わっています。
ただし、サイバーセキュリティ企業Aikidoのレポートはこう指摘しています。これらの機能はいずれも実際には動作せず、データ収集ツールは何も収集しないまま終了するとのことです。とはいえ研究者らは、これらの処理はシェルを使って手動でも実行可能だと述べています。
攻撃者に先んじて、あらゆるレイヤーをテストする
セキュリティチームが記録できている攻撃の成功例は54%にとどまり、アラートが発せられるのはわずか14%です。残りは環境内を検知されないまま通過しています。
Picusのホワイトペーパーでは、侵害・攻撃シミュレーション(BAS)によってSIEMやEDRのルールをテストし、脅威の検知漏れを防ぐ方法が紹介されています。