{
  "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"
  ]
}
