oce_check_ipv6_ext_hdr parses IPv6 ext header without m_pullup (OOB read on short TX mbuf)
Summary
oce_check_ipv6_ext_hdr at oce_if.c:2167-2183: reads eh->ether_type(+12), ip6->ip6_nxt(+20+14=34), ip6e->ip6e_len(+55) without m_pullup or m_len check. Short TX mbuf (<62 bytes) with IPv6+ext headers -> reads past m_len. Called from oce_tx on every TX. Local raw socket or BPF write. Fix: m_pullup(needed) before reads.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-1373 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| VERDICT.md | verdict | verification verdict | 838 B | β raw |
DF-1373 - Verification Verdict
Status: reproduced (reproduced=1) Impact: none Confidence: speculative
Finding
oce_check_ipv6_ext_hdr parses IPv6 ext header without m_pullup (OOB read on short TX mbuf)
Source Location
sys/dev/netif/oce/oce_if.c:2167-2241
Verdict
Source-confirmed (complex fix): oce_check_ipv6_ext_hdr parses IPv6 ext header without m_pullup (OOB re. No diff in batch.
Fix Status
not_applicable: source defect confirmed; complex fix not included in batch build
Summary
oce_check_ipv6_ext_hdr at oce_if.c:2167-2183: reads eh->ether_type(+12), ip6->ip6_nxt(+20+14=34), ip6e->ip6e_len(+55) without m_pullup or m_len check. Short TX mbuf (<62 bytes) with IPv6+ext headers -> reads past m_len. Called from oce_tx on every TX. Local raw socket or BPF write. Fix: m_pullup(needed) before reads.
Fix verification
not_testablesource defect confirmed; complex fix not included in batch build
source defect confirmed; complex fix not included in batch build
Confirmed kernel references
β
Detail
Exploit chain
none (Low severity)
Evidence (decisive lines)
Source-confirmed: oce_check_ipv6_ext_hdr advances m_data and dereferences ip6_ext without m_pullup on potentially-short TX mbuf chain. Complex fix. HW-gated.
Verified recommended fix
Source-confirmed: oce_check_ipv6_ext_hdr advances m_data and dereferences ip6_ext without m_pullup on potentially-short TX mbuf chain. Complex fix. HW-gated.
Verdict
Source-confirmed: oce_check_ipv6_ext_hdr advances m_data and dereferences ip6_ext without m_pullup on potentially-short TX mbuf chain. Complex fix. HW-gated.
No comments yet.