サプライチェーンの毒:「npm install」があなたを裏切るとき

要約:あなたは安全なコードを書いている。スマートコントラクトも監査している。しかし、あなたは秘密のバックドアを持つライブラリをインストールしてしまう。この記事では、「サプライチェーン攻撃」を取り上げ、悪名高いLedger Connect Kitハックを引用し、依存関係をロックする方法を解説する。
1. 概念:井戸に毒を入れる
現代の開発は「レゴブロック」(ライブラリ)に依存している。典型的なReact dAppは1000以上の依存関係を使用しているかもしれない。
ハッカーは、あなたを ハッキングできないことを知っている(あなたは用心深いから)。だから彼らは あなたが使うツール をハッキングする。
もし彼らが axios や web3.js のようなライブラリを侵害すれば、新しいバージョンに更新したすべてのアプリが自動的に感染する。

2. ケーススタディ:Ledger Connect Kit (2023)
2023年12月、クリプト界は凍りついた。
Ledgerの元従業員がフィッシング攻撃の犠牲になった。ハッカーは彼らのNPM公開鍵へのアクセスを得た。
攻撃:
- 彼らは
@ledgerhq/connect-kitに悪意のある更新をプッシュした。 - このライブラリは、SushiswapやRevoke.cashなど、何百ものdAppsでウォレット接続のために使用されていた。
- 結果: ユーザーが 正規の サイト(Sushiswapなど)を訪れると、偽の「ウォレットを接続」ポップアップが表示された。これはSushiswapの過失ではない——サプライチェーンから悪意のあるコードを読み込んだのはライブラリだったのだ。
- ポップアップに署名したユーザーは資金を奪われた。

3. 攻撃ベクトル:タイポスクワッティング
ハッカーは、人気のあるパッケージとほぼ同じ名前のパッケージを公開する。
- 本物:
react-dom - 偽物:
react-dom-core(またはrreact-dom)
もし誤って npm install react-dom-core とタイプしたら、Reactのように動作するが……あなたの .env ファイルも盗むパッケージをインストールしてしまうことになる。
4. dAppを守る方法
バージョンをロックする (Lock Your Versions)
セキュリティ上重要なライブラリについては、package.json でキャレット ^ やチルダ ~ を決して使用してはいけない。
- 悪い例:
"web3": "^1.9.0"(1.9.9への自動更新、感染の可能性あり)。 - 良い例:
"web3": "1.9.0"(監査したバージョンに正確に留まる)。
npm audit と Snyk を使う
デプロイのたびに npm audit を実行する。それは既知の脆弱性データベースと依存関係を照合する。
エンタープライズレベルのセキュリティには、Snyk や Socket.dev のようなツールがパッケージの 振る舞い を分析する(例:「なぜこのCSSライブラリがネットワークにアクセスしようとしているのか?」)。
警告: 悪意のあるパッケージは、伝染する面接 詐欺を通じて求職者や開発者を標的にすることがよくある。もし悪いパッケージをインストールした疑いがあるなら、直ちに Revoke.cash でウォレットの権限を確認せよ。
「カナリア」テスト
金曜日の夜に製品版にアップデートをプッシュしてはいけない。新しいライブラリのバージョンは、コミュニティに数日間テストさせよう。サプライチェーン攻撃は通常24〜48時間以内に発見される。

結論
Web3において、あなたはプロジェクトのすべてのコード行に責任がある——自分が書いていない行であっても。npm update は金融取引と同じくらい慎重に扱うべきだ。
関連記事
ロング・コン(豚の屠殺):彼らはいかにしてあなたの心と財布を盗むか
それは「間違い電話」のテキストメッセージから始まる。そして退職金の喪失で終わる。「豚の屠殺(Pig Butchering)」詐欺の心理的台本の解剖。
遊ぶ場所でトレードするな:専用クリプトデバイスのすすめ
あなたのゲーミングPCは隙だらけだ。あなたのスマホは追跡者(トラッカー)でいっぱいだ。なぜ200ドルで専用の「銀行用デバイス」を買うことが、最高の保険なのか。
隠されたバックドア:なぜ承認(Permissions)を取り消さなければならないのか
ウォレットの接続を解除したが、ハッカーはまだウォレットを空にできる。「無制限の承認」の仕組みと、デジタルバックドアをロックする方法を理解しよう。
