キャラクターを倒すとリモートコード実行が可能になるSource Engineの脆弱性
タレコミ by headless
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の脆弱性 More ログイン