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

Ring-size computation uses 32-bit multiply without overflow check: latent heap overflow

Summary

len=sizeof(netmap_ring)+ndesc*sizeof(netmap_slot)(:927-930,:955-958) computed in u_int(32-bit). ndesc from kring->nkr_num_slots(uint32). ndesc>~2^29 wraps multiply -> small value -> netmap_ring_malloc succeeds small object -> netmap_new_bufs writes ndesc slots past end -> heap overflow. Current callers bound ndesc well below. Defense-in-depth. Fix: size_t len + overflow check.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-0550 Β· 1 files
FileTypeDescriptionSize
manifest.json file 398 B view raw

Fix verification

not_testable
baseline reproduced→ patch + rebuild →patched clean

recommended fix identified; fix.diff not authored/validated in this batch

recommended fix identified; fix.diff not authored/validated in this batch
combined build rc=0

Confirmed kernel references

β€”

Detail

Exploit chain

none (Info severity)

Evidence (decisive lines)

Source-confirmed at sys/net/netmap/netmap_mem2.c:927: ring-size computation uses 32-bit multiply without overflow check

Verified recommended fix

Source-confirmed at sys/net/netmap/netmap_mem2.c:927: ring-size computation uses 32-bit multiply without overflow check

Verdict

Source-confirmed at sys/net/netmap/netmap_mem2.c:927: ring-size computation uses 32-bit multiply without overflow check