DragonFlyBSD Kernel Audit
DF-0878 / run.log
← back to finding ↓ download raw
=== DF-0878 harness: cd9660_rrip_loop + NM handler OOB read ===
record region:   [0x8004948c0, 0x8004948d0)  (16 bytes valid)
NM h.length:     255  (claimed)
NM handler wlen: 250  (h.length - 5)
valid name bytes in record: 3 ('foo')
adjacent-heap poison byte: 0x5a
--
[loop] dispatched NM handler: copied 250 bytes; 239 bytes read PAST pend (OOB)
--
OUTPUT (filename) bytes copied into outbuf:
  666f6f00000000000000005a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a...
  ascii: foo........ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ...
--
RESULT: 239 bytes read PAST the directory-record boundary (pend)
        239 of those leaked bytes carry the heap sentinel 0x5a (kernel heap info disclosure)
        Only 3 bytes ('foo') were legitimately inside the record.
BUG CONFIRMED: cd9660_rrip_loop dispatches the NM handler at
        cd9660_rrip.c:515 with NO check that phead+h.length<=pend;
        the plausibility check at :530 is lower-bound only.
HARNESS_RUN_EXIT=0