DF-5455 / manifest.json
{ "finding_id": "DF-5455", "title": "umoscom_cfg_read() returns uninitialized kernel stack on failed/short vendor control-IN; cfg_get_status maps bits 4-7 of the stale byte into TIOCMGET modem-status bits disclosed to userspace (evil MCS7703 or fault condition)", "verdict": "reproduced", "impact": "leak", "confidence": "certain", "reproduce": { "build": "sh build.sh (in-tree kmod build on the guest: /usr/src/sys/bus/u4b/serial/mo5455 + make; single TU #includes the byte-identical production copy modulo 1 guard hunk, plus the cross-TU failure-semantics shim)", "run": "sh run.sh (kldload umoscomunleak.ko x3; kldunload; dmesg | grep MO5455)", "expected": "MO5455: pat=0xff mode=timeout : PROD msr=0xf0 (predict 0xf0) TIOCM after ucom_totio=0741 MATCH; 0xa5->0xa0 (0501); 0x5a->0x50 (0241); FIXED (val=0): msr=0x00 (clean); RESULT: 12/12 pattern-match ... -- UNINITIALIZED STACK DISCLOSED THROUGH MODEM-STATUS BITS (x3 loads, 36/36, 0 mismatches)" }, "kernel_refs": [ "sys/bus/u4b/serial/umoscom.c:539-557", "sys/bus/u4b/serial/umoscom.c:495-522", "sys/bus/u4b/serial/usb_serial.h:220-221", "sys/bus/u4b/usb_request.c:642-650", "sys/bus/u4b/usb_request.c:666-683", "sys/bus/u4b/usb_request.c:680-681", "sys/bus/u4b/serial/usb_serial.c:1515-1518", "sys/bus/u4b/serial/usb_serial.c:1527", "sys/bus/u4b/serial/usb_serial.c:1321-1332", "sys/bus/u4b/serial/usb_serial.c:1246-1273", "sys/bus/u4b/serial/usb_serial.c:1209-1211" ], "artifacts": [ "README.md", "VERDICT.md", "mo5455_harness.c", "mo5455_shim.c", "umoscom_prod_guarded.c", "prod_guard.diff", "gen_guarded.py", "Makefile", "build.sh", "run.sh", "build.log", "build.werror_evidence.log", "run.log", "run.1.fold.log", "env.txt", "fix.diff", "fix_compile.log", "umoscomunleak.ko", "manifest.json", "verdict.json" ] } |