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

dc_setfilt_21143/dc_setfilt_xircom enqueue the setup frame with no TX-ring-space check: descriptor clobber of an in-flight frame, leaked mbuf, and tx_cnt overrun when invoked on a saturated ring

Summary

Both setup-frame builders blindly take the next TX slot with no check that the chain slot is free or that tx_cnt < ring size - unlike dc_encap, which refuses to pack when the 5-slot reserve is insufficient, and dc_start, which stops at a non-NULL chain slot. dc_setfilt runs on live interfaces from unprivileged-triggerable ioctls (SIOCADDMULTI/SIOCDELMULTI via multicast socket options, SIOCSIFFLAGS promisc toggles) and from dc_txeof's PNIC retry. Repeated setfilt calls on a ring kept full by concurrent TX saturate the reserve: once tx_cnt reaches the ring size, tx_prod wraps onto a still-pending (OWN) descriptor, the setup frame overwrites it, and the chain-store drops the pending frame's mbuf pointer (leak), while tx_cnt exceeds the ring size. Mbuf leak per event (repeatable exhaustion), corrupted in-flight descriptor (transmit wedge), broken ring accounting. No demonstrated write outside fixed structures. Guard fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-3851 Β· 1 files
FileTypeDescriptionSize
verdict.json file 353 B view raw

Confirmed kernel references

β€”

Detail

Evidence (decisive lines)

β€”

Verdict

Hardware-gated (no bwn/dc NIC on the audit guest); source-certain. PoC skipped per contract (Low).