{"id":"CVE-2026-27015","summary":"FreeRDP: Smartcard NDR Alignment Padding Triggers Reachable WINPR_ASSERT Abort (Client DoS)","details":"FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, a missing bounds check in `smartcard_unpack_read_size_align()` (`libfreerdp/utils/smartcard_pack.c:1703`) allows a malicious RDP server to crash the FreeRDP client via a reachable `WINPR_ASSERT` → `abort()`. The crash occurs in upstream builds where `WITH_VERBOSE_WINPR_ASSERT=ON` (default in FreeRDP 3.22.0 / current WinPR CMake defaults). Smartcard redirection must be explicitly enabled by the user (e.g., `xfreerdp /smartcard`; `/smartcard-logon` implies `/smartcard`). Version 3.23.0 fixes the issue.","aliases":["GHSA-7g72-39pq-4725"],"modified":"2026-08-12T16:24:55.507392Z","published":"2026-02-25T20:44:14.152Z","related":["SUSE-SU-2026:1632-1","SUSE-SU-2026:1633-1","SUSE-SU-2026:1634-1","SUSE-SU-2026:1635-1","SUSE-SU-2026:1640-1","openSUSE-SU-2026:10611-1","openSUSE-SU-2026:20632-1"],"database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/27xxx/CVE-2026-27015.json","cna_assigner":"GitHub_M","cwe_ids":["CWE-617"]},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/27xxx/CVE-2026-27015.json"},{"type":"ADVISORY","url":"https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-7g72-39pq-4725"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-27015"},{"type":"FIX","url":"https://github.com/FreeRDP/FreeRDP/commit/65d59d3b3c2f630f2ea862687ecf5f95f8115244"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/freerdp/freerdp","events":[{"introduced":"0"},{"fixed":"b933ae18d9ad2a1d73c610868fcc30eb61654070"},{"fixed":"65d59d3b3c2f630f2ea862687ecf5f95f8115244"}],"database_specific":{"cpe":"cpe:2.3:a:freerdp:freerdp:*:*:*:*:*:*:*:*","extracted_events":[{"introduced":"0"},{"fixed":"3.23.0"}],"source":["CPE_RANGE","REFERENCES"]}}],"versions":["3.5.1","3.5.0","3.4.0","3.3.0","3.2.0","3.1.0","3.0.0","3.0.0-rc0","3.0.0-beta4","3.0.0-beta3","3.0.0-beta2","3.0.0-beta1","2.0.0","2.0.0-rc4","2.0.0-rc3","2.0.0-rc2","2.0.0-rc1","2.0.0-rc0","2.0.0-beta1+android11","2.0.0-beta1+android10","1.2.0-beta1+android9","1.2.0-beta1+android7","1.1.0-beta+2013071101","1.1.0-beta1+ios4","1.1.0-beta1+android5","1.1.0-beta1+android4","1.1.0-beta1+ios3","1.1.0-beta1+ios2","1.1.0-beta1+android3","1.1.0-beta1+android2","1.1.0-beta1+ios1","1.1.0-beta1","1.0.1","1.0.0","1.0-beta5","1.0-beta4","1.0-beta2","1.0-beta1"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-27015.json","vanir_signatures_modified":"2026-08-12T16:24:55Z","vanir_signatures":[{"deprecated":false,"digest":{"function_hash":"249720768176120812831315480396588295080","length":5356},"id":"CVE-2026-27015-0dad0f98","signature_type":"Function","signature_version":"v1","source":"https://github.com/freerdp/freerdp/commit/65d59d3b3c2f630f2ea862687ecf5f95f8115244","target":{"file":"libfreerdp/utils/smartcard_pack.c","function":"smartcard_unpack_transmit_call"}},{"target":{"file":"libfreerdp/utils/smartcard_pack.c","function":"smartcard_pack_write_size_align"},"deprecated":false,"digest":{"function_hash":"49324342168807349420317225241822187794","length":405},"id":"CVE-2026-27015-73f77e97","signature_type":"Function","signature_version":"v1","source":"https://github.com/freerdp/freerdp/commit/65d59d3b3c2f630f2ea862687ecf5f95f8115244"},{"deprecated":false,"digest":{"function_hash":"13717206073661472017560020459944956386","length":1878},"id":"CVE-2026-27015-7d843002","signature_type":"Function","signature_version":"v1","source":"https://github.com/freerdp/freerdp/commit/65d59d3b3c2f630f2ea862687ecf5f95f8115244","target":{"file":"libfreerdp/utils/smartcard_pack.c","function":"smartcard_ndr_read_ex"}},{"deprecated":false,"digest":{"line_hashes":["49062902611032142872430595541952237215","101119164304543650237786689657180939639","259432921642292607835187741648161089254","33152744507043612731734638928103545463","267570237703131139047020342392496968720","290351939436088060841628303463161773981","54811845554797339153523965492075205341","220554179869516830966414692831915598286","48200228474497942971011073341993962972","246494769594298249368006423759170099131","23692947918821360669569594321055935447","280753457785111199995423954614382215231","228779694103744265492655278797853498811","134590940223276799457098032112384670892","140899171716289293396488485460445500941","289511441888475779176802933210851252740","54811845554797339153523965492075205341","220554179869516830966414692831915598286","48200228474497942971011073341993962972","51958407260722885305949848775393791597","145361581686652690623762497893617969985","141666735786874443454233492416136249769","285270250027585897963563952709346137815","104801202021015109184091576497198590611","196634646826967230641403448120084228484","25067253159767318617643774051620606786","189518081931135115861369657336619555491","193455241254515112551700518533074594260","301653198004121417173214663612466923363"],"threshold":0.9},"id":"CVE-2026-27015-93db84ef","signature_type":"Line","signature_version":"v1","source":"https://github.com/freerdp/freerdp/commit/65d59d3b3c2f630f2ea862687ecf5f95f8115244","target":{"file":"libfreerdp/utils/smartcard_pack.c"}},{"deprecated":false,"digest":{"function_hash":"107273465921364823511672685695438411212","length":225},"id":"CVE-2026-27015-a9d2108d","signature_type":"Function","signature_version":"v1","source":"https://github.com/freerdp/freerdp/commit/65d59d3b3c2f630f2ea862687ecf5f95f8115244","target":{"file":"libfreerdp/utils/smartcard_pack.c","function":"smartcard_unpack_read_size_align"}},{"signature_type":"Function","signature_version":"v1","source":"https://github.com/freerdp/freerdp/commit/65d59d3b3c2f630f2ea862687ecf5f95f8115244","target":{"file":"libfreerdp/utils/smartcard_operations.c","function":"smartcard_irp_device_control_decode"},"deprecated":false,"digest":{"function_hash":"26164289608221616998368509404083771207","length":5865},"id":"CVE-2026-27015-c9d5338a"},{"deprecated":false,"digest":{"threshold":0.9,"line_hashes":["76008029643167808644104197964172399478","24796429467790723759154911295355172044","134682107549982568868867559178026932391","207599937798754946476253502693104897051"]},"id":"CVE-2026-27015-e3580c3c","signature_type":"Line","signature_version":"v1","source":"https://github.com/freerdp/freerdp/commit/65d59d3b3c2f630f2ea862687ecf5f95f8115244","target":{"file":"libfreerdp/utils/smartcard_operations.c"}}]}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:P"}]}