FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.26.0, FreeRDPs RDPEAR NDR parser accepts one non-null NDR pointer ref-id for multiple logical pointer fields without tracking the pointed objects expected NDR type or ownership. When the same ref-id is reused across two pointer fields, the parser assigns the same heap object to both output fields. The generic destructor later walks each field independently and destroys/frees both pointers. This causes a malicious-server-triggerable heap use-after-free / double-free in the FreeRDP clients RDPEAR authentication-redirection path. This vulnerability is fixed in 3.26.0.
The product calls free() twice on the same memory address.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Freerdp | Freerdp | * | 3.26.0 (excluding) |
| Red Hat Enterprise Linux 10 | RedHat | freerdp-2:3.10.3-12.el10_2.6 | * |
| Red Hat Enterprise Linux 10.0 Extended Update Support | RedHat | freerdp-2:3.10.3-3.el10_0.9 | * |
| Freerdp3 | Ubuntu | noble | * |
| Freerdp3 | Ubuntu | questing | * |
| Freerdp3 | Ubuntu | resolute | * |
| Freerdp3 | Ubuntu | upstream | * |