DragonFlyBSD Kernel Audit
DF-0865 / run.log
← back to finding ↓ download raw
=== DF-0865 BASELINE RUN (unpatched #0 kernel, original hpfs.ko) ===
$ cd poc/DF-0865 && ./poc /mnt/hpfs   (run as unpriv user maxx)
[*] DF-0865: stat(/mnt/hpfs) -> VOP_GETATTR -> hpfs_validateparent dep-walk
[*] crafted dir block dep0 de_reclen=0x0900 -> dep walks 276 B past 2 KB bread buffer
[*] if the kernel panics here, the guest goes down; check boot.log for the panic signature
(SSH HUNG — guest crashed; timeout killed the ssh session)

--- vm.sh status ---
down

--- boot.log panic (full block, lines 220-237) ---
Fatal trap 12: page fault while in kernel mode
cpuid = 2; lapic id = 2
fault virtual address    = 0xfffff80057f97116
fault code               = supervisor read data, page not present
instruction pointer      = 0x8:0xffffffff826032f6
stack pointer            = 0x10:0xfffff801184e35c8
frame pointer            = 0x10:0xfffff801184e3618
code segment             = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags         = interrupt enabled, resume, IOPL = 0
current process          = 963
current thread           = pri 6
kernel: type 12 trap, code=0

CPU2 stopping CPUs: 0x0000003b
 stopped
Stopped at      hpfs_validateparent+0x146:      movzwl  0x2(%r15),%edx
db>

ANALYSIS: stat() -> hpfs_getattr -> hpfs_validateparent walks root's dir block;
dep advances by de_reclen=0x0900 past the 2 KB bread buffer; the post-loop /
next-iteration read of dep->de_flag (movzwl 0x2(%r15)) faults on the unmapped
OOB page. Deterministic crash in DF-0865's exact cited function.