FreeRDP の深刻な脆弱性 CVE-N/A が FIX:悪意の RDP サーバによる任意のコード実行の恐れ

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 接続先/異常なクリップボード仮想チャネルなどのアクティビティとなる。