DragonFlyBSD Kernel Audit
DF-2753 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-2753",
  "title": "fork1() publishes SIDL child to pid hash before p_pgrp/p_ucred init; pfind()/allproc_scan() don't filter SIDL -> unprivileged NULL-deref kernel panic (kill(-1), sched_*(pid), getsid(pid), ptrace/sysctl)",
  "verdict": "reproduced",
  "impact": "panic",
  "confidence": "certain",
  "reproduce": {
    "build": "cc -O2 -Wall -pthread -o sidl_race sidl_race.c",
    "run": "./sidl_race 60 4   # unprivileged; 1 fork thread + 4 kill(-1, SIGWINCH) threads",
    "expected": "Fatal trap 12: page fault while in kernel mode, fault VA 0xa0, Stopped at p_trespass+0x3f: movl 0xa0(%r12),%eax ; ssh dies, guest at db>"
  },
  "kernel_refs": [
    "sys/kern/kern_fork.c:491",
    "sys/kern/kern_fork.c:496",
    "sys/kern/kern_fork.c:509",
    "sys/kern/kern_proc.c:502",
    "sys/kern/kern_proc.c:1401",
    "sys/kern/kern_sig.c:711",
    "sys/kern/kern_sig.c:721",
    "sys/kern/kern_prot.c:1023",
    "sys/kern/kern_prot.c:1038",
    "sys/kern/kern_p1003_1b.c:73",
    "sys/kern/kern_p1003_1b.c:151",
    "sys/kern/kern_prot.c:153",
    "sys/kern/sys_process.c:153",
    "sys/kern/kern_proc.c:1687",
    "sys/sys/proc.h:344",
    "sys/sys/proc.h:462"
  ],
  "artifacts": [
    "sidl_race.c", "build.sh", "run.sh", "build.log", "run.log",
    "panic.txt", "panic_full.log", "env.txt", "fix.diff",
    "fix_build.log", "fix_run.log", "VERDICT.md", "manifest.json", "verdict.json"
  ]
}