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.
2018-08-15T18:29:00.887
2024-11-21T03:49:46.553
Modified
CVSSv3.0: 4.6 (MEDIUM)
AV:L/AC:L/Au:N/C:P/I:N/A:N
3.9
2.9
Type | Vendor | Product | Version/Range | Vulnerable? |
---|---|---|---|---|
Application | yubico | piv_manager | < 1.4.2 | Yes |
Application | yubico | piv_manager | 1.4.2 | Yes |
Application | yubico | piv_manager | 1.4.2b | Yes |
Application | yubico | piv_manager | 1.4.2c | Yes |
Application | yubico | piv_manager | 1.4.2d | Yes |
Application | yubico | piv_manager | 1.4.2e | Yes |
Application | yubico | piv_manager | 1.4.2f | Yes |
Application | yubico | piv_manager | 1.4.2g | Yes |
Application | yubico | piv_tool | < 1.6.0 | Yes |
Application | yubico | smart_card_minidriver | ≤ 3.7.3.160 | Yes |