โฌข DragonFlyBSD Kernel Audit
DF-5450 / run.log
โ† back to finding โ†“ download raw
DF-5450 run.log โ€” baseline (unpatched kernel), post-reset boot, single kldload
Guest: DragonFly 6.5-DEVELOPMENT #0 X86_64_GENERIC (INVARIANTS), QEMU/KVM
Command: kldload /root/poc/nxmap/nxmap.ko; dmesg | grep -E "nxmap|DF-5450"

nxmap0: <nexus activate idempotence PoC> on motherboard
DF-5450: err2ndact=0 vaddr1=0xffffffff82601000 vaddr2=0xffffffff82602000 same_phys=YES
DF-5450: err2ndact=0 vaddr1=0xffffffff82601000 vaddr2=0xffffffff82611000 same_phys=YES
DF-5450: kernel_map size before=3669962752 after2nd=3670028288 afterrelease=3670028288 (leaked pages: 16)
DF-5450: orphan vaddr1 read after full release: 0 (stale RW PTE still present: YES)

Reading of the output:
- line 2: cycle 0 โ€” second bus_activate_resource() returned 0 (rman idempotence)
  and produced a SECOND kernel mapping (vaddr2) for the same physical page
  (same_phys=YES: both map 0xE0000000).
- line 3: final summary โ€” after 16 alloc/activate/release cycles the last
  vaddr2 is exactly 0x10000 (16 pages) above the first vaddr1: each cycle
  strands exactly one page.
- line 4: kernel_map->size: +65536 bytes after all resources were fully
  released = 16 pages permanently leaked from kernel_map.
- line 5: after bus_release_resource() of every resource, the FIRST mapping
  (vaddr1=0xffffffff82601000) is still dereferenceable โ€” a stale RW PTE
  mapping physical MMIO 0xE0000000 remains in kernel_pmap forever.

run.2.log records the first (pre-reset) single-shot run with identical
vaddr1 != vaddr2 / +1-page / stale-PTE results.