Bug 1661518 (CVE-2018-5808)

Summary: CVE-2018-5808 LibRaw: stack-based buffer overflow in find_green() leads to arbitrary code execution
Product: [Other] Security Response Reporter: Laura Pardo <lpardo>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED NOTABUG QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: debarshir
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: LibRaw 0.18.9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-01-03 09:15:29 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: 1661519    
Bug Blocks: 1661524    

Description Laura Pardo 2018-12-21 12:57:23 UTC
A flaw was found in LibRaw versions prior to 0.18.9. An error within the "find_green()" function (internal/dcraw_common.cpp) can be exploited to cause a stack-based buffer overflow and subsequently execute arbitrary code. 


References:
https://github.com/LibRaw/LibRaw/blob/master/Changelog.txt 
https://secuniaresearch.flexerasoftware.com/advisories/81800/ 
https://secuniaresearch.flexerasoftware.com/secunia_research/2018-9/

Upstream commit:
https://github.com/LibRaw/LibRaw/commit/fd6330292501983ac75fe4162275794b18445bd9

Comment 1 Laura Pardo 2018-12-21 12:57:33 UTC
Created LibRaw tracking bugs for this issue:

Affects: epel-6 [bug 1661519]

Comment 2 Riccardo Schirone 2019-01-03 09:03:54 UTC
Increase Impact of the flaw to Important and set C:H/I:H/A:H because arbitrary code execution may be possible on affected versions.

Comment 3 Riccardo Schirone 2019-01-03 09:08:51 UTC
RHEL 7 is not affected by this flaw because the attacker does not have control over the width field as find_green() function is always called after hardcoding values in width/height fields that are less then 2064.

Comment 4 Riccardo Schirone 2019-01-03 09:12:14 UTC
On the affected versions, function find_green() in internal/dcraw_common.cpp does not correctly check the "width" value, which is used to read/write from/to an array of 2064 elements. By providing a specially crafted image that is able to reach the find_green() function with a width greater than 2064, an attacker could overwrite data on the stack and execute arbitrary code.

Comment 5 Riccardo Schirone 2019-01-03 09:15:05 UTC
Statement:

This issue did not affect the versions of LibRaw as shipped with Red Hat Enterprise Linux 7 as it does not allow an attacker enough control to corrupt the internal state.