DragonFlyBSD Kernel Audit
DF-1529 / run.log
← back to finding ↓ download raw
nDisk=3
Members[0] = 0xffdfd740 (validated by caller)
Members[1] = 0x41414141 (NOT validated)
Members[2] = 0x42424242 (NOT validated)
Per-member validation: DISABLED (commented-out block at line 573-585)
Caller validation: passes Members[0] only

Walking the buggy loop at gui_lib.c:644-654:
  i=0: pMember[i] = 0x7fffffdfd740  (== &legit, safe)
  i=1: pMember[i] = 0x7fff41414141  -> UNCHECKED DEREF of attacker-controlled address
  i=2: pMember[i] = 0x7fff42424242  -> UNCHECKED DEREF of attacker-controlled address

CONFIRMED: hpt_create_array_v2 derefs Members[1..2] without validation. Each deref is to a user-chosen 32-bit-offset kernel address; writes of pParent (kernel ptr), bSerialNumber (u8), and pfnDeviceFailed (kernel function pointer) follow. Trigger: root write hw.hptmv.status sysctl with HPT_IOCTL_CREATE_ARRAY[_V2] Members[1]=0x41414141.
RUN_EXIT=0