SecOps SignalSecurity Intelligence Workspace
Collection Running31 / 46 Sources HealthyPublic Intel Only
Vulnerabilities/CVE-2026-74269Public Intelligence Dossier
Source: Microsoft · Limited verification•Last verified: •Collection Running
CVE-2026-74269Unknown / EvaluatingModerate (raw)CVSS 4.4

bnxt: fix head underflow on XDP head-grow

Published: 23 Aug 2026•Last updated: 24 Sept 2026, 07:51 AM IST•Source identifier: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Dossier completeness: source-provided sections 3 / 3 · rule guidance not available. Missing source facts count as incomplete.
Official source
CISA KEV catalog
Unknown
KEV status was not determined.
CVSS score
4.4Moderate (raw)
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H
Metric sourceMicrosoft MSRC CVRF
EPSS probability
0.6%0.006
Percentile50th
Weakness type
—
No further CWE recorded
Remediation
Patch status unknown
No fixed version or KB recorded

Why It Matters

Analysis dossier

Why It Matters

In the Linux kernel, the following vulnerability has been resolved: bnxt: fix head underflow on XDP head-grow The xdp.py test test_xdp_native_adjst_head_grow_data crashes when run on a bnxt machine (and also crashes in NIPA). It seems that the bug is an underflow in bnxt_rx_multi_page_skb, which builds the skb head: napi_build_skb(data_ptr - bp->rx_offset, rxr->rx_page_size); The problem with this expression is that in page mode, rx_offset is: bp->rx_offset = NET_IP_ALIGN + XDP_PACKET_HEADROOM; Which evaluates (at least on x86_64) to 258. The test test_xdp_native_adjst_head_grow_data tests a case where the head is adjusted by -256. When this test runs, data_ptr is shifted to frag_start + 2 (where frag_start = page_address(page) + offset). Then, bnxt_rx_multi_page_skb is invoked and the napi_build_skb expression subtracts 258, landing at an address before frag_start. This could be either the previous fragment or the previous physical page when the offset is < 256 (e.g. if the fragment started at offset 0). When the skb is freed, the page pool fragment reference is dropped on either the wrong page or the wrong frag of the right page. In either case, the corrupted reference count can lead to the page being prematurely recycled while still in use. Once (incorrectly) recycled, it can be handed out again and on driver teardown this would result in a double free. The commit under fixes updated this code to handle the case where the native page size is >= 64k, but it unintentionally broke the head grow case. To fix this, add an offset field to struct bnxt_sw_rx_bd, mirroring the existing offset field in struct bnxt_sw_rx_agg_bd. Populate it on allocation and preserve it on reuse. In bnxt_rx_multi_page_skb, use the newly added offset field to compute the fragment start and pass that to napi_build_skb. Adjust the layout with skb_reserve. There are two cases, the non-adjustment case and the adjustment case. In both cases, the skb is built at page_address(page) + offset to account for the case where the native page size >= 64K and skb_reserve is called with data_ptr - (page_address(page) + offset). That difference equals bp->rx_offset when data_ptr was not moved, or bp->rx_offset + xdp_adjust when XDP adjusted the head. Re-running the failing test with this commit applied causes the test to run successfully to completion. The other rx_skb_func implementations don't have this issue.

SOC priority

High

Actively exploited

Unknown

Publicly disclosed

Unknown

Risk basis: SOC ecosystem technology relevance; CRITICAL severity; Critical CVSS without confirmed KEV exploitation; No confirmed exploitation signal in current enrichment

Affected Products & Remediation

3 source-backed products
Affected products and versions (source)
  • azl3 kernel 6.6.150.1-1 on Azure Linux 3.0 · version range not provided by source · Microsoft MSRC · Source
  • azl3 kernel 6.6.152.1-1 on Azure Linux 3.0 · version range not provided by source · Microsoft MSRC · Source
  • azl3 kernel 6.6.157.1-1 on Azure Linux 3.0 · version range not provided by source · Microsoft MSRC · Source
Recorded patch / KBNot provided by source

Vendor or catalog guidance (source)

  • Microsoft MSRC: Release Notes

Known exploitation (source facts)

Only what a source states. Unknown means no source has said either way; it is not "not exploited".

CISA KEV
Unknown
Exploited (source statement)
Unknown
Publicly disclosed (source)
Unknown

Suggested hunting (rule-based inference)

SecOps Signal recommendation (rule-based inference). These steps are hunting hypotheses from the vulnerability class; they do not state or imply that exploitation occurred here or anywhere.

No rule-based guidance for this vulnerability class

CISA KEV Record

CISA KEV status was not determined for this record.

Change History & Source Data

— No recorded material change

CNA / source
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Record status · verification
UPDATED · NVD API
CPE
Unknown

Linked by the query's stored exact CVE association. Review required tables and validation status before use.

Detection Hunting Query
Target: DeviceTvmSoftwareVulnerabilities•Defender XDR
Detect endpoints exposed to CVE-2026-74269
Purpose: Exposure assessment (Category: Exposure Check)Why linked: Query metadata names CVE-2026-74269
DeviceTvmSoftwareVulnerabilities| where CveId == "CVE-2026-74269"| project DeviceId, DeviceName, OSPlatform, OSVersion, SoftwareVendor, SoftwareName, SoftwareVersion, CveId, VulnerabilitySeverityLevel, RecommendedSecurityUpdate, RecommendedSecurityUpdateId| sort by VulnerabilitySeverityLevel desc
Schema Checked · Not runtime validatedSource: SecOps Signal deterministic template · Limited verificationStatic screening: Passed structure and schema checks; tenant execution is not verified.
SecOps Signal surfaces public advisory facts only. A missing value means the source has not published it, not that your environment is unaffected. No tenant inventory is connected.