Bug 1885947 (CVE-2020-26570)

Summary: CVE-2020-26570 opensc: heap-based buffer overflow in sc_oberthur_read_file
Product: [Other] Security Response Reporter: Michael Kaplan <mkaplan>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: crypto-team, gmazyland, jjelen
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: opensc 0.21.0-rc1 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-05-18 20:36:33 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: 1885948, 1885949, 1887528    
Bug Blocks: 1885958    

Description Michael Kaplan 2020-10-07 10:51:32 UTC
The Oberthur smart card software driver in OpenSC before 0.21.0-rc1 has a heap-based buffer overflow in sc_oberthur_read_file.

References:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24316
https://github.com/OpenSC/OpenSC/commit/6903aebfddc466d966c7b865fae34572bf3ed23e

Comment 1 Michael Kaplan 2020-10-07 10:52:19 UTC
Created opensc tracking bugs for this issue:

Affects: epel-6 [bug 1885949]
Affects: fedora-all [bug 1885948]

Comment 2 Todd Cullum 2020-10-08 19:35:29 UTC
Flaw summary:
sc_oberthur_read_file() in src/libopensc/pkcs15-oberthur.c attempts to read an invalid record from the card reader APDU interface by reading a record greater than file->record_count, causing an out-of-bounds write.

Comment 5 Todd Cullum 2020-10-12 18:25:48 UTC
Mitigation:

This flaw can be mitigated in cases where you can use opensc without the Oberthur driver enabled. In such cases, the vulnerable driver can be disabled by specifying them in /etc/opensc.conf card_drivers field in allowlist fashion.
One such example:

```
app default {
   card_drivers = cac, cac1, PIV-II;
}
```

This would only enable the cac, cac1, and PIV-II smart card drivers, and all others would be disabled, including the Oberthur driver. With the Oberthur driver disabled, this flaw is mitigated. It is important to list all drivers that you need in the card_drivers field so that they are not disabled too.

Comment 7 errata-xmlrpc 2021-05-18 13:35:04 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

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

Comment 8 Product Security DevOps Team 2021-05-18 20:36:33 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-26570