DF-0859 / 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 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | { "finding_id": "DF-0859", "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": "corruption", "confidence": "certain", "reproduce": { "build": "./build.sh", "run": "./run.sh", "expected": "bug manifests; see run.log / VERDICT.md. On a fixed kernel: no effect." }, "kernel_refs": [ "sys/vfs/hpfs/hpfs_alsubr.c:225", "sys/vfs/hpfs/hpfs_alsubr.c:229", "sys/vfs/hpfs/hpfs_alsubr.c:271", "sys/vfs/hpfs/hpfs_alsubr.c:314", "sys/vfs/hpfs/hpfs_alsubr.c:178", "sys/vfs/hpfs/hpfs_alsubr.c:346", "sys/vfs/hpfs/hpfs_alsubr.c:468", "sys/vfs/hpfs/hpfs_alsubr.c:479", "sys/vfs/hpfs/hpfs_alsubr.c:511", "sys/vfs/hpfs/hpfs_alsubr.c:382", "sys/vfs/hpfs/hpfs_vfsops.c:535", "sys/vfs/hpfs/hpfs.h:172", "sys/vfs/hpfs/hpfs.h:200", "sys/vfs/hpfs/hpfs.h:262", "sys/vfs/hpfs/hpfs.h:267" ], "artifacts": [ { "path": "README.md", "type": "readme", "desc": "finding summary, build/run, expected vs fixed behaviour" }, { "path": "VERDICT.md", "type": "verdict", "desc": "full narrative: mechanism (3 bcopys traced), trigger, why-no-panic, Phase-6 impact ceiling, fix validation" }, { "path": "harness.c", "type": "trigger-source", "desc": "deterministic OOB-WRITE proof: faithful bcopy transcription of all 3 helpers + poisoned allocator + fixed-mode control" }, { "path": "craft_img.py", "type": "trigger-source", "desc": "HPFS image crafter: forged fnode fn_ab with busycnt=255/freecnt=0/fn_size=0x10000" }, { "path": "df859.img", "type": "trigger-source", "desc": "crafted 64 KB HPFS image with forged fn_ab (binary, for live mount test)" }, { "path": "mount_rw.c", "type": "trigger-source", "desc": "30-line mount(2) helper to mount HPFS RW (works around mount_hpfs(8) forcing MNT_RDONLY)" }, { "path": "build.sh", "type": "build-script", "desc": "exact cc command to build the harness" }, { "path": "run.sh", "type": "run-script", "desc": "exact harness invocation" }, { "path": "build.log", "type": "build-log", "desc": "full compiler output of the final successful harness build" }, { "path": "run.log", "type": "run-log", "desc": "decisive harness run (full output) showing OOB extents + fix rejection" }, { "path": "run.1.log", "type": "run-log", "desc": "stress-test run 1 of 3 (deterministic)" }, { "path": "run.2.log", "type": "run-log", "desc": "stress-test run 2 of 3" }, { "path": "run.3.log", "type": "run-log", "desc": "stress-test run 3 of 3" }, { "path": "dmesg.txt", "type": "dmesg", "desc": "live guest dmesg on UNPATCHED module: hpfs_addextentr: INTERNAL INCONSISTENCE chain proving hpfs_alblk2alsec ran" }, { "path": "panic.txt", "type": "panic-signature", "desc": "boot.log tail (no fatal trap \u2014 OOB write is silent on this run; see VERDICT.md 'Why no panic')" }, { "path": "env.txt", "type": "environment", "desc": "uname, cc version, sysctls (vm.randomize_mmap=0, vfs.usermount=0)" }, { "path": "fix.diff", "type": "suggested-fix", "desc": "git-apply-able fix: validate ab_busycnt against container max (HPFS_FN_MAX_LEAF=8/NODE=12, AS_MAX_LEAF=40/NODE=60) in splitalsec/concatalsec/alblk2alsec before the bcopys" }, { "path": "fix_build.log", "type": "build-log", "desc": "full build output of the single-fix hpfs.ko module (Phase 8)" }, { "path": "fix_run.log", "type": "run-log", "desc": "patched-module re-run of dd writes: 'forged ab_busycnt 255 > fnode max' on every attempt, INTERNAL INCONSISTENCE chain disappears" }, { "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" } ] } |