Critical · published February 21, 2024
In the Linux kernel, the following vulnerability has been resolved:
net: tls: handle backlogging of crypto requests
Since we're setting the CRYPTO_TFM_REQ_MAY_BACKLOG flag on our
requests to the crypto API, crypto_aead_{encrypt,decrypt} can return
-EBUSY instead of -EINPROGRESS in valid situations. For example, when
the cryptd queue for AESNI is full (easy to trigger with an
artificially low cryptd.cryptd_max_cpu_qlen), requests will be enqueued
to the backlog but still processed. In that case, the async callback
will also be called twice: first with err == -EINPROGRESS, which it
seems we can just ignore, then with err == 0.
Compared to Sabrina's original patch this version uses the new
tls_*crypt_async_wait() helpers and converts the EBUSY to
EINPROGRESS to avoid having to modify all the error handling
paths. The handling is identical.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 4.16.0, < 6.1.84 | 6.1.84 |
| linux/linux_kernel | ≥ 6.2.0, < 6.6.18 | 6.6.18 |
| linux/linux_kernel | ≥ 6.7.0, < 6.7.6 | 6.7.6 |