攻撃者は、開発者のエンドポイントやCI/CD環境からクラウドの認証情報を盗み出すため、耐障害性の高いコマンド&コントロール(C2)基盤としてブロックチェーンネットワークを利用するケースを増やしています。
最近確認された、npmワーム「ChainDrop」と、北朝鮮との関連が指摘される「PolinRider」の攻撃キャンペーンは、汚染されたオープンソースパッケージが、有効期間の短いクラウドトークン、サービスアカウントの認証情報、デプロイ用シークレット、ソースコードのアクセストークンを窃取する様子を示しています。攻撃者のインフラは、Web3サービス経由で解決されます。
ブロックチェーンを使ったC2は、防御側が従来ブロックしてきた固定のドメインやIPアドレスをなくしてしまうため、この変化は重要です。
攻撃者はマルウェアに固定のサーバーアドレスを埋め込む代わりに、スマートコントラクトの状態、ブロックチェーンのトランザクションデータ、さらには送金額ゼロのウォレット間送金から、暗号化されたC2情報を取得できます。
Earna CS Degree
オペレーターは、1回のオンチェーントランザクションだけで、感染したホストを新しいインフラへ誘導できます。被害環境ですでに動作しているマルウェアを更新する必要はありません。
研究者がShai-Huludのコード系統に連なると見ているChainDropは、keyvやcacheable-requestなど広く使われている依存パッケージを含む、400を超えるnpmパッケージに感染しました。
狙われるのは、ファイルに保存された認証情報だけではありません。ChainDropは、GitHub Actions Runner.Workerプロセスのメモリを調べ、一時的なOpenID Connectトークンや、CIランナーのシークレットを探します。これらの認証情報はディスクに書き込まれないことがあり、ジョブの完了とともに消える場合もあります。
さらに、npmとGitHubのトークン、SSH鍵、クラウドの認証情報、Kubernetesトークン、Terraformステート、Vaultトークン、AIコーディングツールの関連ファイルも盗み出します。
このマルウェアは、VS Codeのタスクを仕込むほか、Claude Codeのセッションフックを悪用して、開発ワークフローに居座ります。
その結果、プロジェクトフォルダを開く、AIコーディングセッションを起動するといった日常の操作が、マルウェアの実行機会になります。

Unit42の研究者らによると、このワームは悪意あるpreinstallライフサイクルフックを使って正規のBunランタイムをダウンロードし、高度に難読化された認証情報窃取ペイロードを実行します。
ChainDropとPolinRiderマルウェア
ワームは、盗んだnpm公開トークンを使って他のパッケージにも自らを注入できます。これにより、自己増殖するサプライチェーン侵害が成立します。
手法は、TRON、Aptos、Binance Smart Chain(BSC)といった複数のチェーンにまたがるトランザクション照会から、NullReceiverのようなデータを持たないアドレスの解決技術まで多岐にわたります。
C2の解決にはEtherHidingを使います。Ethereumのスマートコントラクトに問い合わせて、現在有効なデータ送出先ドメインを取得する方式です。

Unit 42は、オペレーターが1回のEthereumトランザクションでワームのC2設定を切り替えたことを確認しました。リゾルバーのコントラクトや関連するブロックチェーンへのリクエストまで追跡しなければ、ドメインのブロックだけでは脅威を封じ込められない可能性があります。
PolinRiderも、より幅広い開発者エコシステムで同じ運用モデルを採っています。
ローダーは、攻撃者が管理するウォレットに対し、送金額ゼロの最新トランザクションを問い合わせます。そして、20バイトの受取アドレス構造そのものから、有効なC2のIPv4アドレスを数学的に取り出します。
Socketは、npm、Goモジュール、Packagist、Chrome拡張機能にまたがる108のパッケージと拡張機能から、162件の悪意あるリリース成果物を特定しました。この活動は、北朝鮮(DPRK)に関連するContagious Interview/Famous Chollimaのクラスターと結び付けられています。

PolinRiderはパッケージのインストールスクリプトだけに頼らず、リポジトリの設定ファイルや偽の.woff2フォントファイルに、難読化したJavaScriptローダーを隠します。
一部の亜種は、開発者がワークスペースを開くと実行されるよう設定したVS Codeのタスクファイルを使います。
vite.config.jsなどのファイルにペイロードを隠す例もあります。さらに、強制プッシュ(force-push)や日付を偽ったコミットによって、悪意ある変更を古い、あるいは正当なものに見せかけています。
PolinRiderのローダーは、起動すると、TRON、Aptos、BNB Smart Chainに関連する公開RPCサービスに問い合わせ、暗号化されたペイロードを取得します。
このクロスチェーン設計には冗長性があります。防御側が特定のRPCプロバイダー、ネットワーク、照会手法のいずれかをブロックしても、マルウェアは別の経路で次段階のコードやC2情報を取得できます。
確認されている後続ペイロードには、DEV#POPPERとOmniStealerがあります。これらは認証情報の窃取、ブラウザーデータの収集、ウォレットの窃取、リモートコマンド実行を可能にします。
開発者のワークステーションや自動ビルドランナーは、通常から強い権限を持つIDを保持しています。盗まれたOIDCトークン、クラウドのセッション認証情報、デプロイ用シークレットがあれば、攻撃者は多要素認証(MFA)を対話的に突破しなくても、管理APIやクラウドリソースにアクセスできます。
つまり、最初の侵入経路は従来型のエンドポイント侵害から、特権を持つエンジニアリングのワークフロー内で実行される、信頼されたソフトウェア依存パッケージへと移っています。
セキュリティチームは、自社環境でブロックチェーンや公開RPCへの通信が正当なものかどうかを、ベースラインとして把握しておく必要があります。
Securityincident response
Web3の利用要件がない企業では、ビルドランナー、パッケージマネージャー、IDE、スクリプトエンジン、コンパイラーのプロセスからブロックチェーンゲートウェイへの外向き通信を、確度の高い異常として扱うべきです。
あわせて、CIのエグレス制限の徹底、短命なランナーの利用、パッケージのライフサイクルフックやワークスペースの自動化ファイルの監査を進めてください。影響を受けたシステムは、問題のないことが確認されたロックファイルから再構築します。漏えいした可能性のあるクラウド、レジストリ、ソース管理、自動化の認証情報は、クリーンなホストからローテーションしてください。
MTTRを21分短縮し、被害が出る前にサイバー脅威を阻止します。ANYRUNのサンドボックスをSOCに統合。
翻訳元: https://gbhackers.com/chaindrop-and-polinrider-malware/