CVE-2025-38591 (GCVE-0-2025-38591)

Vulnerability from cvelistv5 – Published: 2025-08-19 17:03 – Updated: 2026-05-11 21:31
VLAI
Title
bpf: Reject narrower access to pointer ctx fields
Summary
In the Linux kernel, the following vulnerability has been resolved: bpf: Reject narrower access to pointer ctx fields The following BPF program, simplified from a syzkaller repro, causes a kernel warning: r0 = *(u8 *)(r1 + 169); exit; With pointer field sk being at offset 168 in __sk_buff. This access is detected as a narrower read in bpf_skb_is_valid_access because it doesn't match offsetof(struct __sk_buff, sk). It is therefore allowed and later proceeds to bpf_convert_ctx_access. Note that for the "is_narrower_load" case in the convert_ctx_accesses(), the insn->off is aligned, so the cnt may not be 0 because it matches the offsetof(struct __sk_buff, sk) in the bpf_convert_ctx_access. However, the target_size stays 0 and the verifier errors with a kernel warning: verifier bug: error during ctx access conversion(1) This patch fixes that to return a proper "invalid bpf_context access off=X size=Y" error on the load instruction. The same issue affects multiple other fields in context structures that allow narrow access. Some other non-affected fields (for sk_msg, sk_lookup, and sockopt) were also changed to use bpf_ctx_range_ptr for consistency. Note this syzkaller crash was reported in the "Closes" link below, which used to be about a different bug, fixed in commit fce7bd8e385a ("bpf/verifier: Handle BPF_LOAD_ACQ instructions in insn_def_regno()"). Because syzbot somehow confused the two bugs, the new crash and repro didn't get reported to the mailing list.
Severity
No CVSS data available.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: f96da09473b52c09125cc9bf7d7d4576ae8229e0 , < 7847c4140e06f6e87229faae22cc38525334c156 (git)
Affected: f96da09473b52c09125cc9bf7d7d4576ae8229e0 , < feae34c992eb7191862fb1594c704fbbf650fef8 (git)
Affected: f96da09473b52c09125cc9bf7d7d4576ae8229e0 , < 33660d44e789edb4f303210c813fc56d56377a90 (git)
Affected: f96da09473b52c09125cc9bf7d7d4576ae8229e0 , < 058a0da4f6d916a79b693384111bb80a90d73763 (git)
Affected: f96da09473b52c09125cc9bf7d7d4576ae8229e0 , < 202900ceeef67458c964c2af6e1427c8e533ea7c (git)
Affected: f96da09473b52c09125cc9bf7d7d4576ae8229e0 , < e09299225d5ba3916c91ef70565f7d2187e4cca0 (git)
Create a notification for this product.
Linux Linux Affected: 4.13
Unaffected: 0 , < 4.13 (semver)
Unaffected: 5.10.249 , ≤ 5.10.* (semver)
Unaffected: 5.15.199 , ≤ 5.15.* (semver)
Unaffected: 6.1.162 , ≤ 6.1.* (semver)
Unaffected: 6.12.67 , ≤ 6.12.* (semver)
Unaffected: 6.16.1 , ≤ 6.16.* (semver)
Unaffected: 6.17 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "kernel/bpf/cgroup.c",
            "net/core/filter.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "7847c4140e06f6e87229faae22cc38525334c156",
              "status": "affected",
              "version": "f96da09473b52c09125cc9bf7d7d4576ae8229e0",
              "versionType": "git"
            },
            {
              "lessThan": "feae34c992eb7191862fb1594c704fbbf650fef8",
              "status": "affected",
              "version": "f96da09473b52c09125cc9bf7d7d4576ae8229e0",
              "versionType": "git"
            },
            {
              "lessThan": "33660d44e789edb4f303210c813fc56d56377a90",
              "status": "affected",
              "version": "f96da09473b52c09125cc9bf7d7d4576ae8229e0",
              "versionType": "git"
            },
            {
              "lessThan": "058a0da4f6d916a79b693384111bb80a90d73763",
              "status": "affected",
              "version": "f96da09473b52c09125cc9bf7d7d4576ae8229e0",
              "versionType": "git"
            },
            {
              "lessThan": "202900ceeef67458c964c2af6e1427c8e533ea7c",
              "status": "affected",
              "version": "f96da09473b52c09125cc9bf7d7d4576ae8229e0",
              "versionType": "git"
            },
            {
              "lessThan": "e09299225d5ba3916c91ef70565f7d2187e4cca0",
              "status": "affected",
              "version": "f96da09473b52c09125cc9bf7d7d4576ae8229e0",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "kernel/bpf/cgroup.c",
            "net/core/filter.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.13"
            },
            {
              "lessThan": "4.13",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.249",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.199",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.162",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.67",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.16.*",
              "status": "unaffected",
              "version": "6.16.1",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.17",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.249",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.199",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.162",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.67",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.16.1",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.17",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Reject narrower access to pointer ctx fields\n\nThe following BPF program, simplified from a syzkaller repro, causes a\nkernel warning:\n\n    r0 = *(u8 *)(r1 + 169);\n    exit;\n\nWith pointer field sk being at offset 168 in __sk_buff. This access is\ndetected as a narrower read in bpf_skb_is_valid_access because it\ndoesn\u0027t match offsetof(struct __sk_buff, sk). It is therefore allowed\nand later proceeds to bpf_convert_ctx_access. Note that for the\n\"is_narrower_load\" case in the convert_ctx_accesses(), the insn-\u003eoff\nis aligned, so the cnt may not be 0 because it matches the\noffsetof(struct __sk_buff, sk) in the bpf_convert_ctx_access. However,\nthe target_size stays 0 and the verifier errors with a kernel warning:\n\n    verifier bug: error during ctx access conversion(1)\n\nThis patch fixes that to return a proper \"invalid bpf_context access\noff=X size=Y\" error on the load instruction.\n\nThe same issue affects multiple other fields in context structures that\nallow narrow access. Some other non-affected fields (for sk_msg,\nsk_lookup, and sockopt) were also changed to use bpf_ctx_range_ptr for\nconsistency.\n\nNote this syzkaller crash was reported in the \"Closes\" link below, which\nused to be about a different bug, fixed in\ncommit fce7bd8e385a (\"bpf/verifier: Handle BPF_LOAD_ACQ instructions\nin insn_def_regno()\"). Because syzbot somehow confused the two bugs,\nthe new crash and repro didn\u0027t get reported to the mailing list."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-05-11T21:31:12.628Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/7847c4140e06f6e87229faae22cc38525334c156"
        },
        {
          "url": "https://git.kernel.org/stable/c/feae34c992eb7191862fb1594c704fbbf650fef8"
        },
        {
          "url": "https://git.kernel.org/stable/c/33660d44e789edb4f303210c813fc56d56377a90"
        },
        {
          "url": "https://git.kernel.org/stable/c/058a0da4f6d916a79b693384111bb80a90d73763"
        },
        {
          "url": "https://git.kernel.org/stable/c/202900ceeef67458c964c2af6e1427c8e533ea7c"
        },
        {
          "url": "https://git.kernel.org/stable/c/e09299225d5ba3916c91ef70565f7d2187e4cca0"
        }
      ],
      "title": "bpf: Reject narrower access to pointer ctx fields",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-38591",
    "datePublished": "2025-08-19T17:03:12.508Z",
    "dateReserved": "2025-04-16T04:51:24.026Z",
    "dateUpdated": "2026-05-11T21:31:12.628Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-38591",
      "date": "2026-05-26",
      "epss": "0.00014",
      "percentile": "0.02698"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-38591\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-08-19T17:15:36.790\",\"lastModified\":\"2026-03-17T16:09:47.267\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nbpf: Reject narrower access to pointer ctx fields\\n\\nThe following BPF program, simplified from a syzkaller repro, causes a\\nkernel warning:\\n\\n    r0 = *(u8 *)(r1 + 169);\\n    exit;\\n\\nWith pointer field sk being at offset 168 in __sk_buff. This access is\\ndetected as a narrower read in bpf_skb_is_valid_access because it\\ndoesn\u0027t match offsetof(struct __sk_buff, sk). It is therefore allowed\\nand later proceeds to bpf_convert_ctx_access. Note that for the\\n\\\"is_narrower_load\\\" case in the convert_ctx_accesses(), the insn-\u003eoff\\nis aligned, so the cnt may not be 0 because it matches the\\noffsetof(struct __sk_buff, sk) in the bpf_convert_ctx_access. However,\\nthe target_size stays 0 and the verifier errors with a kernel warning:\\n\\n    verifier bug: error during ctx access conversion(1)\\n\\nThis patch fixes that to return a proper \\\"invalid bpf_context access\\noff=X size=Y\\\" error on the load instruction.\\n\\nThe same issue affects multiple other fields in context structures that\\nallow narrow access. Some other non-affected fields (for sk_msg,\\nsk_lookup, and sockopt) were also changed to use bpf_ctx_range_ptr for\\nconsistency.\\n\\nNote this syzkaller crash was reported in the \\\"Closes\\\" link below, which\\nused to be about a different bug, fixed in\\ncommit fce7bd8e385a (\\\"bpf/verifier: Handle BPF_LOAD_ACQ instructions\\nin insn_def_regno()\\\"). Because syzbot somehow confused the two bugs,\\nthe new crash and repro didn\u0027t get reported to the mailing list.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: bpf: Rechazo de acceso m\u00e1s estrecho a campos de puntero ctx. El siguiente programa BPF, simplificado a partir de una reproducci\u00f3n de syzkaller, genera una advertencia del kernel: r0 = *(u8 *)(r1 + 169); exit; Con el campo de puntero sk en el desplazamiento 168 en __sk_buff. Este acceso se detecta como una lectura m\u00e1s estrecha en bpf_skb_is_valid_access porque no coincide con offsetof(struct __sk_buff, sk). Por lo tanto, se permite y posteriormente procede a bpf_convert_ctx_access. Tenga en cuenta que para el caso \\\"is_narrower_load\\\" en convert_ctx_accesses(), insn-\u0026gt;off est\u00e1 alineado, por lo que cnt puede no ser 0 porque coincide con offsetof(struct __sk_buff, sk) en bpf_convert_ctx_access. Sin embargo, el tama\u00f1o objetivo permanece en 0 y el verificador genera una advertencia del kernel: error del verificador: error durante la conversi\u00f3n de acceso a ctx(1). Este parche corrige este error para devolver un error correcto de \\\"acceso a bpf_context no v\u00e1lido off=X size=Y\\\" en la instrucci\u00f3n de carga. El mismo problema afecta a varios campos en las estructuras de contexto que permiten acceso restringido. Algunos campos no afectados (para sk_msg, sk_lookup y sockopt) tambi\u00e9n se modificaron para usar bpf_ctx_range_ptr por consistencia. Tenga en cuenta que este fallo de syzkaller se report\u00f3 en el enlace \\\"Cierres\\\" a continuaci\u00f3n, que sol\u00eda referirse a un error diferente, corregido en el commit fce7bd8e385a (\\\"bpf/verifier: Handle BPF_LOAD_ACQ instructions in insn_def_regno()\\\"). Debido a que syzbot confundi\u00f3 de alguna manera los dos errores, el nuevo fallo y la reproducci\u00f3n no se reportaron a la lista de correo.\"}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"NVD-CWE-noinfo\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"4.13\",\"versionEndExcluding\":\"6.16.1\",\"matchCriteriaId\":\"AB2224FC-84B3-4160-8586-B94DC0B0080B\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/058a0da4f6d916a79b693384111bb80a90d73763\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/202900ceeef67458c964c2af6e1427c8e533ea7c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/33660d44e789edb4f303210c813fc56d56377a90\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/7847c4140e06f6e87229faae22cc38525334c156\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/e09299225d5ba3916c91ef70565f7d2187e4cca0\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/feae34c992eb7191862fb1594c704fbbf650fef8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…
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.


Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…