CVE-2020-13132
https://notcve.org/view.php?id=CVE-2020-13132
An issue was discovered in Yubico libykpiv before 2.1.0. An attacker can trigger an incorrect free() in the ykpiv_util_generate_key() function in lib/util.c through incorrect error handling code. This could be used to cause a denial of service attack. Se detectó un problema en Yubico libykpiv versiones anteriores a 2.1.0. Un atacante puede desencadenar un free() incorrecto en la función ykpiv_util_generate_key() en la biblioteca lib/util.c por medio de un código de manejo de errores incorrecto. • https://blog.inhq.net/posts/yubico-libykpiv-vuln https://www.yubico.com/support/security-advisories/ysa-2020-02 • CWE-763: Release of Invalid Pointer or Reference •
CVE-2020-13131
https://notcve.org/view.php?id=CVE-2020-13131
An issue was discovered in Yubico libykpiv before 2.1.0. lib/util.c in this library (which is included in yubico-piv-tool) does not properly check embedded length fields during device communication. A malicious PIV token can misreport the returned length fields during RSA key generation. This will cause stack memory to be copied into heap allocated memory that gets returned to the caller. The leaked memory could include PINs, passwords, key material, and other sensitive information depending on the integration. During further processing by the caller, this information could leak across trust boundaries. • https://blog.inhq.net/posts/yubico-libykpiv-vuln https://www.yubico.com/products/services-software/download/smart-card-drivers-tools • CWE-125: Out-of-bounds Read •
CVE-2018-14780
https://notcve.org/view.php?id=CVE-2018-14780
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. Se ha descubierto una vulnerabilidad de lectura fuera de límites en el controlador de tarjetas inteligentes de Yubico-Piv 1.5.0. • http://www.openwall.com/lists/oss-security/2018/08/14/2 https://usn.ubuntu.com/4276-1 https://www.x41-dsec.de/lab/advisories/x41-2018-001-Yubico-Piv https://www.yubico.com/support/security-advisories/ysa-2018-03 • CWE-125: Out-of-bounds Read •
CVE-2018-14779
https://notcve.org/view.php?id=CVE-2018-14779
A buffer overflow 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_transfer_data()`: {% highlight c %} if(*out_len + recv_len - 2 > max_out) { fprintf(stderr, "Output buffer to small, wanted to write %lu, max was %lu.", *out_len + recv_len - 2, max_out); } if(out_data) { memcpy(out_data, data, recv_len - 2); out_data += recv_len - 2; *out_len += recv_len - 2; } {% endhighlight %} -- it is clearly checked whether the buffer is big enough to hold the data copied using `memcpy()`, but no error handling happens to avoid the `memcpy()` in such cases. This code path can be triggered with malicious data coming from a smartcard. • http://www.openwall.com/lists/oss-security/2018/08/14/2 https://usn.ubuntu.com/4276-1 https://www.x41-dsec.de/lab/advisories/x41-2018-001-Yubico-Piv https://www.yubico.com/support/security-advisories/ysa-2018-03 • CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer CWE-787: Out-of-bounds Write •