Description
In the Linux kernel, the following vulnerability has been resolved: mac802154: llsec: reject frames shorter than the authentication tag llsec_do_decrypt_auth() computes the associated-data length for the AEAD request as assoclen += datalen - authlen; where datalen is the number of bytes after the MAC header and authlen (4, 8 or 16) is the length of the authentication tag. Nothing verifies that the frame actually carries at least authlen payload bytes. A secured frame whose payload is shorter than the tag makes datalen - authlen negative; assoclen is then passed to aead_request_set_ad() as an unsigned value close to 4 GiB, so crypto_aead_decrypt() walks far off the end of the scatterlist that only spans the real frame. The frame is fully attacker-controlled and reaches this path from any IEEE 802.15.4 peer in radio range. Reject frames whose payload is shorter than the authentication tag before the subtraction. Dynamically reproduced on a KASAN kernel as a general-protection-fault in the AEAD scatterwalk, and the fix confirmed.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
4c14a2fb5d143e4ed94143be2b8c1961b47df9af to < f27ce82eb04960465df71634b196a48a4ecafd50affected4c14a2fb5d143e4ed94143be2b8c1961b47df9af to < 2d6b42a61373144298070668fddf06efe79cf2ffaffected4c14a2fb5d143e4ed94143be2b8c1961b47df9af to < ec7e62d77193131227df49d654d118fdf5a59892affected4c14a2fb5d143e4ed94143be2b8c1961b47df9af to < 5bbf0cd9b6a7076af86c75e87e180099be2e11aeaffected4c14a2fb5d143e4ed94143be2b8c1961b47df9af to < de80808f37d99c6dc67bb6f97eea00c8f57a8821affected4c14a2fb5d143e4ed94143be2b8c1961b47df9af to < f20dedce0429b293d4bad604e0d3f65d8ac96c83affected4c14a2fb5d143e4ed94143be2b8c1961b47df9af to < e09e0301d616c1ef38a5e64e8e4326fd39df13ccaffected4c14a2fb5d143e4ed94143be2b8c1961b47df9af to < fd3a3f28ed60c6af4b2a39933b151d6b27842c3baffected
Linux Linux
Default version status: affected
3.16affected0 to < 3.16unaffected5.10.265 to ≤ 5.10.*unaffected5.15.216 to ≤ 5.15.*unaffected6.1.183 to ≤ 6.1.*unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/f27ce82eb04960465df71634b196a48a4ecafd50 ↗
- https://git.kernel.org/stable/c/2d6b42a61373144298070668fddf06efe79cf2ff ↗
- https://git.kernel.org/stable/c/ec7e62d77193131227df49d654d118fdf5a59892 ↗
- https://git.kernel.org/stable/c/5bbf0cd9b6a7076af86c75e87e180099be2e11ae ↗
- https://git.kernel.org/stable/c/de80808f37d99c6dc67bb6f97eea00c8f57a8821 ↗
- https://git.kernel.org/stable/c/f20dedce0429b293d4bad604e0d3f65d8ac96c83 ↗
- https://git.kernel.org/stable/c/e09e0301d616c1ef38a5e64e8e4326fd39df13cc ↗
- https://git.kernel.org/stable/c/fd3a3f28ed60c6af4b2a39933b151d6b27842c3b ↗