Bug 1854850 (CVE-2020-11095)

Summary: CVE-2020-11095 freerdp: out of bound reads resulting in accessing memory location outside of static array PRIMARY_DRAWING_ORDER_FIELD_BYTES
Product: [Other] Security Response Reporter: Dhananjay Arunesh <darunesh>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: mads, negativo17, oholy, pahan
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: freerdp 2.1.2 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-05-18 20:34:09 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1854852, 1854853, 1855460, 1855461    
Bug Blocks: 1854906    

Description Dhananjay Arunesh 2020-07-08 11:17:22 UTC
In FreeRDP before version 2.1.2, an out of bound reads occurs resulting in accessing a memory location that is outside of the boundaries of the static array PRIMARY_DRAWING_ORDER_FIELD_BYTES. This is fixed in version 2.1.2.

References:
http://www.freerdp.com/2020/06/22/2_1_2-released
https://github.com/FreeRDP/FreeRDP/commit/733ee3208306b1ea32697b356c0215180fc3f049
https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-563r-pvh7-4fw2

Comment 1 Dhananjay Arunesh 2020-07-08 11:18:45 UTC
Created freerdp tracking bugs for this issue:

Affects: epel-all [bug 1854853]
Affects: fedora-all [bug 1854852]

Comment 2 Todd Cullum 2020-07-09 22:29:41 UTC
in libfreerdp/core/update.c's update_write_order_info(), update_prepare_order_info,  and libfreerdp/core/orders.c's update_recv_primary_order() it was possible for update->primary to be outside the bounds of the PRIMARY_DRAWING_ORDER_FIELD_BYTES static array, referenced with PRIMARY_DRAWING_ORDER_FIELD_BYTES[orderInfo->orderType], which could cause an out-of-bounds read due to lack of bounds checking. The patch replaces the static array with a getter function that uses a switch-case to prevent this.

Comment 3 Todd Cullum 2020-07-09 22:37:46 UTC
The flaw is present in libfreerdp-core/orders.c for freerdp-1.0.2. Note this flaw applies to the freerdp CLIENT code.

Comment 5 errata-xmlrpc 2021-05-18 15:34:20 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2021:1849 https://access.redhat.com/errata/RHSA-2021:1849

Comment 6 Product Security DevOps Team 2021-05-18 20:34:09 UTC
This bug is now closed. Further updates for individual products will be reflected on the CVE page(s):

https://access.redhat.com/security/cve/cve-2020-11095