DF-3216 / manifest.json
{ "finding_id": "DF-3216", "verdict": "reproduced", "impact": "panic", "confidence": "certain", "reproduce": { "build": "host: python3 craft.py <dir> (imgA64.img bsize=4096, imgB8.img bsize=1024, dev64.img); scp images + trigger.c/vntool.c/build.sh/run.sh to guest:/root; guest: sh /root/build.sh", "run": "guest as root: sh /root/run.sh (panic variant: skip the decoy block in craft.py or simply ls the mount after reload)", "expected": "stock kernel: 'panic: ext2_dirbad: /mnt/e2: bad dir ino 2 at offset 0: mangled entry' on the first post-reload lookup. With decoy image + instrumented module: post-reload reads return zero content, and the write phase logs 'DF3216[WRITE-OOB]: bap[997] <- 1351 at b_data+3988 (buffer size 1024)' style 4-byte OOB heap writes; post-run image forensics show the victim file's indirect block with 0/256 entries and orphaned 0xAA blocks. With fix.diff: correct markers, no OOB prints, consistent on-disk mapping." }, "kernel_refs": [ "sys/vfs/ext2fs/ext2_bmap.c:126", "sys/vfs/ext2fs/ext2_bmap.c:255", "sys/vfs/ext2fs/ext2_bmap.c:354", "sys/vfs/ext2fs/ext2_balloc.c:267", "sys/vfs/ext2fs/ext2_vfsops.c:821", "sys/vfs/ext2fs/ext2_vfsops.c:991" ], "artifacts": [ "README.md", "VERDICT.md", "craft.py", "trigger.c", "vntool.c", "build.sh", "run.sh", "build.log", "run.log", "run.2.log", "fix_run.log", "panic.txt", "env.txt", "instrument.diff", "fix.diff", "verdict.json", "manifest.json" ] } |