DF-2845 / manifest.json
{ "finding_id": "DF-2845", "verdict": "reproduced", "impact": "panic", "summary": "Unvalidated sbuf drain-callback return: silent unbounded heap overflow on production kernels; KASSERT panic on INVARIANTS kernels; blocked by one-line runtime check (fix validated).", "reproduce": { "build": "in-guest: cp df2845_test.c /usr/src/sys/kern/ + sys/conf/files entry + custom kernel config (INVARIANTS commented out) + make nativekernel KERNCONF=DF2845_NOINV -j6", "run": "boot custom kernel; sysctl debug.df2845_trigger=1", "expected": "unpatched/no-INVARIANTS: 'OVERFLOW CONFIRMED: 224 byte(s) written past the 32-byte heap allocation' with rc=0 s_error=0; unpatched/INVARIANTS: panic 'Bad drain amount 0 for sbuf'; patched: 'BLOCKED', rc=-1, s_error=88" }, "kernel_refs": [ "sys/kern/subr_sbuf.c:331", "sys/kern/subr_sbuf.c:336", "sys/kern/subr_sbuf.c:338", "sys/kern/subr_sbuf.c:349", "sys/kern/subr_sbuf.c:367", "sys/kern/subr_sbuf.c:379", "sys/kern/kern_sysctl.c:1616", "sys/sys/sbuf.h:81" ], "artifacts": [ "df2845_test.c", "baddrain.c", "Makefile", "build.sh", "run.sh", "build.log", "run.log", "run.2.log", "panic.txt", "env.txt", "fix.diff", "verdict.json", "manifest.json" ] } |