タイポスクワッティングnpmパッケージを悪用、Web3プロジェクトと暗号資産ウォレット運営者を標的にしたハッカー集団

ハッカー集団が、タイポスクワッティング(名前の誤記を狙った)npmパッケージを用いて、Web3開発チームがオープンソースの依存関係に寄せる信頼を武器に変えています。通常のパッケージインストールが、ウォレット窃取・機密情報の収集・段階的なマルウェア配布への入口となっています。

このキャンペーンが特に危険なのは、Ethereumやブロックチェーンのブランドイメージをうまくなじませながら、postinstallpreinstallフックを悪用している点にあります。これにより、ユーザーが手動で実行するのを待たず、インストール中に自動的に悪意あるコードが実行されます。

本レポートでは、Ethereum、Coinbase Wallet、Moralis、Hardhatなど、正規のブロックチェーンツールや関連ユーティリティを模した名称を持つ、不審なnpmパッケージが11件報告されています。

研究者らは、これらのパッケージが認証情報の窃取・環境偵察・リモートからのペイロード配布・ウォレットへの介入を目的として設計されており、一部のバリアントはウォレット作成フローから直接、秘密鍵やニーモニックフレーズを取得していたことを確認しています。

ひとつの攻撃クラスターは、ethers-jsscoinbase-wallet-utilsといった偽装ラッパーに特化しており、ライフサイクルフックを悪用してインストール直後にコードを実行していました。

もうひとつのクラスターはmoralis-sdkを中心とするもので、正規のプロジェクトファイルやドキュメントをそのままコピーしつつ、悪意あるpostinstallステージを追加したトロイの木馬型パッケージです。このパッケージは累計2,700万ダウンロードを超えており、他のキャンペーンと比較して被害規模がはるかに大きくなっています。

Image

この手口が機能するのは、タイポスクワッティングが人間の小さなミスを突くからです。開発者がライブラリを検索する際、スペルミスに気づく前に酷似したパッケージをインストールしてしまう可能性があります。

攻撃者はブランドの模倣・コードの難読化・軽量なパッケージ構造も組み合わせており、マルウェアを一見無害なパッケージに見せかけ、コードレビューでの発見を困難にしています。

その技術的な手口は、単純なドロッパーキャンペーンよりも洗練されています。レポートでは、環境変数・.envファイル・SSHキー・Web3設定ファイルからの認証情報収集に加え、多段階のペイロード配布、さらにはブロックチェーンを利用したコマンド&コントロール(C2)および情報窃取の経路まで確認されています。

GBhackersと情報を共有したCyfirmaのレポートによると、今回のキャンペーンはブロックチェーン開発者やWeb3プロジェクトを標的とした、複数の悪意あるnpmパッケージによる暗号資産ソフトウェアサプライチェーン攻撃とされています。

この点が重要なのは、侵害された1台のワークステーションからクラウドの認証情報・CI/CDシステム・本番環境のウォレットへと攻撃者が横展開できるからです。

タイポスクワッティングnpmパッケージの実態

今回の事例は、ブロックチェーン開発における構造的な脆弱性を浮き彫りにしています。Web3プロジェクトは多くの場合、変化の速いオープンソースパッケージ・頻繁なアップデート・開発者の環境に保存された高権限の機密情報に依存しているためです。

調査時点において、coinbase-wallet-utilsの週間ダウンロード数は約63件でしたが、その後のモニタリングでは66件に増加していることが確認されました。

Image

こうしたワークフローに悪意あるコードが紛れ込んだ場合、被害の範囲にはソースコードだけでなく、秘密鍵・デプロイ認証情報・直接的な金融資産までが含まれる可能性があります。

特に懸念されるのは、攻撃者がひとつの手法に依存していない点です。タイポスクワッティング・ライフサイクルフックの悪用・難読化されたローダー・リモートからのペイロード取得・オンチェーンでの情報窃取を組み合わせることで、検知を困難にし、事後の対応をより複雑にしています。つまり今回は、暗号資産インフラに特化したサプライチェーン攻撃と言えます。

Ethereumユーティリティに特化したnpmパッケージの中にdocker_hunter.pyという名のPythonスクリプトが含まれていた点は、パッケージの主張する機能と明らかに矛盾しており、非常に疑わしいと言えます。

残りのパッケージ内容を分析した結果、その大部分が正規のMoralis SDKのソースコード・サンプル・補助ファイルと完全に一致しており、本物らしく見せるために元のMoralisプロジェクトからコピーされたものとみられます。

Image

この記事の調査結果は、オープンソース悪用の広範なパターンと一致しています。攻撃者がエクスプロイトチェーンよりもパッケージリポジトリを好む理由は、パッケージへの信頼が開発者の行動に既に組み込まれているからです。

Web3アプリケーションを運営するチームにとって、これは依存関係の監査・パッケージ名の確認・ロックファイルの管理・機密情報のスキャンが任意のセキュリティ対策ではなく、中核となるセキュリティ制御であることを意味します。

典型的な例として、開発者がウォレット補助ライブラリのように見えるパッケージをインストールしたところ、postinstallスクリプトが実行され、デプロイ前にニーモニックフレーズや.envの内容が静かに外部へ送信されるケースが挙げられます。

ダウンロード数が少ない小さなパッケージであっても、機密性の高いビルド環境を標的にしている場合は非常に危険な脅威となり得るのはこのためです。

侵害の痕跡(IOC)

No 侵害の痕跡(IOC) 種別 備考
1. 53b91117db931d3acbbfd15aa8400bb6691e023d SHA1 ethers-jss パッケージアーカイブ
2. d94a2444268b339dfda2615f7800322fb318e0a484414bb17016cfcd5eb07c44 SHA256 ethers-jss パッケージアーカイブ
3. 63154cd9c79f9d14eb9be6c4efc2a778d31646ec SHA1 coinbase-wallet-utils パッケージアーカイブ
4. 6585ca0d3e26c20ced638f46f4a89eea924d411b8753d3fcf434663593c7cf0b SHA256 coinbase-wallet-utils パッケージアーカイブ
5. 74d3d5ab6d0fa4c6a5860598231728a6a893ecf7 SHA1 moralis-sdk v1.0.1 パッケージアーカイブ
6. 17bad5ae5b2ac262f5f18854853869840245c344105aa38c7f550ef51d2e5f26 SHA256 moralis-sdk v1.0.1 パッケージアーカイブ
7. fcc8a542aad41e758cf6c18571048890be53808e SHA1 ganach パッケージアーカイブ
8. 7269c00a6164fd01dd516e0a72b2bd84c82e78feb552e06964e4992ff0479dda SHA256 ganach パッケージアーカイブ
9. 70842cfc27b116d0db2fd7aa33d53a3faf510993 SHA1 solidty パッケージアーカイブ
10. e848d73a68e4e8aea00a6257552b5872907dfaf7cce3d94636d7e59d286edeab SHA256 solidty パッケージアーカイブ
11. e1bdcd1a7157f7d047a88ab4573723fe1e861951 SHA1 stelar-sdk パッケージアーカイブ
12. 2fa5b0475c3b70a3ba14c6a3938baf441a08b11841493b85e087d1d5e01eba49 SHA256 stelar-sdk パッケージアーカイブ
13. pastefy.app/RhPBKGli/raw ペイロードホスティングURL Base64エンコードされたPowerShellペイロードのホスティング先
14. 193[.]233[.]201[.]21:3001 C2インフラ ブロックチェーン機構を経由して取得されるリモートペイロード配布サーバ
15. 0xa1b40044EBc2794f207D45143Bd82a1B86156c6b Ethereumスマートコントラクト マルウェアが動的なインフラ情報の取得に使用
16. 0x52221c293a21D8CA7AFD01Ac6bFAC7175D590A84 Ethereumウォレットアドレス C2設定情報取得のためにスマートコントラクトのルックアップ機構が参照
17. 0xCBbecC5E5Eb88582e6305cF6ab688f03e02Ce16f Ethereumウォレットアドレス 情報窃取トランザクションの送信先
18. d6abc7003b580472d808b338adef0b28eacc698cd4692f76cb2a91718ab78d88 SHA256 hardhat-deploy-utils パッケージアーカイブ
19. bab96257018df49ace8fe8adfadc74cf8327fcf9a9dc8a3a7c9ac8e18881df5f SHA256 web3-deploy-helper パッケージアーカイブ
20. d7ec660a2a29c1aabcbe9bff1ef29be9a9fab8c7fe7c40df4772dd2b5bdf9666 SHA256 defi-sdk-core パッケージアーカイブ
21. 5c50f79038b31aa8a3a68b24d8b783dfbd2e15fff7586c5609e544a717ef7d05 SHA256 ethers-compat パッケージアーカイブ
22. feabf10c8a9ba2775bb0f7f9d0b20203112b7df8e6d333a44d5a11eae0e38e86 SHA256 ethereum-dev-utils パッケージアーカイブ

注意: IPアドレスおよびドメインは、誤解決や意図しないハイパーリンク化を防ぐため、意図的にデファング処理(例:[.])が施されています。MISP・VirusTotal・SIEMなど、管理されたスレットインテリジェンスプラットフォーム内でのみ元の形式に戻してご使用ください。

翻訳元: https://gbhackers.com/typosquatted-npm-packages-2/

ソース: gbhackers.com