攻撃者が、広く使われているJavaScript用キーバリューストレージライブラリ「Keyv」のメンテナーが持つGitHubアカウントを侵害し、npmパッケージを通じて認証情報を窃取するマルウェアを拡散させています。
この進行中のサプライチェーン攻撃は「Shai-Hulud」キャンペーンとして知られており、Keyvおよび関連する複数のキャッシュライブラリに影響を及ぼしています。これらのライブラリの月間インストール数を合計すると、数十億件規模に達します。
Aikido Securityの報告によると、脅威アクターがメンテナーのGitHubアカウントへのアクセスを取得した後、2023年8月4日に侵害が発生しました。
クラウドセキュリティソリューション
攻撃者は悪意のあるファイルを、影響を受けたリポジトリのメインブランチに直接プッシュしました。そしてGitHub Actionsを利用し、npmパッケージの新バージョンを即座に公開しました。
Shai-Hulud型サプライチェーン攻撃、Keyvを侵害
これらのリリースは正規のプロジェクトワークフローを通じて生成されていたため、侵害されたパッケージには有効なGitHub Actionsのプロベナンス(来歴情報)が付与されていました。これにより、自動化された依存関係管理システムやソフトウェアサプライチェーン検証プロセスが、リリースを信頼できるものと誤認する可能性がありました。
影響を受けたパッケージには、Keyv、cacheable、cache-manager、cacheable-request、flat-cache、file-entry-cache、および複数の@cacheable系パッケージが含まれます。これらのライブラリはNode.js開発環境において、キャッシュ、ストレージ、依存関係管理といった機能で広く利用されています。
Aikidoが更新情報を発表した時点で、この自己拡散型のマルウェアキャンペーンは、1,381のパッケージバージョンにわたり、少なくとも8,686,868件のnpmパッケージを侵害したと報告されています。影響を受けたパッケージの月間インストール数を合計すると2,220億件を超えており、下流への波及がいかに大規模になり得るかを物語っています。
悪意のあるPreinstallペイロード
悪意のあるバージョンのパッケージには、新たに追加された2つのファイル「`setup.mjs`」と「`Math_Symbol.js`」が含まれています。さらに攻撃者は、影響を受けた各`package.json`ファイルを改変し、以下のpreinstallフックを追加していました。
"preinstall": "node setup.mjs"
これにより、npmのインストール処理が完了する前にペイロードが自動的に実行される仕組みになっています。`setup.mjs`ファイルは難読化されたドロッパーとして機能し、GitHubでホストされているリリースからBun JavaScriptランタイムをダウンロードした上で、マルウェアの本体である`Math_Symbol.js`を実行します。
`Math_Symbol.js`は、サイズ約728KBの、強度に難読化されたJavaScriptファイルです。認証情報を収集し、窃取したデータを暗号化した上で、このキャンペーンに関連付けられた公開GitHubリポジトリへ外部送信するモジュールが組み込まれています。このリポジトリには「Shai-Hulud: Here We Go Again」という説明文が付けられていると報告されています。
このペイロードは、`.npmrc`に保存されているnpm認証トークン、GitHub CLIの個人アクセストークン、セッショントークン、OpenID Connectトークンなど、価値の高い開発者向け・クラウド向け認証情報を標的としています。また、`~/.aws/credentials`内のAWSアクセスキーやセッション認証情報も探索します。
さらにこのマルウェアは、`VAULT_TOKEN`環境変数からHashiCorp Vaultのトークンを窃取しようと試み、HTTPベースのフォールバック処理を用いてトークンの取得を試みる場合もあります。
Shai-Huludのペイロードには、ワーム型の拡散機能が備わっており、感染した依存関係をインストールした環境を持つ他のメンテナーのパッケージを侵害するよう設計されています。報告によれば、Deliveroo、Picsart、Qlikなどの組織が提供するパッケージも、すでに影響を受けています。
組織は、影響を受けたバージョンがリポジトリ、ロックファイル、CI/CDランナー、開発者のワークステーション、ビルド成果物の中に存在していないか、直ちに確認する必要があります。
各チームは、悪意のあるバージョンを削除し、侵害の可能性がある環境からアクセスできるnpm、GitHub、AWS、Vaultなどの認証情報をローテーションした上で、不正なリリースが行われていないかパッケージの公開履歴を確認する必要があります。
警告:20以上の政府系サイトが、企業や市民にマルウェアを配布していました。 攻撃に関する詳細な調査レポートはこちら から確認し、自組織が影響を受けていないかチェックしてください。
翻訳元: https://gbhackers.com/shai-hulud-supply-chain-attack-compromises-keyv/