DF-0044 / manifest.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | { "finding_id": "DF-0044", "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 (race too tight) -- code-level bug CONFIRMED", "impact": "none (on this kernel); theoretical panic/info-leak if the race is won", "confidence": "certain (code-level); likely (race too tight to demonstrate)", "reproduce": { "build": "./build.sh", "run": "./run.sh 60", "expected": "no effect on this guest (not reproduced); exits cleanly. See VERDICT.md." }, "kernel_refs": [ "sys/kern/vfs_mount.c:1235", "sys/kern/vfs_mount.c:1240", "sys/kern/vfs_mount.c:1245", "sys/kern/vfs_mount.c:1247", "sys/kern/vfs_mount.c:413", "sys/kern/vfs_mount.c:418", "sys/kern/vfs_mount.c:420", "sys/kern/vfs_mount.c:421", "sys/kern/vfs_mount.c:756", "sys/kern/vfs_mount.c:784", "sys/kern/vfs_mount.c:393", "sys/kern/vfs_mount.c:399", "sys/kern/vfs_mount.c:401", "sys/kern/vfs_mount.c:403", "sys/kern/vfs_cache.c:5213", "sys/kern/vfs_cache.c:5214", "sys/kern/vfs_cache.c:5224", "sys/kern/vfs_cache.c:5227", "sys/kern/vfs_cache.c:5228", "sys/kern/vfs_syscalls.c:1040", "sys/kern/vfs_syscalls.c:1066", "sys/kern/vfs_syscalls.c:1069", "sys/kern/vfs_syscalls.c:1108", "sys/kern/vfs_syscalls.c:1110", "sys/kern/vfs_syscalls.c:1117", "sys/kern/vfs_syscalls.c:931", "sys/kern/vfs_syscalls.c:946", "sys/kern/vfs_syscalls.c:988", "sys/kern/vfs_nlookup.c:1056", "sys/vfs/procfs/procfs_map.c:181" ], "artifacts": [ { "path": "mount_uaf.c", "type": "trigger-source", "desc": "unprivileged PoC: cycler threads mount+unmount a tmpfs the binary sits inside, while reader threads read /proc/self/map (driving vn_fullpath guess=1 -> cache_fullpath -> mount_get_by_nc -> deref of new_mp->mnt_ncmounton)" }, { "path": "mount_uaf_root.c", "type": "trigger-source", "desc": "root-only variant using MNT_FORCE for a faster free-side cycle (defeated by allproc_scan SIGKILL of the test process itself)" }, { "path": "build.sh", "type": "build-script", "desc": "cc -pthread -O2 -o mount_uaf mount_uaf.c (and the root variant)" }, { "path": "run.sh", "type": "run-script", "desc": "sets up the cycled mount, hosts the binary inside, runs the unprivileged variant" }, { "path": "build.log", "type": "build-log", "desc": "final successful build of both variants on the guest" }, { "path": "run.log", "type": "run-log", "desc": "decisive 60s unprivileged run: 288137 deref iters, 2 successful free cycles, no panic, guest stayed up" }, { "path": "panic.txt", "type": "panic-signature", "desc": "grep -iE 'fatal trap|panic:|Stopped at|db> ' dfbsd-qemu/boot.log -> EMPTY. Includes the kernel's own race-detection messages as evidence the race was exercised." }, { "path": "env.txt", "type": "environment", "desc": "uname, cc version, vfs.usermount, kernel config (X86_64_GENERIC, non-INVARIANTS)" }, { "path": "fix.diff", "type": "suggested-fix", "desc": "git-apply-able unified diff: add mount_hold(mp) in mount_get_by_nc (matching vfs_getvfs) + matching mount_drop in the cache_fullpath caller" }, { "path": "VERDICT.md", "type": "verdict", "desc": "full narrative: code-level proof, why the race is too tight on this kernel, classification" }, { "path": "README.md", "type": "readme", "desc": "PoC overview, build/run instructions, expected output" }, { "path": "manifest.json", "type": "manifest", "desc": "this catalog" }, { "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" } ] } |