GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2024-47702 (GCVE-0-2024-47702)

Vulnerability from cvelistv5 – Published: 2024-10-21 11:53 – Updated: 2026-08-05 11:39
VLAI
Title
bpf: Fail verification for sign-extension of packet data/data_end/data_meta
Summary
In the Linux kernel, the following vulnerability has been resolved: bpf: Fail verification for sign-extension of packet data/data_end/data_meta syzbot reported a kernel crash due to commit 1f1e864b6555 ("bpf: Handle sign-extenstin ctx member accesses"). The reason is due to sign-extension of 32-bit load for packet data/data_end/data_meta uapi field. The original code looks like: r2 = *(s32 *)(r1 + 76) /* load __sk_buff->data */ r3 = *(u32 *)(r1 + 80) /* load __sk_buff->data_end */ r0 = r2 r0 += 8 if r3 > r0 goto +1 ... Note that __sk_buff->data load has 32-bit sign extension. After verification and convert_ctx_accesses(), the final asm code looks like: r2 = *(u64 *)(r1 +208) r2 = (s32)r2 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 > r0 goto pc+1 ... Note that 'r2 = (s32)r2' may make the kernel __sk_buff->data address invalid which may cause runtime failure. Currently, in C code, typically we have void *data = (void *)(long)skb->data; void *data_end = (void *)(long)skb->data_end; ... and it will generate r2 = *(u64 *)(r1 +208) r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 > r0 goto pc+1 If we allow sign-extension, void *data = (void *)(long)(int)skb->data; void *data_end = (void *)(long)skb->data_end; ... the generated code looks like r2 = *(u64 *)(r1 +208) r2 <<= 32 r2 s>>= 32 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 > r0 goto pc+1 and this will cause verification failure since "r2 <<= 32" is not allowed as "r2" is a packet pointer. To fix this issue for case r2 = *(s32 *)(r1 + 76) /* load __sk_buff->data */ this patch added additional checking in is_valid_access() callback function for packet data/data_end/data_meta access. If those accesses are with sign-extenstion, the verification will fail. [1] https://lore.kernel.org/bpf/000000000000c90eee061d236d37@google.com/
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2024-10-21 13:04 UTC
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 1f1e864b65554e33fe74e3377e58b12f4302f2eb , < f1620c93a1ec950d87ef327a565d3907736d3340 (git)
Affected: 1f1e864b65554e33fe74e3377e58b12f4302f2eb , < f09757fe97a225ae505886eac572e4cbfba96537 (git)
Affected: 1f1e864b65554e33fe74e3377e58b12f4302f2eb , < 92de36080c93296ef9005690705cba260b9bd68a (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.6
Unaffected: 0 , < 6.6 (semver)
Unaffected: 6.10.13 , ≤ 6.10.* (semver)
Unaffected: 6.11.2 , ≤ 6.11.* (semver)
Unaffected: 6.12 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-47702",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-10-21T13:04:24.861686Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-10-21T13:14:13.443Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "include/linux/bpf.h",
            "kernel/bpf/verifier.c",
            "net/core/filter.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "f1620c93a1ec950d87ef327a565d3907736d3340",
              "status": "affected",
              "version": "1f1e864b65554e33fe74e3377e58b12f4302f2eb",
              "versionType": "git"
            },
            {
              "lessThan": "f09757fe97a225ae505886eac572e4cbfba96537",
              "status": "affected",
              "version": "1f1e864b65554e33fe74e3377e58b12f4302f2eb",
              "versionType": "git"
            },
            {
              "lessThan": "92de36080c93296ef9005690705cba260b9bd68a",
              "status": "affected",
              "version": "1f1e864b65554e33fe74e3377e58b12f4302f2eb",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "include/linux/bpf.h",
            "kernel/bpf/verifier.c",
            "net/core/filter.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.6"
            },
            {
              "lessThan": "6.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.10.*",
              "status": "unaffected",
              "version": "6.10.13",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.11.*",
              "status": "unaffected",
              "version": "6.11.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.12",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.10.13",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.11.2",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fail verification for sign-extension of packet data/data_end/data_meta\n\nsyzbot reported a kernel crash due to\n  commit 1f1e864b6555 (\"bpf: Handle sign-extenstin ctx member accesses\").\nThe reason is due to sign-extension of 32-bit load for\npacket data/data_end/data_meta uapi field.\n\nThe original code looks like:\n        r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u003edata */\n        r3 = *(u32 *)(r1 + 80) /* load __sk_buff-\u003edata_end */\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto +1\n        ...\nNote that __sk_buff-\u003edata load has 32-bit sign extension.\n\nAfter verification and convert_ctx_accesses(), the final asm code looks like:\n        r2 = *(u64 *)(r1 +208)\n        r2 = (s32)r2\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\n        ...\nNote that \u0027r2 = (s32)r2\u0027 may make the kernel __sk_buff-\u003edata address invalid\nwhich may cause runtime failure.\n\nCurrently, in C code, typically we have\n        void *data = (void *)(long)skb-\u003edata;\n        void *data_end = (void *)(long)skb-\u003edata_end;\n        ...\nand it will generate\n        r2 = *(u64 *)(r1 +208)\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\n\nIf we allow sign-extension,\n        void *data = (void *)(long)(int)skb-\u003edata;\n        void *data_end = (void *)(long)skb-\u003edata_end;\n        ...\nthe generated code looks like\n        r2 = *(u64 *)(r1 +208)\n        r2 \u003c\u003c= 32\n        r2 s\u003e\u003e= 32\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\nand this will cause verification failure since \"r2 \u003c\u003c= 32\" is not allowed\nas \"r2\" is a packet pointer.\n\nTo fix this issue for case\n  r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u003edata */\nthis patch added additional checking in is_valid_access() callback\nfunction for packet data/data_end/data_meta access. If those accesses\nare with sign-extenstion, the verification will fail.\n\n  [1] https://lore.kernel.org/bpf/000000000000c90eee061d236d37@google.com/"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerability is reached by loading a crafted eBPF program through the bpf(BPF_PROG_LOAD) syscall, which requires local access to the system; the attacker supplies the malicious LDSX instruction, not a remote peer.\nAC:L - The attacker authors the BPF bytecode directly, so the verifier bypass is accepted deterministically on every load, and the corrupted `(s32)skb-\u003edata` pointer is produced on every execution of the program with no race or unpredictable precondition; running the hook repeatedly over many skbs makes the out-of-bounds dereference a certainty.\nPR:L - Loading the affected program types requires CAP_BPF/CAP_NET_ADMIN, which BPF token delegation (`bpf_token_capable()` \u2192 `bpf_ns_capable(token-\u003euserns, cap)`, present in the affected 6.9\u20136.11 range) makes available to a host-unprivileged user inside a user namespace, and CAP_BPF is by design a reduced privilege whose security boundary is the verifier itself.\nUI:N - The attacker loads and attaches the program and then generates the traffic (or uses BPF_PROG_TEST_RUN) that executes it; no action from any other user is needed.\nS:U - The out-of-bounds access and resulting corruption occur within the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The verifier still tracks the truncated value as a valid PTR_TO_PACKET, so the program performs kernel-mode reads at `(s32)skb-\u003edata + K` far outside any packet buffer and can copy the results into a BPF map or the packet, giving an out-of-bounds kernel memory read primitive.\nI:H - `may_access_direct_pkt_data()` grants direct packet writes to SCHED_CLS, SCHED_ACT, XDP, LWT_XMIT and SK_SKB, so the same corrupted pointer yields kernel-mode stores at an attacker-influenced address \u2014 memory corruption exploitable for further escalation.\nA:H - syzbot reported this as a kernel crash; dereferencing the mangled address from softirq/NAPI context produces a page fault or general protection fault in kernel mode, oopsing or panicking the machine."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:39:33.640Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/f1620c93a1ec950d87ef327a565d3907736d3340"
        },
        {
          "url": "https://git.kernel.org/stable/c/f09757fe97a225ae505886eac572e4cbfba96537"
        },
        {
          "url": "https://git.kernel.org/stable/c/92de36080c93296ef9005690705cba260b9bd68a"
        }
      ],
      "title": "bpf: Fail verification for sign-extension of packet data/data_end/data_meta",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-47702",
    "datePublished": "2024-10-21T11:53:37.958Z",
    "dateReserved": "2024-09-30T16:00:12.945Z",
    "dateUpdated": "2026-08-05T11:39:33.640Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2024-47702",
      "date": "2026-09-19",
      "epss": "0.00213",
      "percentile": "0.11953"
    },
    "fkie_nvd": {
      "configurations": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "matchCriteriaId": "5E608BB9-C140-4A10-AE7A-FC5B5D4C1972",
                  "versionEndExcluding": "6.10.13",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "matchCriteriaId": "AB755D26-97F4-43B6-8604-CD076811E181",
                  "versionEndExcluding": "6.11.2",
                  "versionStartIncluding": "6.11",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fail verification for sign-extension of packet data/data_end/data_meta\n\nsyzbot reported a kernel crash due to\n  commit 1f1e864b6555 (\"bpf: Handle sign-extenstin ctx member accesses\").\nThe reason is due to sign-extension of 32-bit load for\npacket data/data_end/data_meta uapi field.\n\nThe original code looks like:\n        r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u003edata */\n        r3 = *(u32 *)(r1 + 80) /* load __sk_buff-\u003edata_end */\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto +1\n        ...\nNote that __sk_buff-\u003edata load has 32-bit sign extension.\n\nAfter verification and convert_ctx_accesses(), the final asm code looks like:\n        r2 = *(u64 *)(r1 +208)\n        r2 = (s32)r2\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\n        ...\nNote that \u0027r2 = (s32)r2\u0027 may make the kernel __sk_buff-\u003edata address invalid\nwhich may cause runtime failure.\n\nCurrently, in C code, typically we have\n        void *data = (void *)(long)skb-\u003edata;\n        void *data_end = (void *)(long)skb-\u003edata_end;\n        ...\nand it will generate\n        r2 = *(u64 *)(r1 +208)\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\n\nIf we allow sign-extension,\n        void *data = (void *)(long)(int)skb-\u003edata;\n        void *data_end = (void *)(long)skb-\u003edata_end;\n        ...\nthe generated code looks like\n        r2 = *(u64 *)(r1 +208)\n        r2 \u003c\u003c= 32\n        r2 s\u003e\u003e= 32\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\nand this will cause verification failure since \"r2 \u003c\u003c= 32\" is not allowed\nas \"r2\" is a packet pointer.\n\nTo fix this issue for case\n  r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u003edata */\nthis patch added additional checking in is_valid_access() callback\nfunction for packet data/data_end/data_meta access. If those accesses\nare with sign-extenstion, the verification will fail.\n\n  [1] https://lore.kernel.org/bpf/000000000000c90eee061d236d37@google.com/"
        },
        {
          "lang": "es",
          "value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: bpf: Error en la verificaci\u00f3n de la extensi\u00f3n de signo del paquete data/data_end/data_meta syzbot inform\u00f3 de un fallo del kernel debido a el commit 1f1e864b6555 (\"bpf: Manejar los accesos a miembros ctx de la extensi\u00f3n de signo\"). La raz\u00f3n se debe a la extensi\u00f3n de signo de la carga de 32 bits para el campo uapi del paquete data/data_end/data_meta. El c\u00f3digo original se ve as\u00ed: r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u0026gt;data */ r3 = *(u32 *)(r1 + 80) /* load __sk_buff-\u0026gt;data_end */ r0 = r2 r0 += 8 if r3 \u0026gt; r0 goto +1 ... Tenga en cuenta que la carga de __sk_buff-\u0026gt;data tiene una extensi\u00f3n de signo de 32 bits. Despu\u00e9s de la verificaci\u00f3n y convert_ctx_accesses(), el c\u00f3digo asm final se ve as\u00ed: r2 = *(u64 *)(r1 +208) r2 = (s32)r2 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 \u0026gt; r0 goto pc+1 ... Tenga en cuenta que \u0027r2 = (s32)r2\u0027 puede hacer que la direcci\u00f3n __sk_buff-\u0026gt;data del n\u00facleo sea inv\u00e1lida, lo que puede causar un error en tiempo de ejecuci\u00f3n. Actualmente, en el c\u00f3digo C, normalmente tenemos void *data = (void *)(long)skb-\u0026gt;data; void *data_end = (void *)(long)skb-\u0026gt;data_end; ... y generar\u00e1 r2 = *(u64 *)(r1 +208) r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 \u0026gt; r0 goto pc+1 Si permitimos la extensi\u00f3n de signo, void *data = (void *)(long)(int)skb-\u0026gt;data; void *data_end = (void *)(long)skb-\u0026gt;data_end; ... el c\u00f3digo generado se ve as\u00ed r2 = *(u64 *)(r1 +208) r2 \u0026lt;\u0026lt;= 32 r2 s\u0026gt;\u0026gt;= 32 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 \u0026gt; r0 goto pc+1 y esto causar\u00e1 un error de verificaci\u00f3n ya que \"r2 \u0026lt;\u0026lt;= 32\" no est\u00e1 permitido ya que \"r2\" es un puntero de paquete. Para solucionar este problema en el caso r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u0026gt;data */, este parche agreg\u00f3 una verificaci\u00f3n adicional en la funci\u00f3n de devoluci\u00f3n de llamada is_valid_access() para el acceso a los paquetes data/data_end/data_meta. Si esos accesos son con la extensi\u00f3n sign-extenstion, la verificaci\u00f3n fallar\u00e1. [1] https://lore.kernel.org/bpf/000000000000c90eee061d236d37@google.com/"
        }
      ],
      "id": "CVE-2024-47702",
      "lastModified": "2024-10-24T13:30:59.247",
      "metrics": {
        "cvssMetricV31": [
          {
            "cvssData": {
              "attackComplexity": "LOW",
              "attackVector": "LOCAL",
              "availabilityImpact": "HIGH",
              "baseScore": 5.5,
              "baseSeverity": "MEDIUM",
              "confidentialityImpact": "NONE",
              "integrityImpact": "NONE",
              "privilegesRequired": "LOW",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
              "version": "3.1"
            },
            "exploitabilityScore": 1.8,
            "impactScore": 3.6,
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      },
      "published": "2024-10-21T12:15:06.743",
      "references": [
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/92de36080c93296ef9005690705cba260b9bd68a"
        },
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/f09757fe97a225ae505886eac572e4cbfba96537"
        },
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/f1620c93a1ec950d87ef327a565d3907736d3340"
        }
      ],
      "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "vulnStatus": "Analyzed",
      "weaknesses": [
        {
          "description": [
            {
              "lang": "en",
              "value": "NVD-CWE-noinfo"
            }
          ],
          "source": "nvd@nist.gov",
          "type": "Primary"
        }
      ]
    },
    "microsoft_vex": {
      "current_release_date": "2026-06-28T01:50:22.000Z",
      "cve": "CVE-2024-47702",
      "id": "msrc_CVE-2024-47702",
      "initial_release_date": "2024-10-01T07:00:00.000Z",
      "product_status:under_investigation": "16",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "bpf: Fail verification for sign-extension of packet data/data_end/data_meta",
      "url": "https://msrc.microsoft.com/csaf/vex/2024/msrc_cve-2024-47702.json",
      "version": "13"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "include/linux/bpf.h",
                  "kernel/bpf/verifier.c",
                  "net/core/filter.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "f1620c93a1ec950d87ef327a565d3907736d3340",
                    "status": "affected",
                    "version": "1f1e864b65554e33fe74e3377e58b12f4302f2eb",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "f09757fe97a225ae505886eac572e4cbfba96537",
                    "status": "affected",
                    "version": "1f1e864b65554e33fe74e3377e58b12f4302f2eb",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "92de36080c93296ef9005690705cba260b9bd68a",
                    "status": "affected",
                    "version": "1f1e864b65554e33fe74e3377e58b12f4302f2eb",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "include/linux/bpf.h",
                  "kernel/bpf/verifier.c",
                  "net/core/filter.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.6"
                  },
                  {
                    "lessThan": "6.6",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.10.*",
                    "status": "unaffected",
                    "version": "6.10.13",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.11.*",
                    "status": "unaffected",
                    "version": "6.11.2",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "6.12",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "5E608BB9-C140-4A10-AE7A-FC5B5D4C1972",
                    "versionEndExcluding": "6.10.13",
                    "versionStartIncluding": "6.6",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "AB755D26-97F4-43B6-8604-CD076811E181",
                    "versionEndExcluding": "6.11.2",
                    "versionStartIncluding": "6.11",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fail verification for sign-extension of packet data/data_end/data_meta\n\nsyzbot reported a kernel crash due to\n  commit 1f1e864b6555 (\"bpf: Handle sign-extenstin ctx member accesses\").\nThe reason is due to sign-extension of 32-bit load for\npacket data/data_end/data_meta uapi field.\n\nThe original code looks like:\n        r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u003edata */\n        r3 = *(u32 *)(r1 + 80) /* load __sk_buff-\u003edata_end */\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto +1\n        ...\nNote that __sk_buff-\u003edata load has 32-bit sign extension.\n\nAfter verification and convert_ctx_accesses(), the final asm code looks like:\n        r2 = *(u64 *)(r1 +208)\n        r2 = (s32)r2\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\n        ...\nNote that \u0027r2 = (s32)r2\u0027 may make the kernel __sk_buff-\u003edata address invalid\nwhich may cause runtime failure.\n\nCurrently, in C code, typically we have\n        void *data = (void *)(long)skb-\u003edata;\n        void *data_end = (void *)(long)skb-\u003edata_end;\n        ...\nand it will generate\n        r2 = *(u64 *)(r1 +208)\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\n\nIf we allow sign-extension,\n        void *data = (void *)(long)(int)skb-\u003edata;\n        void *data_end = (void *)(long)skb-\u003edata_end;\n        ...\nthe generated code looks like\n        r2 = *(u64 *)(r1 +208)\n        r2 \u003c\u003c= 32\n        r2 s\u003e\u003e= 32\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\nand this will cause verification failure since \"r2 \u003c\u003c= 32\" is not allowed\nas \"r2\" is a packet pointer.\n\nTo fix this issue for case\n  r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u003edata */\nthis patch added additional checking in is_valid_access() callback\nfunction for packet data/data_end/data_meta access. If those accesses\nare with sign-extenstion, the verification will fail.\n\n  [1] https://lore.kernel.org/bpf/000000000000c90eee061d236d37@google.com/"
          },
          {
            "lang": "es",
            "value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: bpf: Error en la verificaci\u00f3n de la extensi\u00f3n de signo del paquete data/data_end/data_meta syzbot inform\u00f3 de un fallo del kernel debido a el commit 1f1e864b6555 (\"bpf: Manejar los accesos a miembros ctx de la extensi\u00f3n de signo\"). La raz\u00f3n se debe a la extensi\u00f3n de signo de la carga de 32 bits para el campo uapi del paquete data/data_end/data_meta. El c\u00f3digo original se ve as\u00ed: r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u0026gt;data */ r3 = *(u32 *)(r1 + 80) /* load __sk_buff-\u0026gt;data_end */ r0 = r2 r0 += 8 if r3 \u0026gt; r0 goto +1 ... Tenga en cuenta que la carga de __sk_buff-\u0026gt;data tiene una extensi\u00f3n de signo de 32 bits. Despu\u00e9s de la verificaci\u00f3n y convert_ctx_accesses(), el c\u00f3digo asm final se ve as\u00ed: r2 = *(u64 *)(r1 +208) r2 = (s32)r2 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 \u0026gt; r0 goto pc+1 ... Tenga en cuenta que \u0027r2 = (s32)r2\u0027 puede hacer que la direcci\u00f3n __sk_buff-\u0026gt;data del n\u00facleo sea inv\u00e1lida, lo que puede causar un error en tiempo de ejecuci\u00f3n. Actualmente, en el c\u00f3digo C, normalmente tenemos void *data = (void *)(long)skb-\u0026gt;data; void *data_end = (void *)(long)skb-\u0026gt;data_end; ... y generar\u00e1 r2 = *(u64 *)(r1 +208) r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 \u0026gt; r0 goto pc+1 Si permitimos la extensi\u00f3n de signo, void *data = (void *)(long)(int)skb-\u0026gt;data; void *data_end = (void *)(long)skb-\u0026gt;data_end; ... el c\u00f3digo generado se ve as\u00ed r2 = *(u64 *)(r1 +208) r2 \u0026lt;\u0026lt;= 32 r2 s\u0026gt;\u0026gt;= 32 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 \u0026gt; r0 goto pc+1 y esto causar\u00e1 un error de verificaci\u00f3n ya que \"r2 \u0026lt;\u0026lt;= 32\" no est\u00e1 permitido ya que \"r2\" es un puntero de paquete. Para solucionar este problema en el caso r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u0026gt;data */, este parche agreg\u00f3 una verificaci\u00f3n adicional en la funci\u00f3n de devoluci\u00f3n de llamada is_valid_access() para el acceso a los paquetes data/data_end/data_meta. Si esos accesos son con la extensi\u00f3n sign-extenstion, la verificaci\u00f3n fallar\u00e1. [1] https://lore.kernel.org/bpf/000000000000c90eee061d236d37@google.com/"
          }
        ],
        "id": "CVE-2024-47702",
        "lastModified": "2026-08-04T11:20:42.080",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            },
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 5.5,
                "baseSeverity": "MEDIUM",
                "confidentialityImpact": "NONE",
                "integrityImpact": "NONE",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 3.6,
              "source": "nvd@nist.gov",
              "type": "Primary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2024-47702",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-10-21T13:04:24.861686Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2024-10-21T12:15:06.743",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/92de36080c93296ef9005690705cba260b9bd68a"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/f09757fe97a225ae505886eac572e4cbfba96537"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/f1620c93a1ec950d87ef327a565d3907736d3340"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Modified",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "NVD-CWE-noinfo"
              }
            ],
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-04T22:41:12+00:00",
      "cve": "CVE-2024-47702",
      "id": "CVE-2024-47702",
      "initial_release_date": "2024-10-21T00:00:00+00:00",
      "product_status:known_affected": "136",
      "product_status:known_not_affected": "62",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: bpf: Fail verification for sign-extension of packet data/data_end/data_meta",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2024/cve-2024-47702.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-05T00:42:12Z",
      "cve": "CVE-2024-47702",
      "id": "CVE-2024-47702",
      "initial_release_date": "2024-10-21T15:47:20Z",
      "product_status:known_affected": "394",
      "product_status:known_not_affected": "443",
      "product_status:recommended": "367",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2024-47702",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2024-47702.json",
      "version": "57"
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2024-47702",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2024-10-21T13:04:24.861686Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2024-10-21T13:04:28.636Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "defaultStatus": "unaffected",
              "product": "Linux",
              "programFiles": [
                "include/linux/bpf.h",
                "kernel/bpf/verifier.c",
                "net/core/filter.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "lessThan": "f1620c93a1ec950d87ef327a565d3907736d3340",
                  "status": "affected",
                  "version": "1f1e864b65554e33fe74e3377e58b12f4302f2eb",
                  "versionType": "git"
                },
                {
                  "lessThan": "f09757fe97a225ae505886eac572e4cbfba96537",
                  "status": "affected",
                  "version": "1f1e864b65554e33fe74e3377e58b12f4302f2eb",
                  "versionType": "git"
                },
                {
                  "lessThan": "92de36080c93296ef9005690705cba260b9bd68a",
                  "status": "affected",
                  "version": "1f1e864b65554e33fe74e3377e58b12f4302f2eb",
                  "versionType": "git"
                }
              ]
            },
            {
              "defaultStatus": "affected",
              "product": "Linux",
              "programFiles": [
                "include/linux/bpf.h",
                "kernel/bpf/verifier.c",
                "net/core/filter.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "status": "affected",
                  "version": "6.6"
                },
                {
                  "lessThan": "6.6",
                  "status": "unaffected",
                  "version": "0",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "6.10.*",
                  "status": "unaffected",
                  "version": "6.10.13",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "6.11.*",
                  "status": "unaffected",
                  "version": "6.11.2",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "*",
                  "status": "unaffected",
                  "version": "6.12",
                  "versionType": "original_commit_for_fix"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.10.13",
                      "versionStartIncluding": "6.6",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.11.2",
                      "versionStartIncluding": "6.6",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.12",
                      "versionStartIncluding": "6.6",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ]
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fail verification for sign-extension of packet data/data_end/data_meta\n\nsyzbot reported a kernel crash due to\n  commit 1f1e864b6555 (\"bpf: Handle sign-extenstin ctx member accesses\").\nThe reason is due to sign-extension of 32-bit load for\npacket data/data_end/data_meta uapi field.\n\nThe original code looks like:\n        r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u003edata */\n        r3 = *(u32 *)(r1 + 80) /* load __sk_buff-\u003edata_end */\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto +1\n        ...\nNote that __sk_buff-\u003edata load has 32-bit sign extension.\n\nAfter verification and convert_ctx_accesses(), the final asm code looks like:\n        r2 = *(u64 *)(r1 +208)\n        r2 = (s32)r2\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\n        ...\nNote that \u0027r2 = (s32)r2\u0027 may make the kernel __sk_buff-\u003edata address invalid\nwhich may cause runtime failure.\n\nCurrently, in C code, typically we have\n        void *data = (void *)(long)skb-\u003edata;\n        void *data_end = (void *)(long)skb-\u003edata_end;\n        ...\nand it will generate\n        r2 = *(u64 *)(r1 +208)\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\n\nIf we allow sign-extension,\n        void *data = (void *)(long)(int)skb-\u003edata;\n        void *data_end = (void *)(long)skb-\u003edata_end;\n        ...\nthe generated code looks like\n        r2 = *(u64 *)(r1 +208)\n        r2 \u003c\u003c= 32\n        r2 s\u003e\u003e= 32\n        r3 = *(u64 *)(r1 +80)\n        r0 = r2\n        r0 += 8\n        if r3 \u003e r0 goto pc+1\nand this will cause verification failure since \"r2 \u003c\u003c= 32\" is not allowed\nas \"r2\" is a packet pointer.\n\nTo fix this issue for case\n  r2 = *(s32 *)(r1 + 76) /* load __sk_buff-\u003edata */\nthis patch added additional checking in is_valid_access() callback\nfunction for packet data/data_end/data_meta access. If those accesses\nare with sign-extenstion, the verification will fail.\n\n  [1] https://lore.kernel.org/bpf/000000000000c90eee061d236d37@google.com/"
            }
          ],
          "metrics": [
            {
              "cvssV3_1": {
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "scenarios": [
                {
                  "lang": "en",
                  "value": "AV:L - The vulnerability is reached by loading a crafted eBPF program through the bpf(BPF_PROG_LOAD) syscall, which requires local access to the system; the attacker supplies the malicious LDSX instruction, not a remote peer.\nAC:L - The attacker authors the BPF bytecode directly, so the verifier bypass is accepted deterministically on every load, and the corrupted `(s32)skb-\u003edata` pointer is produced on every execution of the program with no race or unpredictable precondition; running the hook repeatedly over many skbs makes the out-of-bounds dereference a certainty.\nPR:L - Loading the affected program types requires CAP_BPF/CAP_NET_ADMIN, which BPF token delegation (`bpf_token_capable()` \u2192 `bpf_ns_capable(token-\u003euserns, cap)`, present in the affected 6.9\u20136.11 range) makes available to a host-unprivileged user inside a user namespace, and CAP_BPF is by design a reduced privilege whose security boundary is the verifier itself.\nUI:N - The attacker loads and attaches the program and then generates the traffic (or uses BPF_PROG_TEST_RUN) that executes it; no action from any other user is needed.\nS:U - The out-of-bounds access and resulting corruption occur within the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The verifier still tracks the truncated value as a valid PTR_TO_PACKET, so the program performs kernel-mode reads at `(s32)skb-\u003edata + K` far outside any packet buffer and can copy the results into a BPF map or the packet, giving an out-of-bounds kernel memory read primitive.\nI:H - `may_access_direct_pkt_data()` grants direct packet writes to SCHED_CLS, SCHED_ACT, XDP, LWT_XMIT and SK_SKB, so the same corrupted pointer yields kernel-mode stores at an attacker-influenced address \u2014 memory corruption exploitable for further escalation.\nA:H - syzbot reported this as a kernel crash; dereferencing the mangled address from softirq/NAPI context produces a page fault or general protection fault in kernel mode, oopsing or panicking the machine."
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-08-05T11:39:33.640Z",
            "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "shortName": "Linux"
          },
          "references": [
            {
              "url": "https://git.kernel.org/stable/c/f1620c93a1ec950d87ef327a565d3907736d3340"
            },
            {
              "url": "https://git.kernel.org/stable/c/f09757fe97a225ae505886eac572e4cbfba96537"
            },
            {
              "url": "https://git.kernel.org/stable/c/92de36080c93296ef9005690705cba260b9bd68a"
            }
          ],
          "title": "bpf: Fail verification for sign-extension of packet data/data_end/data_meta",
          "x_generator": {
            "engine": "bippy-1.2.0"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "assignerShortName": "Linux",
        "cveId": "CVE-2024-47702",
        "datePublished": "2024-10-21T11:53:37.958Z",
        "dateReserved": "2024-09-30T16:00:12.945Z",
        "dateUpdated": "2026-08-05T11:39:33.640Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



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…

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.


Loading…