ゲームでキャラクターを倒すとリモートコード実行が可能になるSource Engineの脆弱性 26
ストーリー by headless
必勝 部門より
必勝 部門より
ゲーム内キャラクターを倒すことでリモートからのコード実行が可能となるValveのSource SDKの脆弱性について、発見したOne Up Securityが解説している(One Up Securityの記事、
The Vergeの記事)。
脆弱性が存在するのは倒されたキャラクターに適用されるラグドールモデルの処理に関する部分だ。Source Engineではマップファイルにカスタムコンテンツを格納することでユーザーがマップにコンテンツを追加できる。ラグドールモデルファイルをオリジナルと同じリソースパスでマップファイルに格納すれば、オリジナルを置き換えることが可能となる。
ラグドールモデルのルールはトークン化して読み込まれるが、トークン化の際に適切な境界チェックが行われない。そのため、特別に細工したラグドールデータを読み込ませるとバッファーサイズを超えるトークンが生成され、バッファーオーバーフローが発生する。さらにsteamclient.dllではASLRが有効になっていないため、メモリーアドレスは予測可能だという。PoCは30日以内の公開が予告されており、Shell32.dllを読み込ませてcmd.exeを実行するものとのこと。
報告を受けたValveでは、Counter Strike: Global OffensiveやTeam Fortress 2、Half-Life 2: Deathmatch、Portal 2、Left 4 Dead 2などの修正を行い、パッチの提供を6月に開始している。
脆弱性が存在するのは倒されたキャラクターに適用されるラグドールモデルの処理に関する部分だ。Source Engineではマップファイルにカスタムコンテンツを格納することでユーザーがマップにコンテンツを追加できる。ラグドールモデルファイルをオリジナルと同じリソースパスでマップファイルに格納すれば、オリジナルを置き換えることが可能となる。
ラグドールモデルのルールはトークン化して読み込まれるが、トークン化の際に適切な境界チェックが行われない。そのため、特別に細工したラグドールデータを読み込ませるとバッファーサイズを超えるトークンが生成され、バッファーオーバーフローが発生する。さらにsteamclient.dllではASLRが有効になっていないため、メモリーアドレスは予測可能だという。PoCは30日以内の公開が予告されており、Shell32.dllを読み込ませてcmd.exeを実行するものとのこと。
報告を受けたValveでは、Counter Strike: Global OffensiveやTeam Fortress 2、Half-Life 2: Deathmatch、Portal 2、Left 4 Dead 2などの修正を行い、パッチの提供を6月に開始している。
脆弱性じゃない。 (スコア:5, おもしろおかしい)
#仮面ライダーエグゼイドが面白い
Re:脆弱性じゃない。 (スコア:2, 参考になる)
ソースエンジンは野良ユーザの立てたサーバに導入されているMODを接続時にクライアントに落とさせることができるので、この脆弱性はヤバいのですよ。
あとオンライプレイしていなくても、カスタムマップやカスタムモデルはSteam WorkshopというValve公式のプラットフォームからダウンロードさせることができるため、シングルプレイしかしてなくても危険はあります。
Re: (スコア:0)
PCゲームはMODで改変できますからね。ただ開発元がMODに前向きな場合この手の動作を脆弱性と呼ぶかどうかは怪しい。というかこんな回りくどいことをしなくても配布したコードを簡単に実行できるゲームが結構ある。例えば有名ドコロだとスカイリム等。
Re: (スコア:0)
MODに前向きだったとしても、システム改変(改ざん?)を伴う挙動はあかんやろ。。。
#HDDバースト で検索
Re: (スコア:0)
オンラインゲームでサーバーに接続することが回りくどいとは思いませんが。
Re: (スコア:0)
SAO辺りでこの脆弱性をモデルにしたエピソードを作れそうですね。
Re: (スコア:0)
ネトゲ(死語)ならチート
Re: (スコア:0)
ネットワーク接続は出来たとしても別付けのアダプターを使う必要があり、本体のファームウェアの書き換えも出来ない頃の機種なら確かに裏技扱いですね。
こういうのとか
FF6に任意のコードを実行できる脆弱性が発見される
https://it.srad.jp/story/15/04/21/0428213 [it.srad.jp]
ちなみに発見者のおやつさんは、TASを使ったプレイやROM解析より、ロマサガシリーズを人間として間違ってるレベルの縛りプレイでバグ技なしまたは極めて限定的にしか使わないプレイでクリアする事で有名です。
電子マネー (スコア:0)
FF6でバグ技を制限しなかったらひどい目にあったのでバグ技禁止するようになったのかと
Re: (スコア:0)
FF6はひたすら楽してシリーズで、レベル制限等の縛りなし・余計な稼ぎなし・無駄な戦闘もなし・編集は頑張らない、というコンセプトでやっており、ひたすら楽をした結果です。
当然、楽してるのか怪しい事は多々ありますけど。
ロマサガ3はひらめきだけで最小戦闘回数とか、セレクトボタン禁止RTAとか、そういう狂った縛りが入ります。
ハッカーとゲーマーの対決 (スコア:2)
ハッカー「リモートコード実行されたくなかったら敵1体も倒すな!」
ゲーマー「はい」
PC「デデーン ゲームクリアおめでとう」
ハッカー「」
Re: (スコア:0)
倒す過程で生じる血しぶきの溜りはドール化してないんだろうか?
まあ、意図しない悪意のコード実行されうる (スコア:1)
ので、脆弱性っていえばそうか。
# 任意コード実行とか穴どころではないけど、意図しない悪意あるコードが実行されるわけじゃないから、脆弱性とはいえない、のか?
M-FalconSky (暑いか寒い)
それなんてニーアオートマタ (スコア:1)
ニーアオートマタ、すっごい楽しかった
それなんてROBOTICS;NOTES (スコア:0)
アニメでいうと14話。
キャラクターを倒すことでリモートからのコード実行 (スコア:1)
敵を無敵にすれば対策完了ですね。
そもそもWindowsのASLRは期待するほどのものじゃない (スコア:0, オフトピック)
Windowsは、*nixというかgcc/clangで言うところの-fpic/-fPIC相当の機能にしか対応してないだろ。
-fpie/-fPIE相当の機能は完全には未対応。
というより、今時、拡張子でファイルが実行可能かどうか判定していたり、
如何なる権限があっても、使用中のファイルを書き換えできなかったりするWindowsでは、
今後も位置独立実行形式には対応できず、完全な意味でのASLR対応は事実上不可能。
ましてやOpenBSDやLinuxのようにカーネル自体にもASLRを施すKASLR対応なんて夢のまた夢。
とまあ散々Disっといてなんだが、PIC/PIEってのは今時のCPUでは無視できるレベルであってもリソース食うし、
髪の毛1本分であってもパフォーマンスの欲しいゲームや動画系においては、PIC/PIEオフでビルドするなんて普通によくある話じゃないんだろうか。
実際、X.orgの動作に欠かせないMesa 3Dや、x264、x265、ffmpegあたりをno-pic、no-pieでビルドしてるディストリなんてごまんとあるだろ。
Source EngineがASLR有効でないからといって大騒ぎする意味がわからない。
境界チェックが微妙ってのも同様の理由でSSPオフでビルドしてるんだろうな。
さすがにそこまでやってると、わずかなバグでもすぐにこういう脆弱性に発展するからどうかと思うが、
ゲーマーからしたらそれでも削ってビルドしていて欲しいんじゃないだろうか。
Re: (スコア:0)
実行中のファイル書き換えとASLRになんの関係があるんだ?
Re: (スコア:0)
> 実行中のファイル書き換えとASLRになんの関係があるんだ?
まずはOSの原理を勉強しましょう
勉強すれば
実行中のファイル書き換えとASLRの関係も理解できるようになります
Re: (スコア:0)
実行ファイルの基底アドレスの変更は実行ファイル自身の変更を伴わなくてもできるが?
そもそもメモリ上にあるのにどうしてファイルの変更が必要だと思ったの?
Re: (スコア:0)
>> というより、今時、拡張子でファイルが実行可能かどうか判定していたり、
未だにこんなことを言ってるバカがいるとは……
MS-DOSの時代からヘッダーでチェックしてるぞ。
いつかは根絶されるのだろうか? (スコア:0)
例えば百年後とか千年後とか、遠い未来であれば、こういう問題も乗り越えられているのだろうか。
Re:いつかは根絶されるのだろうか? (スコア:1)
根絶は無理でも隔離なら可能ですね
マシンパワーにあかせて全てを仮想サンドボックスにしてしまえばいい
上層へ抜ける穴をどう塞ぐかすら多層構造の力技みたいな
要は致命的な攻撃が致命的なところに届かなければよいので
# 当たらなければどうということはない
Re: (スコア:0)
IBMの新しいメインフレーム向けCPU、z14がこの方向ですね。
メモリ、ファイル上のすべてのデータを力任せに暗号化してしまう。
Re: (スコア:0)
「プログラマーが気をつければいい」 [developers.srad.jp]とかいう老害がのさばっているうちは無理だろ。
Re: (スコア:0)
人間ができる事なら人工知能でもできるようになるはず。
サーバー攻撃・防御の双方が技術的特異点を超えて、
人間ハッカーでは手を出しようがなくなる日はそう遠くないかもしれない。