DragonFlyBSD Kernel Audit
DF-0818 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-0818",
  "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": "b9a306d0f9e7f73e4c245b4cc038294a3be6c13dd327ab55b89b5a9764a94a47",
  "tested_at": "2026-07-22T18:10:00Z",
  "verdict": "NOT REPRODUCED",
  "impact": "none",
  "confidence": "certain",
  "reproduce": {
    "build": "./build.sh",
    "run": "./run.sh",
    "expected": "no effect on this guest (not reproduced); exits cleanly. See VERDICT.md."
  },
  "kernel_refs": [
    "sys/vfs/hammer2/hammer2_bulkfree.c:727",
    "sys/vfs/hammer2/hammer2_bulkfree.c:593",
    "sys/vfs/hammer2/hammer2_ondisk.c:292",
    "sys/vfs/hammer2/hammer2_ondisk.c:352",
    "sys/vfs/hammer2/hammer2_ondisk.c:684",
    "sys/vfs/hammer2/hammer2_vfsops.c:1229",
    "sys/vfs/hammer2/hammer2_vfsops.c:1232",
    "sys/vfs/hammer2/hammer2_ioctl.c:144",
    "sys/vfs/hammer2/hammer2_ioctl.c:83",
    "sys/vfs/hammer2/hammer2_disk.h:261"
  ],
  "artifacts": [
    {
      "path": "poc.c",
      "type": "trigger-source",
      "desc": "Unprivileged HAMMER2IOC_BULKFREE_SCAN ioctl exerciser; proves the unprivileged path is reachable but does not panic for any mountable image."
    },
    {
      "path": "craft_zero.py",
      "type": "trigger-source",
      "desc": "Forges a CRC-valid HAMMER2 image with volu_size=0 (or any value) to demonstrate the upstream rejection at hammer2_ondisk.c:292."
    },
    {
      "path": "build.sh",
      "type": "build-script",
      "desc": "cc -o poc poc.c -I/usr/src/sys"
    },
    {
      "path": "run.sh",
      "type": "run-script",
      "desc": "./poc /mnt/h2/trigger as the unprivileged maxx user"
    },
    {
      "path": "fix.diff",
      "type": "suggested-fix",
      "desc": "Defense-in-depth zero-guard at hammer2_bulkfree.c:727 (supersedes finding proposal, same shape with comment)."
    },
    {
      "path": "VERDICT.md",
      "type": "verdict",
      "desc": "Full narrative with line-by-line source trace."
    },
    {
      "path": "README.md",
      "type": "readme",
      "desc": "Folder overview and reproduce instructions."
    },
    {
      "path": "build.log",
      "type": "build-log",
      "desc": "Final cc build output as maxx."
    },
    {
      "path": "run.log",
      "type": "run-log",
      "desc": "Baseline PoC run on unpatched 6.5-DEVELOPMENT #0; rc=0, sstop=134217728, no panic."
    },
    {
      "path": "run_patched.log",
      "type": "run-log",
      "desc": "PoC run on patched #1 kernel; identical behavior (fix is a no-op for valid sizes)."
    },
    {
      "path": "mount_reject.log",
      "type": "dmesg",
      "desc": "Demonstrates volu_size=0 image is rejected at hammer2_ondisk.c:292 ('has size of 0')."
    },
    {
      "path": "fix_build.log",
      "type": "build-log",
      "desc": "Full untrimmed patched-kernel nativekernel build log (NK_DONE rc=0)."
    },
    {
      "path": "incidental_panic.txt",
      "type": "panic-signature",
      "desc": "UNRELATED panic (sysref assertion in devfs teardown) hit while unmounting an invalid HAMMER2 image -- NOT DF-0818."
    },
    {
      "path": "env.txt",
      "type": "environment",
      "desc": "uname, cc version, sysctls."
    },
    {
      "path": "manifest.json",
      "type": "manifest",
      "desc": "This file."
    },
    {
      "path": "fix_apply.log",
      "type": "apply-log",
      "desc": "patch --dry-run output proving fix.diff applies cleanly on with-src"
    },
    {
      "path": "../fix_build_combined.log",
      "type": "build-log",
      "desc": "Combined 41-finding kernel build (rc=0, -Werror clean)"
    },
    {
      "path": "../fix_build_summary.txt",
      "type": "build-summary",
      "desc": "Summary of the combined 41-finding kernel build"
    }
  ]
}