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)
PoC verification
Evidence pack
findings/poc/DF-0550 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| manifest.json | file | 398 B | view raw |
Fix verification
not_testablebaseline 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
No comments yet.