Python向けパッケージ管理サービス「PyPI」で公開されていた「mistralai」のバージョン2.4.6が改ざんされ、認証情報を盗み出すマルウェアを実行する攻撃に悪用されたとして、Microsoft Threat Intelligenceが調査を進めています。
このマルウェアはLinux上で開発環境に紛れ込むように動作する一方、ロシア語環境では活動を止め、イスラエルまたはイランに関連すると判断したシステムでは6分の1の確率で破壊的なコマンドを試みると報告されています。
PyPIパッケージの改ざんでマルウェアを実行
Microsoft Threat Intelligenceの説明によると、攻撃者は「mistralai」パッケージのバージョン2.4.6にコードを挿入し、パッケージの読み込み時に追加のペイロードを取得して実行する仕組みを仕込みました。
問題のコードは、パッケージ内のmistralai/client/__init__.pyに追加されていたとされています。
感染した環境では、Linuxの一時ディレクトリに/tmp/transformers.pyzというファイルをダウンロードし、後段のペイロードを起動する動きが確認されています。
パッケージをインストールしただけで必ず発症するとは限りませんが、コードがパッケージのインポート時に実行されるため、該当バージョンを利用した環境は慎重な確認が必要です。
詳しい調査情報は、Microsoft Threat Intelligenceの投稿で確認できます。
正規の機械学習ライブラリに似せて検知を逃れる
報告によると、ダウンロードされるファイル名には、広く使われている機械学習ライブラリ「Transformers」を連想させる名称が使われています。
マルウェアはLinux上の機械学習開発環境に紛れ込むように設計されており、開発者が普段扱う関連ファイルに見せかけることで、不審な存在に気づかれにくくする狙いがあると考えられます。
ただし、ファイル名が有名なライブラリと似ていても、正規の「Transformers」ライブラリそのものを意味するわけではありません。
見覚えのある名前だけで安全だと判断せず、取得元、インストールしたパッケージのバージョン、ファイルの作成時刻や実行履歴を照合することが重要です。
ロシア語環境では停止し、イスラエル・イランでは破壊を試みる
このマルウェアの特徴は、実行環境を調べて活動内容を変える点にあります。
ロシア語環境だと判定した場合は攻撃を中止し、イスラエルまたはイランにあると判断した場合は、6分の1の確率でrm -rf /を実行しようとすると報告されています。
rm -rf /は、Linux環境のファイルを再帰的に削除する意図を持つ非常に危険なコマンドです。
実際に実行された場合の影響は、権限やOS側の保護機能、実行環境の設定などに左右されますが、システムや保存データが利用不能になるおそれがあります。
国や言語の判定方法、判定結果がどのように実行制御へ使われるかについては、報告された情報の範囲を超えて断定できません。
ロシア語パックの導入は対策にならない
ロシア語環境では活動を止めるという説明から、「ロシア語の言語パックを入れれば回避できるのではないか」という反応も出ています。
しかし、言語設定を変更しても、すでに侵入したマルウェアの削除や窃取された認証情報の無効化にはつながりません。
また、攻撃者が判定方法を変更すれば、言語パックに依存した回避策は機能しなくなる可能性があります。
言語設定を感染防止策として扱うのではなく、改ざんされたパッケージを使わないことと、侵害の有無を調査することを優先してください。
感染が疑われる場合に取るべき対応
Microsoft Threat Intelligenceは、感染した可能性のあるLinuxホストをネットワークから隔離し、ペイロードの配布先をブロックするとともに、関連ファイルを調査するよう勧めています。
影響を受けた可能性がある場合は、次の対応を順番に進めるとよいでしょう。
- 対象ホストをネットワークから隔離し、外部との不審な通信を止めます。
- インストール済みパッケージと依存関係を確認し、「mistralai」のバージョン2.4.6を利用していないか調べます。
/tmp/transformers.pyzや関連する不審なファイル、プロセス、通信履歴を確認します。- 対象ホストから外部へ接続した形跡を調べ、認証情報やトークンが流出した可能性を評価します。
- 侵害が疑われる認証情報を無効化し、クリーンな環境から再発行します。
- 必要に応じてバックアップから復旧し、OSや依存パッケージを信頼できる状態に戻します。
不審なファイルを見つけても、調査前に不用意に実行したり、証拠を消してしまう形で削除したりしないでください。
被害範囲の把握が難しい場合や重要なシステムが影響を受けた場合は、組織のセキュリティ担当者や専門家に相談することが重要です。
開発環境でできる予防策
Pythonパッケージを利用する開発環境では、依存関係を固定し、更新時にパッケージ名やバージョン、配布元を確認する運用が有効です。
特に、AIや機械学習の開発環境では依存パッケージが多くなりやすいため、ロックファイルや内部ミラーを活用し、承認済みのパッケージだけを導入できる仕組みを整えるとリスクを抑えられます。
また、開発用の認証情報に本番環境と同じ権限を与えないことや、不要な秘密情報を環境変数や設定ファイルに置き続けないことも、情報流出時の被害を小さくするうえで役立ちます。
まとめ
PyPIの「mistralai」バージョン2.4.6では、インポート時に外部からペイロードを取得して実行するコードが仕込まれたとMicrosoft Threat Intelligenceが報告しています。
ロシア語環境で攻撃を止める一方、イスラエルまたはイランと判定した環境では6分の1の確率でシステム削除を試みるという挙動も指摘されています。
ロシア語の言語パックを導入することは、感染や情報流出への対策にはなりません。
該当バージョンを使った可能性がある場合は、ホストの隔離、関連ファイルと通信の調査、認証情報の更新を優先してください。
