← Back to CVE Explorer

CVE-2026-98590

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix bpf_sock context code generation Currently, the ctx access code reads the rx_queue_mapping field with either a 4-byte or 2-byte load. The rest of the bits in the register are marked known zero by the verifier. However, the emitted ctx access code places in the register on certain the special value (-1) using BPF_MOV_IMM64, which gets sign-extended to turn on all the bits in the register. By shifting this value right, the program ends up with a value at runtime above what the verifier assumes is possible. Fix this by ensuring the read value is as wide as the assumed size. Use MOV32 instructions instead of MOV64 instructions to keep the upper bits zero as assumed by the verifier. Also properly report the size of the destination variable (the bpf_sock field, 4 bytes) instead of the source (the socket field, 2 bytes).

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-10-18 16:17:11.610000
Last modified
2026-10-19 10:19:20.057000
View original CVE JSON
{
  "id": "CVE-2026-98590",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-10-18T16:17:11.610",
  "lastModified": "2026-10-19T10:19:20.057",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fix bpf_sock context code generation\n\nCurrently, the ctx access code reads the rx_queue_mapping\nfield with either a 4-byte or 2-byte load. The rest of the bits\nin the register are marked known zero by the verifier. However,\nthe emitted ctx access code places in the register on certain\nthe special value (-1) using BPF_MOV_IMM64, which gets sign-extended\nto turn on all the bits in the register. By shifting this value right,\nthe program ends up with a value at runtime above what the verifier\nassumes is possible.\n\nFix this by ensuring the read value is as wide as the assumed size.\nUse MOV32 instructions instead of MOV64 instructions to keep\nthe upper bits zero as assumed by the verifier. Also properly report\nthe size of the destination variable (the bpf_sock field, 4 bytes) instead\nof the source (the socket field, 2 bytes)."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "net/core/filter.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "c3c16f2ea6d20159903cf93afbb1155f3d8348d5",
              "lessThan": "e3ddcf4aeb342d4de2e5761c7042270d454752de",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c3c16f2ea6d20159903cf93afbb1155f3d8348d5",
              "lessThan": "4a41d064facc3330e176ecbbf5b0026ed18a5c69",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c3c16f2ea6d20159903cf93afbb1155f3d8348d5",
              "lessThan": "70288599d1754e157df8326239316dbdf08ea33c",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c3c16f2ea6d20159903cf93afbb1155f3d8348d5",
              "lessThan": "ea4dc96c902ccfa49dd3e4f23c443dab4a74b018",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c3c16f2ea6d20159903cf93afbb1155f3d8348d5",
              "lessThan": "b3f37afc7fd7c52bc2114310aff1eb24c7cd4d73",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c3c16f2ea6d20159903cf93afbb1155f3d8348d5",
              "lessThan": "d95dd5a6c6cd08d5ae466d3aed27b3cf59155a6c",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c3c16f2ea6d20159903cf93afbb1155f3d8348d5",
              "lessThan": "84ebb991ae985149079ae9ab51b7e3ba25a9ff53",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c3c16f2ea6d20159903cf93afbb1155f3d8348d5",
              "lessThan": "4a4852376e3a2727ea40e61143d6d7c22bb6dfad",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "net/core/filter.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "5.8",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "5.8",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.10.271",
              "lessThanOrEqual": "5.10.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.15.222",
              "lessThanOrEqual": "5.15.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.1.189",
              "lessThanOrEqual": "6.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.6.158",
              "lessThanOrEqual": "6.6.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.112",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.55",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.9",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/4a41d064facc3330e176ecbbf5b0026ed18a5c69",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/4a4852376e3a2727ea40e61143d6d7c22bb6dfad",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/70288599d1754e157df8326239316dbdf08ea33c",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/84ebb991ae985149079ae9ab51b7e3ba25a9ff53",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/b3f37afc7fd7c52bc2114310aff1eb24c7cd4d73",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/d95dd5a6c6cd08d5ae466d3aed27b3cf59155a6c",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/e3ddcf4aeb342d4de2e5761c7042270d454752de",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/ea4dc96c902ccfa49dd3e4f23c443dab4a74b018",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}