CVE-2025-39682
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
05/09/2025
Last modified:
08/09/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
tls: fix handling of zero-length records on the rx_list<br />
<br />
Each recvmsg() call must process either<br />
- only contiguous DATA records (any number of them)<br />
- one non-DATA record<br />
<br />
If the next record has different type than what has already been<br />
processed we break out of the main processing loop. If the record<br />
has already been decrypted (which may be the case for TLS 1.3 where<br />
we don&#39;t know type until decryption) we queue the pending record<br />
to the rx_list. Next recvmsg() will pick it up from there.<br />
<br />
Queuing the skb to rx_list after zero-copy decrypt is not possible,<br />
since in that case we decrypted directly to the user space buffer,<br />
and we don&#39;t have an skb to queue (darg.skb points to the ciphertext<br />
skb for access to metadata like length).<br />
<br />
Only data records are allowed zero-copy, and we break the processing<br />
loop after each non-data record. So we should never zero-copy and<br />
then find out that the record type has changed. The corner case<br />
we missed is when the initial record comes from rx_list, and it&#39;s<br />
zero length.
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/2902c3ebcca52ca845c03182000e8d71d3a5196f
- https://git.kernel.org/stable/c/29c0ce3c8cdb6dc5d61139c937f34cb888a6f42e
- https://git.kernel.org/stable/c/3439c15ae91a517cf3c650ea15a8987699416ad9
- https://git.kernel.org/stable/c/62708b9452f8eb77513115b17c4f8d1a22ebf843
- https://git.kernel.org/stable/c/c09dd3773b5950e9cfb6c9b9a5f6e36d06c62677