ハッカー集団が、タイポスクワッティング(名前の誤記を狙った)npmパッケージを用いて、Web3開発チームがオープンソースの依存関係に寄せる信頼を武器に変えています。通常のパッケージインストールが、ウォレット窃取・機密情報の収集・段階的なマルウェア配布への入口となっています。
このキャンペーンが特に危険なのは、Ethereumやブロックチェーンのブランドイメージをうまくなじませながら、postinstallやpreinstallフックを悪用している点にあります。これにより、ユーザーが手動で実行するのを待たず、インストール中に自動的に悪意あるコードが実行されます。
本レポートでは、Ethereum、Coinbase Wallet、Moralis、Hardhatなど、正規のブロックチェーンツールや関連ユーティリティを模した名称を持つ、不審なnpmパッケージが11件報告されています。
研究者らは、これらのパッケージが認証情報の窃取・環境偵察・リモートからのペイロード配布・ウォレットへの介入を目的として設計されており、一部のバリアントはウォレット作成フローから直接、秘密鍵やニーモニックフレーズを取得していたことを確認しています。
ひとつの攻撃クラスターは、ethers-jssやcoinbase-wallet-utilsといった偽装ラッパーに特化しており、ライフサイクルフックを悪用してインストール直後にコードを実行していました。
もうひとつのクラスターはmoralis-sdkを中心とするもので、正規のプロジェクトファイルやドキュメントをそのままコピーしつつ、悪意あるpostinstallステージを追加したトロイの木馬型パッケージです。このパッケージは累計2,700万ダウンロードを超えており、他のキャンペーンと比較して被害規模がはるかに大きくなっています。

この手口が機能するのは、タイポスクワッティングが人間の小さなミスを突くからです。開発者がライブラリを検索する際、スペルミスに気づく前に酷似したパッケージをインストールしてしまう可能性があります。
攻撃者はブランドの模倣・コードの難読化・軽量なパッケージ構造も組み合わせており、マルウェアを一見無害なパッケージに見せかけ、コードレビューでの発見を困難にしています。
その技術的な手口は、単純なドロッパーキャンペーンよりも洗練されています。レポートでは、環境変数・.envファイル・SSHキー・Web3設定ファイルからの認証情報収集に加え、多段階のペイロード配布、さらにはブロックチェーンを利用したコマンド&コントロール(C2)および情報窃取の経路まで確認されています。
GBhackersと情報を共有したCyfirmaのレポートによると、今回のキャンペーンはブロックチェーン開発者やWeb3プロジェクトを標的とした、複数の悪意あるnpmパッケージによる暗号資産ソフトウェアサプライチェーン攻撃とされています。
この点が重要なのは、侵害された1台のワークステーションからクラウドの認証情報・CI/CDシステム・本番環境のウォレットへと攻撃者が横展開できるからです。
タイポスクワッティングnpmパッケージの実態
今回の事例は、ブロックチェーン開発における構造的な脆弱性を浮き彫りにしています。Web3プロジェクトは多くの場合、変化の速いオープンソースパッケージ・頻繁なアップデート・開発者の環境に保存された高権限の機密情報に依存しているためです。
調査時点において、coinbase-wallet-utilsの週間ダウンロード数は約63件でしたが、その後のモニタリングでは66件に増加していることが確認されました。

こうしたワークフローに悪意あるコードが紛れ込んだ場合、被害の範囲にはソースコードだけでなく、秘密鍵・デプロイ認証情報・直接的な金融資産までが含まれる可能性があります。
特に懸念されるのは、攻撃者がひとつの手法に依存していない点です。タイポスクワッティング・ライフサイクルフックの悪用・難読化されたローダー・リモートからのペイロード取得・オンチェーンでの情報窃取を組み合わせることで、検知を困難にし、事後の対応をより複雑にしています。つまり今回は、暗号資産インフラに特化したサプライチェーン攻撃と言えます。
Ethereumユーティリティに特化したnpmパッケージの中にdocker_hunter.pyという名のPythonスクリプトが含まれていた点は、パッケージの主張する機能と明らかに矛盾しており、非常に疑わしいと言えます。
残りのパッケージ内容を分析した結果、その大部分が正規のMoralis SDKのソースコード・サンプル・補助ファイルと完全に一致しており、本物らしく見せるために元のMoralisプロジェクトからコピーされたものとみられます。

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