DragonFlyBSD Kernel Audit
DF-0933 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-0933",
  "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": "REPRODUCED",
  "impact": "leak:4088",
  "confidence": "certain",
  "reproduce": {
    "build": "./build.sh  (python3 craft_img.py ntfs_evil.img; harness compiled in guest by run.sh)",
    "run": "./run.sh  (harness + mount -t ntfs -o ro,-u=1001,-g=1001 /dev/vn0 /mnt/evil; cat /mnt/evil/F as maxx)",
    "expected": "kernel memory/pointer leak; see leak_sample.txt / run.log."
  },
  "kernel_refs": [
    "sys/vfs/ntfs/ntfs_compr.c:65",
    "sys/vfs/ntfs/ntfs_compr.c:68",
    "sys/vfs/ntfs/ntfs_compr.c:70",
    "sys/vfs/ntfs/ntfs_compr.c:92",
    "sys/vfs/ntfs/ntfs_subr.c:1687",
    "sys/vfs/ntfs/ntfs_subr.c:1722"
  ],
  "artifacts": [
    {
      "path": "harness.c",
      "type": "trigger-source",
      "desc": "deterministic line-for-line transcription of ntfs_uncompblock; poisoned-buffer proof the compressed branch never zeroes buf[pos..4095]"
    },
    {
      "path": "craft_img.py",
      "type": "trigger-source",
      "desc": "builds a mountable NTFS image whose compressed file F starts with the 3-byte DF-0933 trigger (01 80 00)"
    },
    {
      "path": "build.sh",
      "type": "build-script",
      "desc": "crafts the NTFS image on the host"
    },
    {
      "path": "run.sh",
      "type": "run-script",
      "desc": "harness + mount + read sequence (root mounts, maxx reads)"
    },
    {
      "path": "fix.diff",
      "type": "suggested-fix",
      "desc": "git-apply-able: bzero(buf+pos, NTFS_COMPBLOCK_SIZE-pos) before compressed-branch return"
    },
    {
      "path": "build.log",
      "type": "build-log",
      "desc": "harness compile output (cc -O2), BUILD_EXIT=0"
    },
    {
      "path": "run.log",
      "type": "run-log",
      "desc": "decisive run: harness LEAK CONFIRMED + live 1358 nonzero bytes with kvaddr pointers, root+maxx identical"
    },
    {
      "path": "leak_sample.txt",
      "type": "leak-sample",
      "desc": "full 4096-byte live leak as maxx; 177 kvaddr-shaped qwords (high32==0x0008)"
    },
    {
      "path": "env.txt",
      "type": "environment",
      "desc": "uname, cc version, vfs.usermount"
    },
    {
      "path": "fix_baseline.log",
      "type": "fix-baseline",
      "desc": "#0 unpatched: 1358 nonzero bytes incl 0x0008006934c0"
    },
    {
      "path": "fix_build.log",
      "type": "fix-build-log",
      "desc": "make -j6 nativekernel full output, NK_DONE rc=0"
    },
    {
      "path": "fix_run.log",
      "type": "fix-run-log",
      "desc": "#1 patched: 0 nonzero bytes across 3 reads"
    },
    {
      "path": "VERDICT.md",
      "type": "verdict",
      "desc": "full narrative: mechanism, evidence, fix validation"
    },
    {
      "path": "manifest.json",
      "type": "manifest",
      "desc": "this catalog"
    },
    {
      "path": "README.md",
      "type": "readme",
      "desc": "human reproduce doc"
    },
    {
      "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"
    }
  ]
}