CVE-2025-38018 (GCVE-0-2025-38018)
Vulnerability from cvelistv5
Published
2025-06-18 09:28
Modified
2026-08-05 11:58
Summary
In the Linux kernel, the following vulnerability has been resolved: net/tls: fix kernel panic when alloc_page failed We cannot set frag_list to NULL pointer when alloc_page failed. It will be used in tls_strp_check_queue_ok when the next time tls_strp_read_sock is called. This is because we don't reset full_len in tls_strp_flush_anchor_copy() so the recv path will try to continue handling the partial record on the next call but we dettached the rcvq from the frag list. Alternative fix would be to reset full_len. Unable to handle kernel NULL pointer dereference at virtual address 0000000000000028 Call trace: tls_strp_check_rcv+0x128/0x27c tls_strp_data_ready+0x34/0x44 tls_data_ready+0x3c/0x1f0 tcp_data_ready+0x9c/0xe4 tcp_data_queue+0xf6c/0x12d0 tcp_rcv_established+0x52c/0x798
Impacted products
Vendor Product Version
Linux Linux Version: 84c61fe1a75b4255df1e1e7c054c9e6d048da417
Version: 84c61fe1a75b4255df1e1e7c054c9e6d048da417
Version: 84c61fe1a75b4255df1e1e7c054c9e6d048da417
Version: 84c61fe1a75b4255df1e1e7c054c9e6d048da417
Version: 84c61fe1a75b4255df1e1e7c054c9e6d048da417
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2025-11-03T19:58:19.276Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "url": "https://lists.debian.org/debian-lts-announce/2025/08/msg00010.html"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/tls/tls_strp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "8f7f96549bc55e4ef3a6b499bc5011e5de2f46c4",
              "status": "affected",
              "version": "84c61fe1a75b4255df1e1e7c054c9e6d048da417",
              "versionType": "git"
            },
            {
              "lessThan": "406d05da26835943568e61bb751c569efae071d4",
              "status": "affected",
              "version": "84c61fe1a75b4255df1e1e7c054c9e6d048da417",
              "versionType": "git"
            },
            {
              "lessThan": "a11b8c0be6acd0505a58ff40d474bd778b25b93a",
              "status": "affected",
              "version": "84c61fe1a75b4255df1e1e7c054c9e6d048da417",
              "versionType": "git"
            },
            {
              "lessThan": "5f1f833cb388592bb46104463a1ec1b7c41975b6",
              "status": "affected",
              "version": "84c61fe1a75b4255df1e1e7c054c9e6d048da417",
              "versionType": "git"
            },
            {
              "lessThan": "491deb9b8c4ad12fe51d554a69b8165b9ef9429f",
              "status": "affected",
              "version": "84c61fe1a75b4255df1e1e7c054c9e6d048da417",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/tls/tls_strp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.0"
            },
            {
              "lessThan": "6.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.140",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.92",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.30",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.14.*",
              "status": "unaffected",
              "version": "6.14.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.15",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.140",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.92",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.30",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.14.8",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/tls: fix kernel panic when alloc_page failed\n\nWe cannot set frag_list to NULL pointer when alloc_page failed.\nIt will be used in tls_strp_check_queue_ok when the next time\ntls_strp_read_sock is called.\n\nThis is because we don\u0027t reset full_len in tls_strp_flush_anchor_copy()\nso the recv path will try to continue handling the partial record\non the next call but we dettached the rcvq from the frag list.\nAlternative fix would be to reset full_len.\n\nUnable to handle kernel NULL pointer dereference\nat virtual address 0000000000000028\n Call trace:\n tls_strp_check_rcv+0x128/0x27c\n tls_strp_data_ready+0x34/0x44\n tls_data_ready+0x3c/0x1f0\n tcp_data_ready+0x9c/0xe4\n tcp_data_queue+0xf6c/0x12d0\n tcp_rcv_established+0x52c/0x798"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.5,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - The entire code path is driven by data received from the remote TLS peer \u2014 `tcp_rcv_established \u2192 tcp_data_queue \u2192 tcp_data_ready \u2192 tls_data_ready \u2192 tls_strp_data_ready \u2192 tls_strp_check_rcv \u2192 tls_strp_read_sock` \u2014 and the remote peer controls the TLS record framing and TCP segmentation that force the buggy `tls_strp_read_copy()` path. No local access is needed, matching the established kTLS scoring convention (CVE-2025-38471, CVE-2025-40176, CVE-2025-39946).\nAC:L - The attacker controls both required conditions: sending a TLS record header declaring a large payload followed by only a partial payload forces `inq \u003c full_len` into `tls_strp_read_copy()`, and stalling the reader drives `tcp_rmem_pressure()` true so the allocation loop is entered \u2014 where `sk-\u003esk_allocation` has been forced to `GFP_ATOMIC` by `tls_data_ready()`, making a 5-page order-0 failure readily inducible by spraying connections to exhaust atomic reserves. Repo precedent for allocation-failure NULL derefs (CVE-2025-40053) uses AC:L.\nPR:N - The strparser runs on every record received on a kTLS-RX socket, so any remote client that completes a standard server-authenticated TLS handshake with a kTLS-enabled server (nginx, HTTP/2, message brokers) can drive it without presenting any credentials to the target. No local account or capability is involved.\nUI:N - The crash is triggered entirely by the attacker\u0027s own packet stream arriving in the TCP receive softirq; no action by a local user or administrator is required.\nS:U - The NULL dereference occurs in kernel context and its effect is confined to the kernel of the affected host, crossing no VM, hypervisor, IOMMU, or other security-authority boundary.\nC:N - The fault is a dereference of a NULL `frag_list` at the fixed offset 0x28 (`TCP_SKB_CB(first)-\u003eseq`), a non-mappable low address under mmap_min_addr; no attacker-controlled data is read and nothing is copied back to userspace or the peer.\nI:N - No memory is written or corrupted \u2014 the stale anchor retains `len`/`data_len` with zero frags, which only makes `skb_copy_bits()` return `-EFAULT`, and the detached pointer is NULL rather than dangling, so there is no write or control-flow primitive.\nA:H - The NULL dereference occurs in softirq context inside `tcp_rcv_established()`, producing a fatal exception in interrupt that panics the machine (and guarantees reboot where `panic_on_oops` is set, as on Android and embedded builds), as reflected in the commit title \"fix kernel panic when alloc_page failed.\""
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:58:59.906Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/8f7f96549bc55e4ef3a6b499bc5011e5de2f46c4"
        },
        {
          "url": "https://git.kernel.org/stable/c/406d05da26835943568e61bb751c569efae071d4"
        },
        {
          "url": "https://git.kernel.org/stable/c/a11b8c0be6acd0505a58ff40d474bd778b25b93a"
        },
        {
          "url": "https://git.kernel.org/stable/c/5f1f833cb388592bb46104463a1ec1b7c41975b6"
        },
        {
          "url": "https://git.kernel.org/stable/c/491deb9b8c4ad12fe51d554a69b8165b9ef9429f"
        }
      ],
      "title": "net/tls: fix kernel panic when alloc_page failed",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-38018",
    "datePublished": "2025-06-18T09:28:26.443Z",
    "dateReserved": "2025-04-16T04:51:23.977Z",
    "dateUpdated": "2026-08-05T11:58:59.906Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…