DF-5779 / manifest.json
{ "finding_id": "DF-5779", "title": "seq_puts() shim passes its data string as the ksnprintf format (kernel format-string trap; %n write conv live)", "verdict": "reproduced", "impact": "panic", "confidence": "certain", "reproduce": { "build": "in-guest: cd /tmp/rig && make SYSDIR=/usr/src/sys WERROR=\"\" (bsd.kmod.mk); host wrapper ./build.sh", "run": "kldload /tmp/rig/seqputs_rig.ko (A+B, dmesg); kldload /tmp/rig/seqputs_rigc.ko (panic); fix: kldload seqputs_rigfix.ko", "expected": "A: '%n wrote 2'; B: 'link=0' (interpreted vararg slot); C: Fatal trap 12 at strlen, guest down; fixed: all inputs verbatim, guest alive" }, "kernel_refs": [ "sys/dev/drm/include/linux/seq_file.h:44", "sys/dev/drm/linux_printf.c:32", "sys/dev/drm/drm_print.c:128", "sys/dev/drm/drm_print.c:163", "sys/dev/drm/include/drm/drm_print.h:184", "sys/kern/subr_prf.c:688", "sys/kern/subr_prf.c:750", "sys/dev/drm/drm_internal.h:139" ], "artifacts": [ "seqputs_rig.c", "seqputs_rigc.c", "seqputs_rigfix.c", "build.sh", "run.sh", "build.log", "run.log", "run_c.log", "fix_run.log", "panic.txt", "disasm.txt", "env.txt", "fix.diff", "VERDICT.md", "README.md", "manifest.json", "verdict.json" ] } |