Critical FreeRDP Clipboard Flaw Could Let Malicious RDP Servers Execute Code
2026/07/23 gbhackers — FreeRDP の Windows クライアントに存在する深刻なヒープバッファ・オーバーフロー脆弱性 CVE-N/A が、悪意の Remote Desktop Protocol (RDP) サーバにより悪用されることで、そこに接続するクライアント上のメモリが破損し、任意のコード実行に至る恐れがある。この脆弱性の影響が顕著なのは、wfreerdp の Clipboard Redirection (CLIPRDR) 仮想チャネルである。具体的には、攻撃者が制御するレスポンスが、クライアントが要求したサイズを超える可能性が生じている。

重大な FreeRDP Clipboard 欠陥
この問題は GHSA-cj9v-h4hq-29jr として追跡されており、FreeRDP バージョン 3.28.0 以下に影響する。すでにバージョン 3.29.0 がリリースされ、この問題は対処されている。
FreeRDP のアドバイザリが強調するのは、すでに wfreerdp の保守は終了しており、使用すべきではないという点だ。それが示すのは、サポート対象である FreeRDP クライアントと現行ビルドへの移行の必要性である。
この脆弱性は、RDP サーバから送信された CLIPRDR_FILECONTENTS_RESPONSE メッセージを、wfreerdp が処理する際に発生する。クリップボード・ベースのファイル転送中に、クライアントはサーバに対して特定量のファイルデータを要求する。
しかし、length 値を上回るペイロードが悪意のサーバから返されても、ディスティネーション・バッファ・サイズとの照合が行われない状態で、CopyMemory での操作で使用される。
脆弱なデータパスには、cliprdr_read_file_contents_response/wf_cliprdr_server_file_contents_response と、CliprdrStreamRead の各関数が関与する。プロトコル・パーサにより、受信メッセージ長から cbRequested が抽出されるが、その長さがクライアントのオリジナル・リクエスト以下に収まっていることは確認されない。
[悪意のある RDP サーバ] │ ▼ CLIPRDR_FILE_CONTENTS_RESPONSE を送信 (dataLen = 65540) │channels/cliprdr/cliprdr_common.c:384 ▼ cliprdr_read_file_contents_response() │ response->cbRequested = response->common.dataLen - 4 → cbRequested = 65536 │ // 検証なし:cbRequested が要求された cb と照合されない │client/Windows/wf_cliprdr.c:2449 ▼ wf_cliprdr_server_file_contents_response() │ clipboard->req_fsize = fileContentsResponse->cbRequested → req_fsize = 65536 │ // 元の cb と比較せずにサーバ値を直接受け入れる │ SetEvent(clipboard->req_fevent) → 待機中のスレッドを起こす │client/Windows/wf_cliprdr.c:249 ▼ CliprdrStream_Read() │ CopyMemory(pv, clipboard->req_fdata, clipboard->req_fsize) │ // pv size = cb = 16384, req_fsize = 65536 │ // 49152 バイトの境界外ヒープ書き込み! ▼[ヒープメモリ破損 → SIGSEGV/プロセスクラッシュ]
この callback は過大な値を clipboard->reqfsize に保存するが、CliprdrStreamRead はサイズが不足しているバッファへと、サーバが提供したデータをコピーする。
たとえば、クライアントが 16 KB のクリップボード・ファイル・コンテンツを要求していても、悪意の RDP サーバから 64 KB のレスポンスが返されるケースが想定される。この操作により、意図されたヒープ割り当てを 48 KB 超えた書き込みが行われ、隣接するヒープ・オブジェクトまたはヒープ管理メタデータが上書きされる可能性がある。
このような破損により、FreeRDP プロセスがクラッシュする状況が生じ得る。それにより、特定のヒープ・レイアウト条件下では、制御フローのハイジャックとリモートコード実行での悪用も想定される。
この悪用の前提として、被害者がクリップボード・リダイレクトを有効にしている状態で、攻撃者が制御する RDP サーバへと接続する必要がある。このクリップボード・サポートはデフォルトで有効化されているため、RDP セッション中のユーザーが、Windows Explorer で Ctrl+V を押してペースト・アクションを実行する際などに、この脆弱なパスに到達する。
それにより引き起こされる侵害のシナリオには、フィッシング攻撃/不正なリモートサポート依頼/テストサーバの露出/RDP インフラの侵害などが含まれる。
ユーザー組織にとって必要なことは、影響を受ける FreeRDP デプロイメントを、バージョン 3.29.0 以降へと速やかに更新することである。さらに、時代遅れの wfreerdp クライアントを使用している環境を特定すべきである。
パッチ適用などの措置が完了するまでの間において、管理者が行うべきことは、信頼できない RDP 接続でのクリップボード・リダイレクトの無効化/アウトバウンド RDP アクセスの制限である。また、接続前のユーザーが、リモートホストの ID と真正性を確認するよう徹底すべきである。
セキュリティ・チームがエンドポイント・テレメトリで監視すべきは、予期しない FreeRDP クラッシュ/不審な RDP 接続先/異常なクリップボード仮想チャネルなどのアクティビティとなる。
訳者後書:リモート接続ソフトウェア FreeRDP の Windows 向けクライアントにおいて、受信データの長さを十分に確認しないことに起因する領域外書き込みの問題が報告されました。接続先から要求したサイズを上回るレスポンスが返される際に処理が乱れ、端末上で意図しないプログラムを実行される危険性があります。安全に利用するためにも、速やかに修正済みのバージョン 3.29.0 以降へと更新し、サポートが終了している古いクライアントの使用を控える必要があります。
You must be logged in to post a comment.