GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration
oesa-2026-2931
Vulnerability from osv_openeuler
Published
2026-07-09 08:14
Modified
2026-07-09 08:14
Summary
kernel security update
Details

The Linux Kernel, the operating system core itself.

Security Fix(es):

In the Linux kernel, the following vulnerability has been resolved:

bpf: Fix bpf_xdp_store_bytes proto for read-only arg

While making some maps in Cilium read-only from the BPF side, we noticed that the bpf_xdp_store_bytes proto is incorrect. In particular, the verifier was throwing the following error:

; ret = ctx_store_bytes(ctx, l3_off + offsetof(struct iphdr, saddr), &nat->address, 4, 0); 635: (79) r1 = (u64 )(r10 -144) ; R1=ctx() R10=fp0 fp-144=ctx() 636: (b4) w2 = 26 ; R2=26 637: (b4) w4 = 4 ; R4=4 638: (b4) w5 = 0 ; R5=0 639: (85) call bpf_xdp_store_bytes#190 write into map forbidden, value_size=6 off=0 size=4

nat comes from a BPF_F_RDONLY_PROG map, so R3 is a PTR_TO_MAP_VALUE. The verifier checks the helper's memory access to R3 in check_mem_size_reg, as it reaches ARG_CONST_SIZE argument. The third argument has expected type ARG_PTR_TO_UNINIT_MEM, which includes the MEM_WRITE flag. The verifier thus checks for a BPF_WRITE access on R3. Given R3 points to a read-only map, the check fails.

Conversely, ARG_PTR_TO_UNINIT_MEM can also lead to the helper reading from uninitialized memory.

This patch simply fixes the expected argument type to match that of bpf_skb_store_bytes.(CVE-2026-45886)


{
  "affected": [
    {
      "ecosystem_specific": {
        "aarch64": [
          "bpftool-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "bpftool-debuginfo-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-debuginfo-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-debugsource-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-devel-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-extra-modules-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-headers-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-source-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-tools-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-tools-debuginfo-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "kernel-tools-devel-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "perf-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "perf-debuginfo-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "python3-perf-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm",
          "python3-perf-debuginfo-6.6.0-145.3.18.151.oe2403sp3.aarch64.rpm"
        ],
        "src": [
          "kernel-6.6.0-145.3.18.151.oe2403sp3.src.rpm"
        ],
        "x86_64": [
          "bpftool-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "bpftool-debuginfo-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-debuginfo-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-debugsource-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-devel-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-extra-modules-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-headers-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-source-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-tools-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-tools-debuginfo-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "kernel-tools-devel-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "perf-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "perf-debuginfo-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "python3-perf-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm",
          "python3-perf-debuginfo-6.6.0-145.3.18.151.oe2403sp3.x86_64.rpm"
        ]
      },
      "package": {
        "ecosystem": "openEuler:24.03-LTS-SP3",
        "name": "kernel",
        "purl": "pkg:rpm/openEuler/kernel\u0026distro=openEuler-24.03-LTS-SP3"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.6.0-145.3.18.151.oe2403sp3"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "database_specific": {
    "severity": "Medium"
  },
  "details": "The Linux Kernel, the operating system core itself.\n\nSecurity Fix(es):\n\nIn the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fix bpf_xdp_store_bytes proto for read-only arg\n\nWhile making some maps in Cilium read-only from the BPF side, we noticed\nthat the bpf_xdp_store_bytes proto is incorrect. In particular, the\nverifier was throwing the following error:\n\n  ; ret = ctx_store_bytes(ctx, l3_off + offsetof(struct iphdr, saddr),\n                          \u0026amp;nat-\u0026gt;address, 4, 0);\n  635: (79) r1 = *(u64 *)(r10 -144)     ; R1=ctx() R10=fp0 fp-144=ctx()\n  636: (b4) w2 = 26                     ; R2=26\n  637: (b4) w4 = 4                      ; R4=4\n  638: (b4) w5 = 0                      ; R5=0\n  639: (85) call bpf_xdp_store_bytes#190\n  write into map forbidden, value_size=6 off=0 size=4\n\nnat comes from a BPF_F_RDONLY_PROG map, so R3 is a PTR_TO_MAP_VALUE.\nThe verifier checks the helper\u0026apos;s memory access to R3 in\ncheck_mem_size_reg, as it reaches ARG_CONST_SIZE argument. The third\nargument has expected type ARG_PTR_TO_UNINIT_MEM, which includes the\nMEM_WRITE flag. The verifier thus checks for a BPF_WRITE access on R3.\nGiven R3 points to a read-only map, the check fails.\n\nConversely, ARG_PTR_TO_UNINIT_MEM can also lead to the helper reading\nfrom uninitialized memory.\n\nThis patch simply fixes the expected argument type to match that of\nbpf_skb_store_bytes.(CVE-2026-45886)",
  "id": "OESA-2026-2931",
  "modified": "2026-07-09T08:14:41Z",
  "published": "2026-07-09T08:14:41Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-2931"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-45886"
    }
  ],
  "schema_version": "1.7.2",
  "severity": [
    {
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
      "type": "CVSS_V3"
    }
  ],
  "summary": "kernel security update",
  "upstream": [
    "CVE-2026-45886"
  ]
}



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…