FKIE_CVE-2026-98925
Vulnerability from fkie_nvd - Published: 2026-10-23 13:17 - Updated: 2026-10-23 13:17
Severity
Summary
In the Linux kernel, the following vulnerability has been resolved:
bpf, sockmap: Fix self-redirect copied_seq double-counting
When a BPF stream_verdict program redirects an skb back to the same
socket (self-redirect with BPF_F_INGRESS), sk_psock_verdict_apply()
calls tcp_eat_skb() which advances tcp_sk->copied_seq. However, the
skb is then delivered to the socket's psock ingress queue and later
read by tcp_bpf_recvmsg_parser(), which also advances copied_seq via
the copied_from_self accounting path. This double-counting causes
copied_seq to advance by 2x the actual data length, triggering:
TCP recvmsg seq # bug 2: copied BF2E806, seq BF2E7FD, \
rcvnxt BF2E806, fl 0
WARNING: net/ipv4/tcp.c:2745 at tcp_recvmsg_locked+0x72b/0x2640
Call Trace:
tcp_recvmsg+0x10a/0x500
sock_recvmsg+0x168/0x1d0
__sys_recvfrom+0x19a/0x2a0
__x64_sys_recvfrom+0xe4/0x1f0
do_syscall_64+0xf7/0x530
entry_SYSCALL_64_after_hwframe+0x77/0x7f
cleanup rbuf bug: copied BF2E806 seq BF2E806 rcvnxt BF2E806
WARNING: net/ipv4/tcp.c:1609 at tcp_cleanup_rbuf+0xf2/0x1c0
Call Trace:
tcp_recvmsg_locked+0x8d1/0x2640
tcp_recvmsg+0x10a/0x500
sock_recvmsg+0x168/0x1d0
__sys_recvfrom+0x19a/0x2a0
__x64_sys_recvfrom+0xe4/0x1f0
do_syscall_64+0xf7/0x530
entry_SYSCALL_64_after_hwframe+0x77/0x7f
Fix this by converting self-redirect verdict to __SK_PASS at the
beginning of sk_psock_verdict_apply(). This bypasses the
__SK_REDIRECT case entirely (which calls sk_psock_eat_skb), letting
the __SK_PASS path queue the skb to the psock ingress queue. The
data is then read via tcp_bpf_recvmsg_parser(), which advances
copied_seq exactly once through copied_from_self. Cross-socket
redirects continue through __SK_REDIRECT with sk_psock_eat_skb()
unchanged.
References
Impacted products
| Vendor | Product | Version |
|---|
{
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"net/core/skmsg.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "cf9aefb26a071cb8b6fdd761c27e022a1184946d",
"status": "affected",
"version": "fe735073a50eaa71aceb2e990827fe26f33cddd6",
"versionType": "git"
},
{
"lessThan": "dc98def81e3c629e25fcdd5753b1db93aab27ce9",
"status": "affected",
"version": "e5c6de5fa025882babf89cecbed80acf49b987fa",
"versionType": "git"
},
{
"lessThan": "ef6f2182fee6b9721c005ccfc6aec0a47f79bbfa",
"status": "affected",
"version": "e5c6de5fa025882babf89cecbed80acf49b987fa",
"versionType": "git"
},
{
"lessThan": "ae1ffd04e98beefbe5d83335d506b0bcd5c2a6b3",
"status": "affected",
"version": "e5c6de5fa025882babf89cecbed80acf49b987fa",
"versionType": "git"
},
{
"lessThan": "88942054191185c6f8bea5568cbb5614d1e99af9",
"status": "affected",
"version": "e5c6de5fa025882babf89cecbed80acf49b987fa",
"versionType": "git"
},
{
"lessThan": "490a83d6386eec1d29f470c8d7331677fb46c3b7",
"status": "affected",
"version": "e5c6de5fa025882babf89cecbed80acf49b987fa",
"versionType": "git"
},
{
"status": "affected",
"version": "f9b4a0b537be7a6e5f002ca64b09dcca9c14e6ed",
"versionType": "git"
},
{
"lessThan": "6.1.189",
"status": "affected",
"version": "6.1.32",
"versionType": "semver"
},
{
"lessThan": "6.4",
"status": "affected",
"version": "6.3.6",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"net/core/skmsg.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "6.4"
},
{
"lessThan": "6.4",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.189",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.158",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.112",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.55",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.9",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf, sockmap: Fix self-redirect copied_seq double-counting\n\nWhen a BPF stream_verdict program redirects an skb back to the same\nsocket (self-redirect with BPF_F_INGRESS), sk_psock_verdict_apply()\ncalls tcp_eat_skb() which advances tcp_sk-\u003ecopied_seq. However, the\nskb is then delivered to the socket\u0027s psock ingress queue and later\nread by tcp_bpf_recvmsg_parser(), which also advances copied_seq via\nthe copied_from_self accounting path. This double-counting causes\ncopied_seq to advance by 2x the actual data length, triggering:\n\n TCP recvmsg seq # bug 2: copied BF2E806, seq BF2E7FD, \\\n\t\t\t rcvnxt BF2E806, fl 0\n WARNING: net/ipv4/tcp.c:2745 at tcp_recvmsg_locked+0x72b/0x2640\n Call Trace:\n tcp_recvmsg+0x10a/0x500\n sock_recvmsg+0x168/0x1d0\n __sys_recvfrom+0x19a/0x2a0\n __x64_sys_recvfrom+0xe4/0x1f0\n do_syscall_64+0xf7/0x530\n entry_SYSCALL_64_after_hwframe+0x77/0x7f\n\n cleanup rbuf bug: copied BF2E806 seq BF2E806 rcvnxt BF2E806\n WARNING: net/ipv4/tcp.c:1609 at tcp_cleanup_rbuf+0xf2/0x1c0\n Call Trace:\n tcp_recvmsg_locked+0x8d1/0x2640\n tcp_recvmsg+0x10a/0x500\n sock_recvmsg+0x168/0x1d0\n __sys_recvfrom+0x19a/0x2a0\n __x64_sys_recvfrom+0xe4/0x1f0\n do_syscall_64+0xf7/0x530\n entry_SYSCALL_64_after_hwframe+0x77/0x7f\n\nFix this by converting self-redirect verdict to __SK_PASS at the\nbeginning of sk_psock_verdict_apply(). This bypasses the\n__SK_REDIRECT case entirely (which calls sk_psock_eat_skb), letting\nthe __SK_PASS path queue the skb to the psock ingress queue. The\ndata is then read via tcp_bpf_recvmsg_parser(), which advances\ncopied_seq exactly once through copied_from_self. Cross-socket\nredirects continue through __SK_REDIRECT with sk_psock_eat_skb()\nunchanged."
}
],
"id": "CVE-2026-98925",
"lastModified": "2026-10-23T13:17:13.210",
"metrics": {},
"published": "2026-10-23T13:17:13.210",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/490a83d6386eec1d29f470c8d7331677fb46c3b7"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/88942054191185c6f8bea5568cbb5614d1e99af9"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/ae1ffd04e98beefbe5d83335d506b0bcd5c2a6b3"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/cf9aefb26a071cb8b6fdd761c27e022a1184946d"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/dc98def81e3c629e25fcdd5753b1db93aab27ce9"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/ef6f2182fee6b9721c005ccfc6aec0a47f79bbfa"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Received"
}
Loading…
Loading…
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
Loading timeline…
Loading…
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Loading…
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.