Bug 1952607 (CVE-2021-29458)

Summary: CVE-2021-29458 exiv2: Out-of-bounds read in Exiv2::Internal::CrwMap::encode
Product: [Other] Security Response Reporter: Guilherme de Almeida Suckevicz <gsuckevi>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: jgrulich, michel, rdieter
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: exiv2 0.27.4-RC2 Doc Type: If docs needed, set a value
Doc Text:
There is a flaw in exiv2. An attacker who is able to submit a crafted file to be processed by an application linked with exiv2 could trigger an out-of-bounds read. The greatest risk of this flaw is to application availability and data confidentiality.
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-11-02 23:29:56 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: 1952608, 1953758, 1953759    
Bug Blocks: 1949273    

Description Guilherme de Almeida Suckevicz 2021-04-22 16:39:57 UTC
Exiv2 is a command-line utility and C++ library for reading, writing, deleting, and modifying the metadata of image files. An out-of-bounds read was found in Exiv2 versions v0.27.3 and earlier. The out-of-bounds read is triggered when Exiv2 is used to write metadata into a crafted image file. An attacker could potentially exploit the vulnerability to cause a denial of service by crashing Exiv2, if they can trick the victim into running Exiv2 on a crafted image file. Note that this bug is only triggered when writing the metadata, which is a less frequently used Exiv2 operation than reading the metadata. For example, to trigger the bug in the Exiv2 command-line application, you need to add an extra command-line argument such as insert. The bug is fixed in version v0.27.4.

References:
https://github.com/Exiv2/exiv2/security/advisories/GHSA-57jj-75fm-9rq5
https://github.com/Exiv2/exiv2/issues/1530

Upstream patch:
https://github.com/Exiv2/exiv2/pull/1536

Comment 1 Guilherme de Almeida Suckevicz 2021-04-22 16:40:18 UTC
Created exiv2 tracking bugs for this issue:

Affects: fedora-all [bug 1952608]

Comment 2 Todd Cullum 2021-04-26 20:12:07 UTC
Flaw summary:

In CrwMap::encode0x1810 of src/crwimage_int.cpp, there exists an integer overflow which can lead to an out-of-bounds read. This is due to an improper size comparison that checks `if (cc && cc->size() > size)` but does not check for `if (cc->size() < size)`. The upstream patch introduces the latter check to prevent this.

Comment 6 Todd Cullum 2021-04-26 21:24:32 UTC
External References:

https://github.com/Exiv2/exiv2/security/advisories/GHSA-57jj-75fm-9rq5

Comment 8 errata-xmlrpc 2021-11-09 17:34:09 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

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