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.
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.
Upstream:released (1.6.1-1)
Ubuntu 12.04 ESM (Precise Pangolin):DNE
Ubuntu 14.04 ESM (Trusty Tahr):DNE
Ubuntu 16.04 LTS (Xenial Xerus):needed
Ubuntu 18.04 LTS (Bionic Beaver):released (1.4.2-2ubuntu0.1)
Ubuntu 19.10 (Eoan Ermine):not-affected (1.7.0-1)
Ubuntu 20.04 (Focal Fossa):not-affected (1.7.0-1)
More Information

Updated: 2020-02-11 17:14:26 UTC (commit fae839bb22db47e2662727f00032a9cee08b5228)