Skip to main content

OpenWrt odhcpd CVE-2026-53920

| EUVDEUVD-2026-108968 HIGH
Out-of-bounds Read (CWE-125)
2026-10-23 GitHub_M
8.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain access to local IPv6 link
  2. Exploit
    Send DHCPv6 request with zero-length IA_NA at buffer boundary
  3. Execution
    Trigger out-of-bounds read of ia->iaid past data_buf[8192]
  4. Impact
    Receive leaked stack canary/pointers reflected in reply IAID

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

odhcpd must be running with DHCPv6 server handling enabled on the target interface, and the attacker must be able to send DHCPv6 client traffic on the local IPv6 link (link-local adjacency, not internet-routable). The request must contain a valid Client Identifier so dhcpv6_ia_handle_IAs() processes IA options, and the final IA_NA or IA_PD option must be short enough (the repro uses olen==0) that the ia->iaid read crosses the 8192-byte receive-buffer boundary. The network path must deliver an 8192-byte UDP datagram; this does not require changing the target MTU because IPv6 fragmentation can reassemble before recvmsg(). Limiting factors that reduce real-world risk: requires same-link adjacency, DHCPv6 server mode must be enabled, and each request discloses only ~4 bytes (reflected as the reply IAID), so defeating ASLR/canary requires many probing requests.

Impact

This is a genuine but second-tier priority: a real, validated flaw whose impact is confined to information disclosure. The input CVSS 4.0 score is 8.7 (High) with vector AV:N/AC:L/AT:N/PR:N/UI:N and VC:H only (VI:N/VA:N), reflecting an unauthenticated, low-complexity read of high-value memory with no integrity or availability impact. Signals partly conflict on reachability: the scored vector uses AV:N (network), but the advisory and description repeatedly state the attacker must be 'network-adjacent' on the 'local IPv6 link' - DHCPv6 is link-local, so adjacency (AV:A) is the accurate attack vector and AV:N overstates internet-wide exposure; verify reachability assumptions before prioritizing. No EPSS score is provided in the input, so probabilistic exploitation likelihood cannot be weighed. The CVE is not listed in CISA KEV, so there is no evidence of active exploitation - treat as not-yet-exploited. The vuln.today Decision label is 'this_week' (not act_now/emergency), consistent with a serious-but-not-crisis item. A public PoC reference exists in the GHSA advisory as a detailed, maintainer-validated reproducer (ASAN stack-buffer-overflow report plus a native run leaking the stack canary 00cf9a87 and ~392 bytes of stack), though the input does not confirm it as independently published, working exploit code. The standalone impact is limited - roughly four bytes reflected per request as the reply IAID - so its true danger is as a mitigation-bypass primitive: leaking the stack canary and ASLR-useful stack/process pointers to enable a separate memory-corruption exploit. Net: patch on a near-term (this-week) cadence, especially on OpenWrt devices exposing DHCPv6 to untrusted link-local segments; this is not a drop-everything emergency absent KEV/EPSS evidence.

Exploit ScenarioDerived

An unauthenticated attacker on the same IPv6 link sends odhcpd a DHCPv6 client request carrying a valid Client Identifier and a final IA_NA or IA_PD option with a zero-length body positioned at offset 8188 of an 8192-byte datagram. odhcpd casts the short option to struct dhcpv6_ia_hdr and reads ia->iaid from bytes 8192-8196 - past the receive buffer and into the stack frame - then reflects those bytes back as the reply IAID, disclosing the saved stack canary (and, via repeated boundary scans, further stack pointers). A maintainer-validated PoC reference in the GHSA advisory demonstrates this leak; attack complexity is low but requires link-local adjacency.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 23, 2026

An out-of-bounds stack read in OpenWrt's odhcpd DHCPv6 server lets an unauthenticated client on the same IPv6 link disclose server stack memory, roughly four bytes per request, by placing a zero-length or otherwise truncated IA_NA/IA_PD option at the very end of the daemon's 8192-byte receive buffer; the disclosed bytes are reflected back to the sender as the IAID in odhcpd's DHCPv6 reply. Every inspected OpenWrt stable release from 17.01.0 through the 25.12.x series pins a vulnerable odhcpd commit, and the impact is confidentiality-only (assessed CVSS:3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N). A validated proof-of-concept reproducer, published alongside the upstream advisory, leaks the saved stack canary on ARM, but there is no CISA KEV listing and each probe returns only about four bytes, so defeating canary and ASLR protections requires many requests.

RemediationAI

Apply the upstream guard and rebuild. The complete fix is the length check introduced in https://github.com/openwrt/odhcpd/commit/719fc3abc0d7e7059871f9f572fb05ada86b8ff2 (with https://github.com/openwrt/odhcpd/commit/f2275efc72a87a95f971f159babcbadc5d241d42 also referenced), so upgrade to an OpenWrt build whose odhcpd PKG_SOURCE_VERSION includes that check; the CVE description identifies 25.12.3 as the patched release, but because the accompanying package metadata still reports 'fixed in: not yet patched' and the advisory states that no fixed release tag had been identified, verify the guard is present in the shipped odhcpd source rather than relying on the version string alone. If upgrading cannot be done immediately, reduce exposure by turning off DHCPv6 server handling on interfaces reachable by untrusted clients (leaving routing or DHCPv4 in place), accepting that downstream clients lose stateful DHCPv6 addressing and IA_PD prefix delegation, and by keeping the DHCPv6 server off shared or untrusted Layer-2 segments so only link-local adjacent hosts that already reach odhcpd can trigger the read; neither measure removes the bug, since the vendor's short-IA guard is the only complete fix. Operators should also expect that repeated boundary probes of roughly 8192-byte DHCPv6 datagrams are what enable the byte-by-byte canary and pointer disclosure, so limiting who can send DHCPv6 client traffic to the daemon is the practical control available until the patched odhcpd is deployed.

Affected VersionsENISA

odhcpd 17.01.0, < 25.12.3

Affected Packages

euvd odhcpd fix: 25.12.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

DHCPv6 encodes each option as a 2-byte code, 2-byte length and a body; an IA_NA or IA_PD option must carry at least 12 body bytes (iaid, t1, t2) before any sub-options, making the on-wire header 16 bytes when the generic 4-byte option header is included (RFC 8415 sections 21.4 and 21.21). odhcpd_receive_packets() reads datagrams into a fixed 8192-byte stack buffer (uint8_t data_buf[8192]) and hands it to handle_client_request() and then dhcpv6_ia_handle_IAs(). The option iterator only proves that the option header plus its declared body fall inside the received datagram, so IA_NA/IA_PD bodies of length 0 to 11 pass validation; the parser nevertheless casts the option header to struct dhcpv6_ia_hdr and dereferences ia->iaid before confirming the IAID field exists. With an option header at data_buf[8188] and olen == 0, odata points exactly at data_buf + 8192 and the 4-byte read crosses into adjacent stack memory (AddressSanitizer reports a read of size 4 at dhcpv6-ia.c:1029, at offset 8704 relative to the data_buf frame). The root cause class is CWE-125 (out-of-bounds read), with the advisory additionally classifying it as CWE-126, CWE-200 and CWE-201 because the fetched bytes are copied into the outgoing struct dhcpv6_ia_hdr and returned in the reply IAID; ARM validation showed data_buf[8192:8196] holding the saved stack canary, and wider high-window scans surfaced pointer candidates useful for ASLR bypass. The upstream fix adds a length guard of the form 'if (olen < sizeof(struct dhcpv6_ia_hdr) - DHCPV6_OPT_HDR_SIZE) continue;'. Triggering it requires odhcpd in DHCPv6 server mode on the target interface, a valid Client Identifier in the request, a short trailing IA option, and delivery of a full 8192-byte UDP datagram, which IPv6 fragmentation can reassemble before recvmsg() without any MTU change.

Know when Odhcpd gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

DHCPv6 is link-local so AV:A (not AV:N); a single crafted packet with no auth gives AC:L/PR:N/UI:N; disclosure of stack canary and pointers is serious confidentiality only, so C:H, I:N, A:N.

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 23, 2026 - 14:02 EUVD
CVE Published
Oct 23, 2026 - 13:20 cve.org
HIGH 8.7

DescriptionCVE.org

odhcpd is the DHCPv6, DHCPv4, and router-advertisement server used by OpenWrt. From version 17.01.0 to before version 25.12.3, odhcpd's DHCPv6 IA parser accepts an IA_NA or IA_PD option whose body is shorter than struct dhcpv6_ia_hdr, casts the option header to that full structure, and reads ia->iaid before proving that the IA body contains the IAID field. If an unauthenticated network-adjacent client places a zero-length or otherwise short IA option at the end of odhcpd's 8192-byte receive stack buffer, the IAID read crosses from data_buf into adjacent stack memory. The disclosed bytes are then reflected in the DHCPv6 reply IAID; prior ARM validation showed data_buf[8192:8196] disclosing the saved stack canary, and wider stack scans can leak ASLR-useful stack/process contents. This issue has been patched in version 25.12.3.

Technical POC Analysis

CWE-125 (out-of-bounds read; the advisory also tags CWE-126, CWE-200, CWE-201).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

OpenWrt's DHCPv6 server component (odhcpd) is affected by a high-severity information disclosure vulnerability (CVE-2026-53920) that allows an unauthenticated attacker on the same IPv6 network segment to leak small portions of server stack memory. This could enable attackers to bypass memory protections and potentially escalate to more severe attacks, affecting all OpenWrt stable releases from 17.01.0 through 25.12.x, which are widely used in networking gear and IoT devices. Leadership should prioritize patching due to the broad deployment base and the potential for follow-on exploitation.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
High
default DHCPv6/DHCPv4/RA server in widely-deployed OpenWrt router firmware
Data Quality
4 sources
Confidence: Medium
EUVD NVD CVE.org Vulnrichment GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Medium
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy