13個のnpmパッケージ、48秒、1つの偽ウォレットSDK
npmレジストリへの組織的な攻撃により、わずか48秒の間に13個の偽のCoinbaseスタイル・ウォレットSDKパッケージが流されました。これは、悪意のあるコードがいかに素早く信頼できるツールになりすませるかを示しています。見慣れた名前だけを頼りにパッケージをインストールした開発者は、意図せずアプリに偽のSDKを注入してしまう可能性があります。
これらのパッケージは、2026年9月7日の04:54:59から04:55:48(UTC)の間に公開されました。cb-wallet-httpやscw-coreといった名前は、公式の**@coinbase/wallet-sdk**名前空間を彷彿とさせます。攻撃者はタイポスクワッティング(打ち間違いを狙った手法)ではなく、見慣れた文字列を名前の接頭辞として使用しました。これは、チームメイトの推奨やフォーラムの投稿によって、ユーザーにその正当性を信じ込ませることを狙ったものです。
13個のリリースすべてが、バージョン0.0.1-security、空のメンテナーリスト、公開直後に表示されるデフォルトのnpmメタデータという、共通の最小限の構成を持っていました。この同一のセットアップは、手作業ではなく自動化によるものであることを示す特徴であり、単一のスクリプトによってこれらのパッケージが大量生産されたことを示唆しています。
npmのオープンな公開モデルでは、事前の審査なしに誰でもパッケージをアップロードできるため、このような攻撃が可能になります。過去のサプライチェーン攻撃の事例では、一度悪意のあるコードが依存関係ツリーに紛れ込むと、それをインストールするすべてのマシンで実行されることが証明されています。
npmは犯人を特定しておらず、初期のアップロード以外にどのようにコードが拡散したのかについても説明していません。また、攻撃者が特にCoinbaseのユーザーを標的にしていたのか、あるいは単に、いくつかが採用されることを期待して、もっともらしい名前でレジストリを埋め尽くしただけなのかも不明です。
開発者が今できること
- パッケージを追加する前にパブリッシャーを確認してください。公式のSDKは、検証済みの組織スコープ(verified organization scopes)の下に存在します。
- 既知の悪意のあるシグネチャを依存関係からスキャンするツールを実行してください。
- ロックファイルで正確なバージョンを固定し、レビューなしで新しく公開されたパッケージをプルしないようにしてください。
- メンテナーに対して二要素認証を要求するレジストリを優先的に使用してください。
注視すべき点
- 有名ブランドを模倣するパッケージに対して、npmが審査を強化するかどうか。
- なりすまし名をフラグ立てする、コミュニティ主導のブラックリスト。
- 13個の偽SDKによる現在進行中の悪用に関する、セキュリティ研究者からの最新情報。
今回の事例は、聞き慣れた名前であっても安全性が保証されるわけではないことを証明しています。オープンソースのエコシステムにおけるサプライチェーン攻撃に対しては、警戒と検証が引き続き最強の防御策となります。
