Reddit のスレッドにて、ある椅子モデルの入った「.blend」ファイルから、マルウェアが検出されたという投稿が行われています。
L0rdCinn 氏によると、これは様々なプラットフォームでランダムな名前で配布されている .blend ファイルで、モデル配布サービスの管理者に DM(ダイレクトメッセージ)で依頼が来ていた可能性があるそうです。
もしユーザープリファレンスの Auto Run Python Scripts(Python スクリプトの自動実行)を有効にしていた場合、この blend ファイルを開くとマルウェアスクリプトを Blender を通じて実行してしまいます。
スクリプトは暗号化されたコードを復号し、Windows の Powershell を呼び出して他のリモートサーバと繋がるバックドアを開いた後、キーロガーやトロイをインストールするようです。Windows Defender は検知できません。
読み込み時のスクリプトの自動実行を無効化することで、少なくとも知らずに実行してしまうのを回避できます(デフォルトでは無効)。
無効時、開いた .blend ファイルに自動実行する Python スクリプトが入っていた場合は、Blender がそのスクリプトを実行するかどうかをダイアログで確認してきます。
自作などの問題のなさそうな .blend ファイルであれば「実行可能にする」を、わからない物であれば「無視」を使用します。
スクリプトのある .blend ファイルの読み込み時に毎回ダイアログで確認するのが面倒であれば、「除外パス」に自動実行しないフォルダーを指定し、ダイアログ表示を抑止できます。
「ダウンロード」フォルダーや「デスクトップ」フォルダーなどの一時的に利用する場所を登録しておけば、誤って実行してしまうリスクが減ります。
自動実行は阻止できたものの、そのファイルに問題があるかどうかはどうやって確認・判断すればいいのでしょうか。
配布サイトのコメントやレビューを見て問題があるかどうかをある程度は判断できるます。ただし多くの人が利用していたり、自演が排除されていないと信憑性がなくなります。
そのアセットが家具や小物などのアニメーションしない物であれば、スクリプトが使用されていることはほぼありません。
長さや大きさをインタラクティブに設定できるアセットでは使用されている可能性もありますが、大抵はドライバーかジオメトリノードで実現されていることが多いです。
一方、キャラクターなどでは「Rigify」によるリグが使用されている物があります。
Blender にバンドルされている「Rigify アドオン」では、調整用の「メタリグ」アーマチュアから変形用のリグを作成し、ファイルを保存すると、そのファイルに操作用の「rig_ui.py」スクリプトが付加されます。実は今回のマルウェアは、このスクリプトの改造版の中に隠されていたそうです。
そのため、リギングに Rigify を使用したアセットの場合はスクリプトを自分で確認するなどの注意が必要になります。
公式でバンドルされた Rigify アドオンを自分で使用して作成したリグの場合は問題ありません
.blend ファイルに付与されているスクリプトは、次の方法で確認できます。
スクリプトにマルウェアが含まれているかどうかは、知識がないと判断がむずかしいかもしれませんが、以下のような方法もあります。
なお、報告されていた Reddit のスレッドには、暗号化されたマルウェアの実行コードを復元するコードのスクリーンショットがあります。
そもそもフリーや出所の怪しいアセットを使わなければ回避できる……といいたいところですが、通販でも詐欺が多発している現状では有償でも確実とはいえなくなってきています。
Blender 界隈は割と性善説的なコミュニティで、この方面はあまり重要視されてこなかったように思います(もしくは余裕がなかっただけかもしれません)。現在、アセット関連のシステムの強化が進行中ですが、安全面にも配慮されるようになって欲しいです。