Compromised @injectivelabs/sdk-ts exfiltrates wallet keys through fake telemetry
【なぜ重要か】 週間50,000ダウンロードを誇るnpmパッケージ @injectivelabs/sdk-ts の不正バージョン(1.20.21)が、ウォレットのニーモニックフレーズや秘密鍵を導出する際にそれらを攻撃者のサーバーへ送信するコードを含んでいたことが判明した。直接このパッケージを使用していなくても、同スコープ内の他17パッケージのいずれかに依存しているプロジェクトも推移的依存として同じ...
【なぜ重要か】 週間50,000ダウンロードを誇るnpmパッケージ @injectivelabs/sdk-ts の不正バージョン(1.20.21)が、ウォレットのニーモニックフレーズや秘密鍵を導出する際にそれらを攻撃者のサーバーへ送信するコードを含んでいたことが判明した。直接このパッケージを使用していなくても、同スコープ内の他17パッケージのいずれかに依存しているプロジェクトも推移的依存として同じ悪意あるコードを取り込んでしまう。暗号資産ウォレットを扱うアプリケーションにとって、秘密鍵の完全な漏洩につながるきわめて深刻なサプライチェーン攻撃である。
【ポイント】
PrivateKey.fromMnemonic および PrivateKey.fromHex の2つの標準エントリーポイントにフックとして挿入されており、アプリケーションが通常の使用中にキーを導出するたびに秘密情報をキャプチャする。インストール時には実行されないため、postinstallを監視するインストール時スキャナやサンドボックスでは検出できない。testnet.archival.chain.grpc-web.injective.network はInjectiveの正規gRPCインフラのサブドメインに見せかけており、盗み出されたデータはリクエストボディではなく X-Request-Id ヘッダーに格納されるため、通常のgRPC-web通信に偽装される。コメントには「匿名の使用状況メトリクス」と記載されているが、匿名化は一切されていない。sdk-ts@1.20.21 に固定依存するよう変更した。自身のマニフェストに sdk-ts を直接記載していないプロジェクトでも、これらのウォレット関連パッケージのいずれかに依存していれば間接的に攻撃コードを取り込んでしまう。【まとめ】 @injectivelabs スコープのいずれかのパッケージをバージョン1.20.21で使用している、または推移的依存として解決される可能性があるプロジェクトは、直ちにクリーンな1.20.23以降へアップグレードすること。該当期間中にこれらのパッケージを通じて秘密鍵やニーモニックフレーズが処理された場合は、漏洩済みとみなし、速やかに資産を移動した上で鍵とシードフレーズを再生成すること。
原文を読む
Aikido Security Blog
英語で詳細な技術情報を確認