Osegi
セキュリティ·2 分で読めます

npmのbee-js 13.3.0に悪意あるコード、暗号資産ウォレット鍵を狙う

Swarm用ライブラリ@ethersphere/bee-jsの13.3.0は、公式の公開手順で配布され、インストール時にウォレット鍵を盗もうとした。

Laptop screen showing JavaScript code with a red warning icon and a crypto wallet key being pulled away.
画像: Хабр

npmで配布されたSwarm用ライブラリ「@ethersphere/bee-js」のバージョン13.3.0が、インストールした時点で暗号資産ウォレットの鍵を盗もうとしていた。しかもこの版は、プロジェクト自身の公式な公開手順を通って出回っている。

CodeScoringは11月9日から、このバージョンを悪意あるものに分類している。bee-jsは、分散型ストレージSwarmのJavaScriptライブラリだ。

bee-js 13.3.0で何が起きたか

公開用アカウント「bee-worker」の名義で、公式リポジトリに直接コミットが入った。続いてリリースが作成され、既存のGitHub Actionsのワークフローが動いた。Socketによると、npm上のビルド情報は公式リポジトリと通常の公開手順を指していた。不正なコードは、その時点でソースに入っていたことになる。

攻撃者はパッケージを改変し、インストール時にスクリプトが自動実行されるようにした。この種のスクリプトの実行が許可されていれば、アプリで使う前に動く。コード内のコメントでは、自分たちのサーバーへの通信を「分析データの送信」と説明していた。実際にはそこからJavaScriptを取得し、インストールしたユーザーの権限で即実行していた。

何を盗もうとしたのか

ペイロードはSwarm Desktopのデータから、暗号化されたウォレット鍵と設定ファイルを探した。設定にその鍵のパスワードがあれば、2つのファイルでウォレットを操作できる。システムに居座る試みもあった。

LinuxとmacOSでは、遠隔でコマンドを実行するバックドアも入れた。コマンドサーバーのアドレスはEthereumのスマートコントラクトから読み取る。運営者は1回のトランザクションでアドレスを変えられ、新しいビルドを出す必要がない。

影響を受けたか確認する方法

13.3.0は間接依存としても入り得た。Swarmの複数ツールの依存範囲がこの版を許していたためだ。マニフェストで直接依存を探すだけでは足りず、lockファイルで実際に解決されたバージョンを確認する必要がある。lockファイル、パッケージキャッシュ、CIのインストールログを調べたい。

スクリプトを許可した状態でこの版を入れた場合や、Swarm Desktop 0.56.2を起動した場合は、マシンやCIランナーを調査すること。CIランナーでは、パッケージ公開用トークンやソースへのアクセス権も対象になる。

注目のアプリ

SUMO:数字パズル

正しいマスを選んで足し算、目標の数に。覚えるのは簡単、極めるのは難しい。無料、全年齢向け。

Dialo:話して学ぶ語学アプリ

AIの会話パートナーと話すだけ。一文ごとに添削され、あなたの言語で解説が返ってきます。9言語、A1からC2まで。

タグ:npmswarmbee-jssupply chain attackcrypto walletgithub actions

同じ日のニュース

すべて見る →

関連カテゴリ: セキュリティ

すべて見る →