β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
DF-1373

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)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-1373 Β· 1 files
FileTypeDescriptionSize
VERDICT.md verdict verification verdict 838 B ↓ raw
VERDICT.md verdict verification verdict
↓ download 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_testable
baseline reproduced→ patch + rebuild →patched clean

source defect confirmed; complex fix not included in batch build

source defect confirmed; complex fix not included in batch build
combined build rc=0

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.