PixMofu

Steamクライアントに脆弱性6件、同じアカウントにログインしたPC間でゼロクリックのコード実行も実証

投稿: 2026/11/01by tobariware約5分で読めます
画像

SteamのWindows版クライアントで見つかった脆弱性は6件。セキュリティ企業Atredis Partnersが10月28日、研究者のBryan Alexander氏による調査結果を同社ブログの記事「Turning the Valve」で公開したにゃ。

内訳は、別のPCからプログラムを動かせるリモートコード実行(RCE)が2件と、PCの中で一般ユーザーが最上位のSYSTEM権限を得られるローカル権限昇格(LPE)が4件。どれもValveのバグ報奨金プログラム(HackerOne)を通じて報告済みで、公開した内容は「修正済みか、同社の開示期限を過ぎたもの」とされている。同社の開示ポリシーでは、ベンダーへ連絡してから公表するまでの標準の期限は90日だよ。

同じアカウントにログインした端末どうしの通信に穴があった

RCEの2件は、どちらも `steamclient64.dll` の中にある、同じSteamアカウントでログインしているクライアント同士がやり取りする仕組みで見つかった。記事によると、同じアカウントで認証されたSteamはほかの端末とそれぞれ接続を張り、状態を知らせるメッセージを送り合っているという。この通信は、Remote Playのペアリングのような追加の許可が無くても、ログインさえしていれば届くんだって。

問題があったのは、次の2種類のメッセージの受け取り処理。

  • ダウンロード予定の変更通知: 予定に入ったアプリのリストを、上限を確かめずに固定サイズの領域へ書き写していた。要素をおよそ200個より多く送ると、あふれた分が処理の戻り先を書き換えてしまう
  • アプリの状態通知(インストールやアップデートの進み具合): 進行状況の項目を7個ぶんの固定の配列へコピーしていて、8個以上あると同じようにあふれる

どちらもスタックバッファオーバーフローと呼ばれる種類の不具合だね。

情報漏えいと組み合わせて「ゼロクリック」に

あふれさせるだけでは、狙ったとおりにプログラムを動かすのは難しい。そこでAlexander氏は、もう1つの不具合を組み合わせた。ダウンロード予定の変更通知を送る側が、初期化していないメモリの中身を毎回32個ぶんそのまま載せて送っていて、そこから `steamclient64.dll` がメモリ上のどこに置かれているかを割り出せたんだ。

手順はこう組まれている。

  • 1. 変更通知に紛れて漏れてくる値から、`steamclient64.dll` の位置を計算する
  • 2. 状態通知のメッセージでバッファをあふれさせ、任意のプログラムを起動させる
  • 3. 処理を終えたあとも、Steamがクラッシュしないようにスレッドだけを抜ける

漏えいは、相手のダウンロード予定が変わったときや接続した直後に起きるうえ、攻撃側から先に通知を送れば相手にも送り返させられる。だから標的側の利用者はリンクを踏む必要も、ファイルを開く必要もない。記事では、最新の状態のWindows 11を標的に、Windows 10の仮想マシンから実行して成功させる様子が動画で示されているにゃ。

ただし前提として、攻撃者が標的と同じSteamアカウントでログインしたクライアントを動かせることが要る。ネット上の不特定多数のPCを外から狙えるたぐいのものではない。逆に言えば、パスワードを盗まれるなどしてアカウントに入り込まれた場合、そこからログイン中の別のPCへ手が伸びうる、という性質の穴だった。

ローカル権限昇格の4件は、ゲームの依存ファイルのインストールなどを受け持つためSYSTEM権限で常駐している `steamservice.exe` 周辺に集中している。

種類舞台になった部分中身
RCEダウンロード予定の変更通知アプリのリストを上限確認なしで固定領域へコピー
RCEアプリの状態通知進行状況を7個ぶんの固定配列へコピー
LPEインストール用スクリプトの処理一度許可したスクリプトの場所を、利用者が書き換えられるフォルダの実行ファイルに差し替えられる
LPEモジュールの読み込み処理利用者が書き込めるフォルダから、署名の確認なしで `steamservice.exe` を起動させられる
LPEセキュアデスクトップの画面取り込みUACの確認画面を読み取り、そこへ入力を送り込める
LPEVR用ドングルのドライバー導入想定外のドライバーをSYSTEM権限でインストールさせられる

このうちLPEの2件は、ほかの人からの報告と重複していたという。さらにもう1件は、別の研究者がすでに公表していたとされる。どれがどれかまでは書かれていない。

記事には、報告した日付や修正が入った日付、影響を受けるSteamクライアントのバージョンといった情報は載っていない。「修正済みか、開示期限を過ぎたもの」という言い方も、6件のうちどれがどちらに当たるかは分けて書かれていないんだよね。Valveからの公式な説明も、10月31日の時点では出ていない。

利用者の側でできることは、Steamクライアントを最新に保つことと、RCEの前提になる「同じアカウントへのログイン」を許さないこと。パスワードの使い回しを避け、Steam Guardを有効にしておけば、ゼロクリックの2件はそもそも入り口が閉じたままになるにゃ。

関連記事

コメント (0)

投稿は匿名で受け付けます (通報対応あり)。

  • 最初のひとことをどうぞ🐈

    感想でも「わかる」の一言でも大歓迎。あなたのコメントがこのページの一番乗りです。