⬢ DragonFlyBSD Kernel Audit
DF-4132 / panic.txt
← back to finding ↓ download raw
=== DF-4132 crash #1 (first boot, guest dfbsd 6.5-DEVELOPMENT X86_64_GENERIC) ===
Sep 18 03:44:12 dfbsd kernel: vinumioctl: invalid ioctl from process 979 (vinum_tokensmash): 40906468

Fatal trap 1: privileged instruction fault while in kernel mode
cpuid = 0; lapic id = 0
instruction pointer	= 0x8:0xfffff8008db3d4c3
stack pointer	        = 0x10:0xfffff8008db3d4bf
frame pointer	        = 0x10:0xfffff8008db3d4b9
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, long 0, def32 0, gran 1
processor eflags	= interrupt enabled, resume, IOPL = 0
current process		= 992
current thread          = pri 6 
kernel: type 1 trap, code=0

CPU0 stopping CPUs: 0x0000003e
 stopped
Stopped at      -0x7ff724c2b3d: popal

Notes:
 * RIP 0xfffff8008db3d4c3 is NOT in kernel text (kernel+modules are mapped
   at 0xffffffff8xxxxxxx); it is the address of the kmalloc(1024) ioctl
   buffer that sys_ioctl (sys/kern/sys_generic.c:675) allocated for the
   VINUM_CREATE call and that tokenize() filled with our tokens.
 * The faulting instruction decodes as "popal" because 0x61 == 'a' --
   the byte value of every token in the overflowing config line.
   The kernel jumped into the attacker-supplied buffer and executed it:
   the overflow had replaced the saved RIP of the command_fail jmp_buf
   (vinumioctl.c:61, .bss) with a pointer written by tokenize().
 * crash #2 (fresh boot, same binary): identical signature,
   RIP 0xfffff8008eddb8c3, process 908 (vinum_tokensmash).