---
id: CVE-2026-85089
title: >-
  FreeRDP versions 3.0.0 through 3.30.0 (before 3.31.0) transmit uninitialized
  heap memory in Save Session Info PDU reserved padding fields
summary: >-
  FreeRDP versions 3.0.0 through 3.30.0 (before 3.31.0) transmit uninitialized
  heap memory in Save Session Info PDU reserved padding fields. Three PDU
  writers in libfreerdp/core/info.c (rdp_write_logon_info_v2,
  rdp_write_logon_info_plain, …
severity: medium
cvss: 6.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N'
cwe:
  - CWE-908
vendor: freerdp
product: freerdp
affected:
  - 'freerdp >= 3.0.0, < 3.31.0'
patched:
  - freerdp 3.31.0
published: '2026-09-03'
updated: '2026-09-09'
sourceUpdated: '2026-09-09T19:12:57.990'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-85089'
references:
  - url: 'https://github.com/FreeRDP/FreeRDP'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/FreeRDP/FreeRDP/blob/3.30.0/libfreerdp/core/info.c#L1541
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/FreeRDP/FreeRDP/commit/056cede398d71c1f2540baebc26ec3327a249301
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/FreeRDP/FreeRDP/commit/483c9388119f06bac420d92053cff9ef94e83bea
    label: disclosure@vulncheck.com
  - url: 'https://github.com/FreeRDP/FreeRDP/releases/tag/3.31.0'
    label: disclosure@vulncheck.com
  - url: 'https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-v649-94v2-p72q'
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/freerdp-before-3.31.0-information-disclosure-via-uninitialized-heap-memory
    label: disclosure@vulncheck.com
  - url: 'https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-v649-94v2-p72q'
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
tags:
  - nvd
epss: 0.00416
epssPercentile: 0.3548
ingestedAt: '2026-09-08T21:11:12.290Z'
---

## Overview

FreeRDP versions 3.0.0 through 3.30.0 (before 3.31.0) transmit uninitialized heap memory in Save Session Info PDU reserved padding fields. Three PDU writers in libfreerdp/core/info.c (rdp_write_logon_info_v2, rdp_write_logon_info_plain, and rdp_write_logon_info_ex) use Stream_Seek instead of Stream_Zero for reserved pad bytes (up to 576 bytes), leaving previously freed heap contents in the outgoing PDU. Because the send buffer is allocated with malloc (not zeroed), stale heap data — which may include cleartext credentials from prior sessions — can be sent to the receiving peer. FreeRDP-based servers using rdpUpdate::SaveSessionInfo and freerdp-proxy (which forwards these PDUs) are affected, allowing disclosure of server/proxy process memory to a downstream client.

## Affected

- `freerdp >= 3.0.0, < 3.31.0`

## Remediation

Upgrade past the affected range:

- `freerdp 3.31.0`
