GHSA-QJHH-724F-RP7Q

Vulnerability from github – Published: 2026-10-23 15:31 – Updated: 2026-10-23 15:31
VLAI
Details

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.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2026-98925"
  ],
  "database_specific": {
    "cwe_ids": [],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2026-10-23T13:17:13Z",
    "severity": null
  },
  "details": "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": "GHSA-qjhh-724f-rp7q",
  "modified": "2026-10-23T15:31:31Z",
  "published": "2026-10-23T15:31:31Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98925"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/490a83d6386eec1d29f470c8d7331677fb46c3b7"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/88942054191185c6f8bea5568cbb5614d1e99af9"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/ae1ffd04e98beefbe5d83335d506b0bcd5c2a6b3"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/cf9aefb26a071cb8b6fdd761c27e022a1184946d"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/dc98def81e3c629e25fcdd5753b1db93aab27ce9"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/ef6f2182fee6b9721c005ccfc6aec0a47f79bbfa"
    }
  ],
  "schema_version": "1.4.0",
  "severity": []
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

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.

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

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    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.