Reddit のスレッドにて、ある椅子モデルの入った「.blend」ファイルから、マルウェアが検出されたという投稿が行われています。

 L0rdCinn 氏によると、これは様々なプラットフォームでランダムな名前で配布されている .blend ファイルで、モデル配布サービスの管理者に DM(ダイレクトメッセージ)で依頼が来ていた可能性があるそうです。

 もしユーザープリファレンスの Auto Run Python Scripts(Python スクリプトの自動実行)を有効にしていた場合、この blend ファイルを開くとマルウェアスクリプトを Blender を通じて実行してしまいます。

 スクリプトは暗号化されたコードを復号し、Windows の Powershell を呼び出して他のリモートサーバと繋がるバックドアを開いた後、キーロガーやトロイをインストールするようです。Windows Defender は検知できません。

対策方法

 読み込み時のスクリプトの自動実行を無効化することで、少なくとも知らずに実行してしまうのを回避できます(デフォルトでは無効)。

  1. 「編集メニュー」から「プリファレンス...」を開きます。
  2. 「セーブ&ロード」タブ内の「Python スクリプトの自動実行」無効にします。
プリファレンスで自動実行を無効化
プリファレンスで「Pythonスクリプトの自動実行」を無効化

スクリプト自動実行の確認ダイアログ

 無効時、開いた .blend ファイルに自動実行する Python スクリプトが入っていた場合は、Blender がそのスクリプトを実行するかどうかをダイアログで確認してきます。

自動実行確認ダイアログ
自動実行の確認ダイアログ

 自作などの問題のなさそうな .blend ファイルであれば「実行可能にする」を、わからない物であれば「無視」を使用します。

除外するフォルダーの設定

 スクリプトのある .blend ファイルの読み込み時に毎回ダイアログで確認するのが面倒であれば、「除外パス」に自動実行しないフォルダーを指定し、ダイアログ表示を抑止できます。

除外するフォルダーの設定
除外するフォルダーの設定
  1. 「編集メニュー」から「プリファレンス...」を開きます。
  2. 「セーブ&ロード」タブ内の「Python スクリプトの自動実行」有効(①)にします。
  3. 下の「除外パス」右端の[+]ボタン(②)をクリックします。
  4. 追加されたパスのフィールド(③)に除外するフォルダーのパスを指定します。右の「フォルダー」アイコンをクリックしてもいいのですが、ファイルブラウザーのオプションの「相対パス」を無効にする必要があるかもしれません。

 「ダウンロード」フォルダーや「デスクトップ」フォルダーなどの一時的に利用する場所を登録しておけば、誤って実行してしまうリスクが減ります。

問題があるかどうかを確認する方法

 自動実行は阻止できたものの、そのファイルに問題があるかどうかはどうやって確認・判断すればいいのでしょうか。

利用者のコメントやレビューから判断する

 配布サイトのコメントやレビューを見て問題があるかどうかをある程度は判断できるます。ただし多くの人が利用していたり、自演が排除されていないと信憑性がなくなります。

用途から判断する

 そのアセットが家具や小物などのアニメーションしない物であれば、スクリプトが使用されていることはほぼありません。

 長さや大きさをインタラクティブに設定できるアセットでは使用されている可能性もありますが、大抵はドライバーかジオメトリノードで実現されていることが多いです。

Rigify アドオン使用のアセットの場合

 一方、キャラクターなどでは「Rigify」によるリグが使用されている物があります。

 Blender にバンドルされている「Rigify アドオン」では、調整用の「メタリグ」アーマチュアから変形用のリグを作成し、ファイルを保存すると、そのファイルに操作用の「rig_ui.py」スクリプトが付加されます。実は今回のマルウェアは、このスクリプトの改造版の中に隠されていたそうです。

 そのため、リギングに Rigify を使用したアセットの場合はスクリプトを自分で確認するなどの注意が必要になります。

公式でバンドルされた Rigify アドオンを自分で使用して作成したリグの場合は問題ありません

スクリプトの確認方法

 .blend ファイルに付与されているスクリプトは、次の方法で確認できます。

  1. 一番上のタブを「スクリプト作成」(①)に変更します。
  2. 中央に表示されている「テキストエディター」の真ん中の「文書アイコン」(②)をクリックし、ドロップダウンから対象のスクリプトを選択します。
スクリプトの確認
スクリプトの確認方法

 スクリプトにマルウェアが含まれているかどうかは、知識がないと判断がむずかしいかもしれませんが、以下のような方法もあります。

  • AI サービスにスクリプトを診断してもらう。可能なら複数のサービスによる診断を行う
    マルウェア自体の探知能力はありませんので取り消しいたします。申し訳ございませんでした。
  • 「rig_ui.py」の場合、実際に自分で Rigify アドオンを使用してメタリグから「リグを作成」したファイルを保存し、疑わしいファイル内の同名のスクリプトと比べる

 なお、報告されていた Reddit のスレッドには、暗号化されたマルウェアの実行コードを復元するコードのスクリーンショットがあります。

終わりに

 そもそもフリーや出所の怪しいアセットを使わなければ回避できる……といいたいところですが、通販でも詐欺が多発している現状では有償でも確実とはいえなくなってきています。

 Blender 界隈は割と性善説的なコミュニティで、この方面はあまり重要視されてこなかったように思います(もしくは余裕がなかっただけかもしれません)。現在、アセット関連のシステムの強化が進行中ですが、安全面にも配慮されるようになって欲しいです。

次の記事 前の記事

X(twitter) Facebook