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

am7990_start_locked feeds unbounded mbuf chains into lance_put, memcpy'ing into the fixed LEBLEN(1522)-byte TX slot with no clamp (dead-code twin of DF-4746)

Summary

No pkthdr.len bound between dequeue and lance_put's unbounded chain copy; tmd2=-len arms a two's-complement length wider than the buffer. Dead code (no caller) + root-only >LEBLEN injection vector (BPF) = defense-in-depth. Clamp-at-dequeue fix (fixes both twins).

Discussion (0)

No comments yet.

PoC verification

Evidence pack

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

Fix verification

not_testable
per-fix-DF-4776

Confirmed kernel references

Detail

Exploit chain

n/a (dead code + root-only vector)

Evidence (decisive lines)

findings/poc/DF-4776/ (this verdict)

Verdict

Source-certain dead-code twin of DF-4746: am7990_start_locked calls lance_put with no LEBLEN clamp (lance.c:309-325 unbounded chain memcpy) and tmd.tmd2=-len arms a two's-complement length. Dead code (no am7990_config caller); even live, the overrun stays within/past the dedicated bus_dmamem shared region and the only >LEBLEN injection vector is root-only BPF write. Defense-in-depth pkthdr.len guard fix.