
evm-unitsは、Rustのパッケージです。
Rustではcrates.ioというRust向けのパッケージリポジトリを使うことができます。
いろいろな新しいコンピュータ言語が登場していますが、これらの多くはこういったソフトウェア資産の共有環境をベースにして盛り上がっています。
また今回も、パッケージリポジトリを舞台とした脅威活動が確認されています。
- uniswap
Uniswapは、2018年11月に立ち上げられたDEX(分散型取引所)です。
Ethereumなどの仮想資産が取引されます。
これはこのお話の中ではなんら問題のない健全な環境です。 - uniswap-utils
これは名前から容易に想像できるように、uniswapを利用する際に有効な機能が詰め合わせになったと思わせるRust向けパッケージです。
crates.ioで公開されています。
このソフトウェアの中そのものには悪意ある機構は含まれていません。
しかしこのソフトウェアの中に依存関係として指定されているものにevm-unitsがあります。
これを依存関係で取り込み、そのなかの機能を呼び出します。 - evm-units
これもcrates.ioで公開されているソフトウェアです。
これは直接人間に参照されることを目的として公開されているものではありません。
別の公開されたソフトウェアの依存関係で入手されることを想定して公開されています。
utilsという名称ですので、いくつかの機能が詰め合わせになっています。
機能の中に、get_evm_version()という関数が含まれます。
もっともらしい内容になっています。
Ethereumを取り扱う際に、EVMというものを使います。
EVMはEthereum Virtual Machineです。
EVMは、Ethereumブロックチェーン上でスマートコントラクトを実行するソフトウェア環境です。
これのバージョン情報を取得するということが期待される機能です。
実際にこの名前から期待できる機能は実行時に提供されます。
しかし想定される機能でない機能も一緒に実行されます。 - evm-unitsのget_evm_versionの利用者が期待しない機能
get_evm_version機能の実行時に、実行環境のOS種別が判定されます。
このマルウェアが対応しているOS環境は、LinuxとmacOSとWindowsです。
これらのOSで動作していることが判定されると、マルウェアはその動作環境で利用できる種類のペイロードを入手します。
evm-unitsは、セカンドステージローダーを埋め込まれたマルウェアだったのです。
このようにして、利用者が期待はしていませんが、脅威アクターが期待する機能が実行されるというわけです。
はい、ソフトウェアサプライチェーン攻撃です。
入手して使用しようとするすべてのコードを、全面的に詳細に確認してから利用するということは簡単なことではありません。
ソフトウェア開発の効率化においては公開されたソフトウェア資産の活用は非常に重要な要素ですが、その取り組みの持つ危険さも認識しておく必要がありそうです。
Malicious Rust Crate evm-units Serves Cross-Platform Payloads for Silent Execution
https://socket.dev/blog/malicious-rust-crate-evm-units-serves-cross-platform-payloads
| この記事をシェア |
|---|