DF-1020 / run.log
DF-1020: fw_bus_explore_callback OOB csrrom write
CSRROMOFF: 0x400
CSRROMSIZE: 0x400
csrrom[]: 256 entries (u_int32_t)
ongoaddr: 16-bit bitfield (firewirereg.h:109)
Normal exploration (first 4 entries):
csrrom[0] at ongoaddr=0x400 โ OK
csrrom[1] at ongoaddr=0x404 โ OK
csrrom[2] at ongoaddr=0x408 โ OK
csrrom[3] at ongoaddr=0x40C โ OK
Malicious device sends key=0x81 (CROM_UDIR), val=0x3FFF:
csrreg->val = 0x3FFF (24-bit, device-controlled)
ongoaddr += val*4 = 0x410 + 0xFFFC = 0x1040C
After 16-bit truncation: ongoaddr = 0x40C
Bounds check at :1558 is AFTER the write at :1500 โ too late.
No authentication needed: malicious FireWire device on the bus.