Ethersphere のサプライチェーン攻撃、CI の侵害により Swarm ウォレット鍵を窃取
攻撃者は盗用した CI 認証情報を用いて bee-js と Swarm Desktop の悪意あるバージョンを公開し、バックドアのインストールとノードウォレット鍵の窃取を行いました。
英語の原文から自動翻訳されました。
2026年11月9日、攻撃者は Ethersphere プロジェクトのリリース自動化システムを侵害し、同プロジェクトの中核ツール2つを通じてマルウェアを配布しました。この事件は Swarm 分散ストレージネットワークを標的としており、bee-js バージョン 13.3.0 と Swarm Desktop バージョン 0.56.2 に悪意あるコードが注入されました。これらの侵害されたリリースは、Windows、macOS、Linux システム上で秘密鍵のウォレット鍵を窃取し、永続的なバックドアをインストールするように設計されており、数時間後に撤回されました。
何が起きたか
この攻撃は、プロジェクト自身の継続的インテグレーション(CI)インフラ、特に自動リリースに使用される bee-worker というアカウントを利用しました。攻撃者は GitHub で bee-js 13.3.0 のリリースを公開し、これにより手動承認なしでプロジェクトの npm 公開ワークフローがトリガーされました。このプロセスにより有効な来歴(provenance)レコードが生成され、悪意あるコードが含まれているにもかかわらず、パッケージは正当なもののように見えました。このパッケージは UTC 00:09 から 01:25 までの約75分間 npm 上に利用可能であり、主にセキュリティスキャナーやミラーによって約10回ダウンロードされました。
同時に、攻撃者は Apple および Windows の署名証明書へのアクセス権を持つ Swarm Desktop 0.56.2 のビルドワークフローを手動で開始しました。これにより、標準的なセキュリティ警告を回避できる公証済み macOS アプリケーションと署名済み Windows インストーラーを作成することができました。悪意あるデスクトップアプリは、公開後10分以内に組み込みのアップデーターを通じて Windows x64 および Apple Silicon Mac ユーザーに配布されました。UTC 08:27 時点で、侵害されたバージョンは65回ダウンロードされていました。メンテナーは約8.5時間後にリリースを撤回し、前の安全なバージョン 0.56.1 と同一だが新しい証明書で署名されたクリーンなバージョン 0.56.3 を発行しました。
仕組み
両方の悪意あるリリースには、api.frameworkmetrics[.]xyz のリモートサーバーから追加ペイロードをダウンロードして実行する軽量ローダーが含まれていました。bee-js では、このローダーは postinstall スクリプトとして動作し、ユーザーがライブラリをインポートしていなくてもインストール時に自動的に実行されました。Swarm Desktop では、アプリケーション起動時に毎回ローダーが実行されました。ダウンロードされたコードは、Swarm Desktop のデータディレクトリ内の特定のファイル、すなわち config.yaml と data-dir/keys/swarm.key を検索しました。キーファイルは暗号化された Ethereum キーストアですが、アプリケーションは復号パスワードを config.yaml 内に平文で保存していたため、攻撃者はノードのウォレットへ完全にアクセスすることができました。
認証情報の窃取に加え、ペイロードは各オペレーティングシステムに合わせた永続的なバックドアをインストールしました。Linux と macOS では、~/.solidity フォルダに隠された evjawbreaker という Go ベースのリモートシェルを展開し、バックグラウンドサービスまたは LaunchAgent として実行されるように設定しました。Windows では、正規の ScreenConnect リモートアクセスクライアントをインストールし、既知の User Account Control (UAC) バイパス手法を用いて、可能な場合は管理者権限を取得しました。攻撃者は Ethereum スマートコントラクトに格納されたアドレスを通じてこれらのバックドアを制御しており、コマンド&コントロールサーバーを動的に更新することができました。
主要な詳細
- 侵害されたバージョン: bee-js 13.3.0 と Swarm Desktop 0.56.2 のみが影響を受けたリリースです。
- 攻撃経路: bee-worker アカウントの CI 認証情報が盗用され、無許可の公開と署名が可能になりました。
- データの窃取: マルウェアは swarm.key と config.yaml 内の平文パスワードを窃取し、ノード資金を危険にさらしました。
- バックドアの永続性: マルウェアは Linux 上の solidity-langsupport-runner.service や Windows 上の ScreenConnect などのサービスをインストールしました。
- 修復状況: バージョン 0.56.3 は悪意あるデスクトップアプリを置き換えますが、Linux ユーザーはパッケージを手動で置き換える必要があります。
- 侵害の仮定: bee-js 13.3.0 または Swarm Desktop 0.56.2 を実行したすべてのマシンは、完全に侵害されているとみなされます。
なぜ重要なのか
この事件は、オープンソースプロジェクトにおける侵害された CI/CD パイプラインがもたらす重大なリスクを浮き彫りにしています。攻撃者がプロジェクト自身の自動化ツールを使用したため、結果として得られたパッケージには有効な来歴とデジタル署名が付与されており、開発者が信頼しているメカニズムを実質的にバイパスしていました。これは、サプライチェーンセキュリティが単なるコード整合性の検証だけでなく、そのコードを構築・公開するインフラの保護にも関わることを示しています。自動化ワークフローを使用しているチームにとって、公開時の必須の手動承認ステップが存在しないことは、認証情報の漏洩が大規模なサプライチェーン攻撃へと発展する原因となり得ます。
Swarm や同様の分散ストレージツールを開発している場合、影響は単純なソフトウェアアップデートにとどまりません。ノード鍵とパスワードの窃取は、これらのウォレットに保存されている金融資産が直ちに危険にさらされることを意味します。さらに、永続的なバックドアのインストールにより、ソフトウェアを更新または再インストールするだけでは脅威を除去できません。エンジニアは影響を受けたマシンを侵害されたものとして扱い、シークレットの包括的なローテーションや、完全な修復を確保するために信頼できるイメージからのシステム再構築が必要になります。
対応策
- lockfile と CI ログを確認し、@ethersphere/bee-js@13.3.0 への参照がないかチェックし、依存関係をバージョン 13.2.0 に固定してください。
- bee-desktop.log ファイルを検査し、「Bee Desktop version: 0.56.2 (production)」という行があるか確認して、悪意あるアプリを実行したかどうかを判断してください。
- Swarm Desktop 0.56.2 を実行した場合、直ちにすべてのノード資金、小切手帳残高、ステークを、クリーンなデバイスから生成した新しい鍵へ移動してください。
- Linux/macOS では ~/.solidity フォルダを削除し、Windows では ScreenConnect Client サービスを削除することで、永続的なバックドアを除去してください。
- 侵害された bee-js パッケージをインストールしたすべてのユーザーまたは CI ジョブがアクセス可能だったすべてのパスワード、トークン、API 鍵をローテーションしてください。
- 悪意あるコードを実行したマシンは、その場でクリーンアップを試みるのではなく、信頼できるベースイメージから再構築してください。



