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

TAG_OVERLOAD consumed without length validation β€” zero-length overload option at the end of an options region reads one byte past the region and adopts an arbitrary overload value

Field Value
ID DF-3046
Status new
Severity Info
CVSS 3.1 CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:N
CWE CWE-125 / CWE-20
File sys/vfs/nfs/bootp_subr.c
Lines 1283, 1299-1300, 1323-1332
Area vfs/nfs (netboot)
Confidence certain
Discovered 2026-09-02
Pass 2 (GLM 5.3 second pass)
Bucket base:vfs
Reported pending
Known CVE none
CVE match novel

Summary

In bootpc_tag_helper the overload option's value is taken as tctx->overload = *j with no check that its length byte is 1. Two consequences: (1) a TAG_OVERLOAD with len != 1 sets the overload flag from the first value byte regardless (RFC 2131 requires len==1); (2) with len == 0 positioned so its length byte is the final byte of the region, the guard admits it and *j reads one byte past the end of the parsed region (for the vend walk the first byte past struct bootp_packet's last member β€” still inside the parent kmalloc'd ifctx allocation; for the file/sname walks it lands on adjacent in-struct fields). The read value only steers which additional bounded areas get re-walked β€” no leak, no corruption, no crash demonstrated. Same netboot threat model as DF-0802. Fix: require len == 1 for TAG_OVERLOAD (row diff).

Timeline

  • 2026-09-02 Discovered during pass-2 audit of bootp_subr.c (GLM 5.3).

Discussion (0)

No comments yet.