ReversingLabsは3月12日(米国時間)、「BIPClip: Malicious PyPI packages target crypto wallet recovery passwords」において、暗号資産ウォレットの回復フレーズの窃取を目的とする悪意のあるPythonパッケージをPyPIから複数発見したと報じた。ReversingLabsはこれらパッケージを使用する一連のキャンペーンを「BIPClip」と名付けている。
悪意のあるPythonパッケージの詳細
ReversingLabsがキャンペーンの調査で発見した悪意のあるPythonパッケージは次の7つ。これらパッケージはすでにPyPIから削除されている。
- jsBIP39-decrypt
- bip39-mnemonic-decrypt
- mnemonic_to_address
- erc20-scanner
- public-address-generator
- hashdecrypt
- hashdecrypts
これらパッケージは2つ以上組み合わせることで悪意のある動作をするように設計されており、単独では動作しないという。最初に発見された組み合わせは、「mnemonic_to_address」と「bip39-mnemonic-decrypt」の2つ。mnemonic_to_addressはドキュメントの説明通り、ユーザーの秘密のニーモニックシードフレーズからアドレスを生成する機能を持つ。実装は正規のPythonパッケージ「eth-account」のラッパーとされるが、bip39-mnemonic-decryptモジュールの関数を呼び出す処理が追加されている。
bip39-mnemonic-decryptには明らかに悪意のある実装が含まれており、受け取ったデータ(ニーモニックシードフレーズ)をBase64でエンコードして脅威アクターのサーバに送信する機能を持つ。この処理はイーサリアムのハッシュ値を計算する一般的な関数名「keccak256」を使用した「cli_keccak256」という関数内で実装しており、詳しく解析しないと悪意のある処理に気が付かないようにしている。
悪意のあるPythonパッケージの影響と対策
ReversingLabsの調査によると、これらパッケージはこれまでに約300~4,300回ダウンロードされたとみられている。最も多くダウンロード(約4,300回)された「hashdecrypt」は2022年12月から約1年間にわたり配布が継続したため、一部の開発者およびプロジェクトに影響を与えたとみられている。
このキャンペーンで配布されたPythonパッケージは、依存関係の上位に位置するプライマリーパッケージから悪意のある処理を検出できないように構成されている。そのため、開発者には依存しているすべてのパッケージを解析し、安全を確認してから利用することが推奨されている。
なお、関数名から処理を推測する方法で手早く解析すると悪意のあるコードを見逃すように設計されているため、関数名にとらわれずにすべての処理を精査することが望まれている。