CVE-2018-14780
Published: 15 August 2018
An out-of-bounds read issue was discovered in the Yubico-Piv 1.5.0 smartcard driver. The file lib/ykpiv.c contains the following code in the function `_ykpiv_fetch_object()`: {% highlight c %} if(sw == SW_SUCCESS) { size_t outlen; int offs = _ykpiv_get_length(data + 1, &outlen); if(offs == 0) { return YKPIV_SIZE_ERROR; } memmove(data, data + 1 + offs, outlen); *len = outlen; return YKPIV_OK; } else { return YKPIV_GENERIC_ERROR; } {% endhighlight %} -- in the end, a `memmove()` occurs with a length retrieved from APDU data. This length is not checked for whether it is outside of the APDU data retrieved. Therefore the `memmove()` could copy bytes behind the allocated data buffer into this buffer.
From the Ubuntu Security Team
It was discovered that libykpiv, a supporting library of the Yubico PIV tool and YubiKey PIV Manager, mishandled specially crafted input. An attacker with a custom-made, malicious USB device could potentially execute arbitrary code on a computer running the Yubico PIV Tool or Yubikey PIV Manager.
Priority
Status
Package | Release | Status |
---|---|---|
yubico-piv-tool Launchpad, Ubuntu, Debian |
bionic |
Released
(1.4.2-2ubuntu0.1)
|
cosmic |
Ignored
(end of life)
|
|
xenial |
Released
(1.0.3-1ubuntu0.1~esm1)
Available with Ubuntu Pro |
|
jammy |
Not vulnerable
(1.7.0-1)
|
|
disco |
Ignored
(end of life)
|
|
eoan |
Not vulnerable
(1.7.0-1)
|
|
focal |
Not vulnerable
(1.7.0-1)
|
|
groovy |
Not vulnerable
(1.7.0-1)
|
|
hirsute |
Not vulnerable
(1.7.0-1)
|
|
impish |
Not vulnerable
(1.7.0-1)
|
|
trusty |
Does not exist
|
|
upstream |
Released
(1.6.1-1)
|
Severity score breakdown
Parameter | Value |
---|---|
Base score | 4.6 |
Attack vector | Physical |
Attack complexity | Low |
Privileges required | None |
User interaction | None |
Scope | Unchanged |
Confidentiality | High |
Integrity impact | None |
Availability impact | None |
Vector | CVSS:3.0/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |