Track vulnerabilities like this one.
Sign up free to get alerted when software you use is affected.
Linux kernel before 6.6.157.1-1 may keep sending data after decryption error
published 2 months ago
Summary
The Linux kernel (including Azure's kernel builds) versions earlier than 6.6.157.1-1 have a flaw where a failed decryption can cause the system to continue delivering data that should have been rejected. This could let corrupted or unauthenticated data reach applications, potentially causing errors or security concerns. Upgrade the kernel to the latest patched version to resolve the issue.
What to do
- Update kernel to version 6.6.157.1-1.
Affected software
| Ecosystem | Vendor | Product | Affected versions |
|---|---|---|---|
| Azure Linux:3 | azure | kernel | <= 6.6.150.1-1 |
| Azure Linux:3 | – | kernel |
<= 6.6.152.1-1 < 6.6.157.1-1 Fix: upgrade to 6.6.157.1-1
|
Original advisory text
CVE-2026-80904 affecting package kernel for versions less than 6.6.157.1-1
In the Linux kernel, the following vulnerability has been resolved:
net/tls: Fail tls_sw_splice_read() after a failed async decrypt
When an async decrypt fails, tls_decrypt_done() records the error in
ctx->async_wait.err and calls tls_err_abort(), which stores it in
sk_err. tls_sw_recvmsg() and tls_sw_read_sock() each read
async_wait.err once they hold the reader lock and fail the call: a
record that did not authenticate breaks the connection.
tls_sw_splice_read() has no such check, and sk_err does not stand in
for one. tls_rx_rec_wait() tests sk_err only inside the loop it
skips whenever a record is already parsed, and the first reader to
reach sock_error() clears it, while async_wait.err persists. A
splice therefore keeps delivering records on a connection that
recvmsg() and read_sock() refuse to read.
Read async_wait.err in tls_sw_splice_read() as the other two readers
do.
net/tls: Fail tls_sw_splice_read() after a failed async decrypt
When an async decrypt fails, tls_decrypt_done() records the error in
ctx->async_wait.err and calls tls_err_abort(), which stores it in
sk_err. tls_sw_recvmsg() and tls_sw_read_sock() each read
async_wait.err once they hold the reader lock and fail the call: a
record that did not authenticate breaks the connection.
tls_sw_splice_read() has no such check, and sk_err does not stand in
for one. tls_rx_rec_wait() tests sk_err only inside the loop it
skips whenever a record is already parsed, and the first reader to
reach sock_error() clears it, while async_wait.err persists. A
splice therefore keeps delivering records on a connection that
recvmsg() and read_sock() refuse to read.
Read async_wait.err in tls_sw_splice_read() as the other two readers
do.
References
Timeline
Published4 Sep 2026
Updated2 Oct 2026
First seen23 Sep 2026
Sources
AZL-99525 · OSV
Track software like this
Free during beta