# CVE-2026-98952: pfcp: make sure the SEID is linear before reading it


- **Severity:** High 7.3 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L`)
- **Exploited in the wild:** Not known
- **Fix available:** Yes
- **Published:** 23 Oct 2026
- **Updated:** 24 Oct 2026
- **Also known as:** BELL-CVE-2026-98952, DEBIAN-CVE-2026-98952, GHSA-cvm8-2x36-72mp, UBUNTU-CVE-2026-98952

## What is CVE-2026-98952?

CVE-2026-98952 is a high-severity vulnerability in Linux, published on 23 Oct 2026. 

### Official description

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

pfcp: make sure the SEID is linear before reading it

pfcp_encap_recv() only makes sure that the UDP header and the 4 byte
PFCP header are in the linear area. When the S flag is set,
pfcp_session_recv() then reads the 8 byte SEID that follows, which is
not covered by the pskb_may_pull() check.

A short PFCP packet with the S flag set, or one whose session header
lies in a fragment, therefore makes pfcp_session_recv() read beyond the
end of the packet data, and whatever it finds there is stored in the
tunnel metadata that flower later classifies on.

Pull up to the end of the SEID before reading it, and drop packets
that are too short to contain it. Reload the header pointer afterwards
since pskb_may_pull() may reallocate the skb head.

Use offsetofend() rather than sizeof(struct pfcphdr_session): the
structure is not packed, so its size is 16 bytes because of the
alignment of the __be64 member, while the header on the wire is only 12
bytes, and valid session messages would be dropped.

## Which versions are affected by CVE-2026-98952?


## How do I fix CVE-2026-98952?

Upgrade to a fixed version.

## Is CVE-2026-98952 being exploited?

There is no known exploitation of CVE-2026-98952 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-98952 and fix it if it is affected.

What it is: CVE-2026-98952 is a high-severity vulnerability in Linux, published on 23 Oct 2026. 
Exploitation: There is no known exploitation of CVE-2026-98952 in the wild and no public exploit code.

Affected product: Linux. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-98952/ (Markdown: https://insights.sbomify.com/CVE-2026-98952/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-98952
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-98952
- OSV: https://osv.dev/vulnerability/CVE-2026-98952

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-98952/
Summaries are generated and may contain mistakes; the official description above is the record.
