---
id: CVE-2026-72330
title: 'net/tls: Consume empty data records in tls_sw_read_sock()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  net/tls: Consume empty data records in tls_sw_read_sock()

  A peer may send a zero-length TLS application_data record; TLS 1.3
  explicitly permits these as a traffic-anal…
severity: high
cvss: 7.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 <
    0867b0f2513ebc1c475af9898c97f4772a68d964
  - >-
    Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 <
    c6b440cf766a557b08d25f1b571b3d57d039686e
  - >-
    Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 <
    e8a4c9fc437b16aef38f86ce3275677e36924259
  - >-
    Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 <
    ebc295ce343600c2d60c1e1e0c5d192080217457
  - >-
    Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 <
    3be28e2c9cd0230cb51fd4967df095273afd3848
  - Linux 6.6
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-10-16T18:47:08.220194Z'
published: '2026-08-15'
updated: '2026-10-16'
sourceUpdated: '2026-10-16T18:55:18.242Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-72330'
references:
  - url: 'https://git.kernel.org/stable/c/0867b0f2513ebc1c475af9898c97f4772a68d964'
  - url: 'https://git.kernel.org/stable/c/c6b440cf766a557b08d25f1b571b3d57d039686e'
  - url: 'https://git.kernel.org/stable/c/e8a4c9fc437b16aef38f86ce3275677e36924259'
  - url: 'https://git.kernel.org/stable/c/ebc295ce343600c2d60c1e1e0c5d192080217457'
  - url: 'https://git.kernel.org/stable/c/3be28e2c9cd0230cb51fd4967df095273afd3848'
tags:
  - cve.org
epss: 0.00622
epssPercentile: 0.48717
ingestedAt: '2026-10-16T19:46:24.406Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

net/tls: Consume empty data records in tls_sw_read_sock()

A peer may send a zero-length TLS application_data record; TLS 1.3
explicitly permits these as a traffic-analysis countermeasure (RFC
8446, Section 5.1). After decryption such a record has full_len ==
0. tls_sw_read_sock() hands it to the read_actor, which has no
payload to consume and returns zero. The loop treats a zero return
as backpressure (used <= 0), requeues the skb at the head of
rx_list, and stops. rx_list is serviced head-first on the next
call, so the empty record is dequeued, fails the same way, and is
requeued again; every later record on the connection is blocked
behind it.

tls_sw_recvmsg() does not stall on this: a zero-length data record
copies nothing and falls through to consume_skb(). Mirror that in
the read_sock() path by recognizing an empty data record before
the actor runs, consuming it, and continuing.

## Affected

- `Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 < 0867b0f2513ebc1c475af9898c97f4772a68d964`
- `Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 < c6b440cf766a557b08d25f1b571b3d57d039686e`
- `Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 < e8a4c9fc437b16aef38f86ce3275677e36924259`
- `Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 < ebc295ce343600c2d60c1e1e0c5d192080217457`
- `Linux >= 662fbcec32f4af6bdcf5b4006b792ebe9543d945 < 3be28e2c9cd0230cb51fd4967df095273afd3848`
- `Linux 6.6`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
