DF-4978 / manifest.json
{ "finding_id": "DF-4978", "title": "SSIF stores BMC-accumulated unclamped reply length - kernel-heap OOB read via IPMICTL_RECEIVE_MSG copyout (DF-4777/4948 shape, third transport)", "verdict": "reproduced", "impact": "leak", "confidence": "certain", "reproduce": { "build": "dfbsd-qemu/vm.sh run_root 'sh /root/ssifshock/build.sh'", "run": "phase1: kldload /root/ssifshock/ssifshock.ko (dmesg: ir_replylen=16023 over 1024); phase2: QEMU_EXTRA='-device ipmi-bmc-sim,id=bmc0 -device isa-ipmi-kcs,bmc=bmc0' boot, kldload ipmi, pw groupmod operator -m maxx, kldload /root/bumpko/bumpko.ko, unpriv /tmp/leak in background, sysctl hw.bumpreplylen=16023", "expected": "producer: BUG DF-4978 REPRODUCED ir_replylen=16023/1024; sink 3/3: data_len=16024, 7159-7190 nonzero kernel bytes past 1024 (first 0x042e), kernel pointers + 426 neighbor markers; control (arm 200): 0 bytes beyond; after fix.diff: ir_replylen=1024, data_len=1025, 0 bytes beyond" }, "kernel_refs": [ "sys/dev/misc/ipmi/ipmi_ssif.c:304", "sys/dev/misc/ipmi/ipmi_ssif.c:294", "sys/dev/misc/ipmi/ipmi_ssif.c:240", "sys/dev/misc/ipmi/ipmi_ssif.c:291-293", "sys/dev/misc/ipmi/ipmi_ssif.c:297", "sys/dev/misc/ipmi/ipmi.c:448-468", "sys/dev/misc/ipmi/ipmi.c:401-403", "sys/dev/misc/ipmi/ipmi.c:534-546", "sys/sys/ipmi.h:35", "sys/dev/misc/ipmi/ipmivars.h:49" ], "artifacts": [ "README.md", "VERDICT.md", "ssifshock.c", "ipmivars.h", "bus/smbus/smbconf.h", "dev/smbus/smb/smb.h", "smbus_if.h", "Makefile", "bumpko.c", "leak.c", "build.sh", "run.sh", "build.log", "run.log", "run.2.log", "run.3.log", "run.control.log", "fix.diff", "fix_build.log", "fix_run.log", "leak_sample.txt", "env.txt", "manifest.json", "verdict.json" ] } |