DragonFlyBSD Kernel Audit
DF-2548 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-2548",
  "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 6.5-DEVELOPMENT #0: Thu Jul  2 06:02:54 UTC 2026     root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC  x86_64",
  "code_hash": "8a3f77ee1467ed17ac257a4c1416f1d55ba156308087f896ef27a75ccc64623d",
  "tested_at": "2026-08-08T18:49:29Z",
  "verdict": "REPRODUCED",
  "impact": "leak:102ptrs",
  "confidence": "certain",
  "reproduce": {
    "build": "./build.sh",
    "run": "./run.sh",
    "expected": "On the unpatched kernel: prints ~102 raw kernel pointers (38 .text + 64 heap) and exits 0 (LEAK CONFIRMED). On the fixed kernel: prints 0 pointers and exits 2 (NO LEAK)."
  },
  "kernel_refs": [
    "sys/kern/tty.c:2891",
    "sys/kern/tty.c:2906",
    "sys/kern/tty.c:2911",
    "sys/kern/tty.c:2912",
    "sys/kern/tty.c:2913",
    "sys/kern/tty.c:2914",
    "sys/kern/tty.c:2923",
    "sys/sys/tty.h:73",
    "sys/sys/tty.h:74",
    "sys/sys/tty.h:86",
    "sys/sys/tty.h:87",
    "sys/sys/tty.h:88",
    "sys/sys/tty.h:94",
    "sys/sys/tty.h:96",
    "sys/sys/tty.h:98",
    "sys/sys/tty.h:99",
    "sys/sys/tty.h:100",
    "sys/sys/tty.h:101",
    "sys/sys/thread.h:159",
    "sys/sys/event.h:160"
  ],
  "artifacts": [
    {"path": "poc.c",            "type": "trigger-source", "desc": "sysctl(2) reader; scans kern.ttys blob for kernel-range pointers, splits .text vs heap"},
    {"path": "build.sh",         "type": "build-script",   "desc": "cc -O2 -o poc poc.c"},
    {"path": "run.sh",           "type": "run-script",     "desc": "./poc as unprivileged user"},
    {"path": "README.md",        "type": "readme",         "desc": "human-facing build/run/expected + file index"},
    {"path": "VERDICT.md",       "type": "verdict",        "desc": "full narrative: mechanism, proof, impact, fix, fix-validation before/after"},
    {"path": "build.log",        "type": "build-log",      "desc": "final successful PoC build (cc, exit 0)"},
    {"path": "run.log",          "type": "run-log",        "desc": "decisive baseline run: 102 ptrs leaked (38 .text + 64 heap)"},
    {"path": "run.2.log",        "type": "run-log",        "desc": "variance run 2: 102 ptrs (deterministic)"},
    {"path": "run.3.log",        "type": "run-log",        "desc": "variance run 3: 102 ptrs (deterministic)"},
    {"path": "fix_run.log",      "type": "run-log",        "desc": "patched-kernel (#1) run: 0 ptrs leaked"},
    {"path": "fix_build.log",    "type": "build-log",      "desc": "single-fix kernel build (make -j6 nativekernel, rc=0)"},
    {"path": "fix.diff",         "type": "suggested-fix",  "desc": "git-apply-able: bzero/NULL all kernel-pointer fields of struct tty before SYSCTL_OUT"},
    {"path": "leak_sample.txt",  "type": "leak-sample",    "desc": "raw leaked pointers (3-run determinism) + .text cross-reference vs nm"},
    {"path": "env.txt",          "type": "environment",    "desc": "uname, kern.version, cc version, sysctl OID description"},
    {"path": "ttys.bin",         "type": "leak-sample",    "desc": "raw 3760-byte kern.ttys blob from unpatched baseline"},
    {"path": "manifest.json",    "type": "manifest",       "desc": "this file"}
  ]
}