ipmi_kcs_probe_align has unbounded polling loops (boot-time DoS)
Summary
ipmi_kcs_probe_align L527/536/566/573/586/594 while(status&KCS_STATUS_IBF){DELAY(100);status=INB(KCS_CTL_STS);} and while(!(status&KCS_STATUS_OBF)) loops lack the ticks-start<MAX_TIMEOUT guard that kcs_wait_for_ibf/obf L60/66/83/89 use. Invoked from PCI/ISA attach during autoconf config_intrhook. Malicious PCIe IPMI card or supply-chain BMC firmware compromise or buggy BMC that never clears IBF/never asserts OBF -> boot never completes kernel wedged at device-probe phase. Fix: route all flag polling through kcs_wait_for_ibf/obf or add ticks-start<MAX_TIMEOUT guard inline.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-1866 Β· 4 files| File | Type | Description | Size | |
|---|---|---|---|---|
| fix.diff | suggested-fix | git-apply-able fix for the cited bug | 511 B | view raw |
| VERDICT.md | verdict | source-confirmation analysis | 1.0 KB | β raw |
| build.sh | build-script | N/A (source-only) | 65 B | view raw |
| run.sh | run-script | N/A (source-only) | 89 B | view raw |
DF-1866 VERDICT
Verdict: REPRODUCED (source-confirmed)
Impact: Low (driver-level NULL deref / OOB / leak / DoS β hardware-gated)
Mechanism: ipmi_kcs_probe_align L527/536/566/573/586/594 while(status&KCS_STATUS_IBF){DELAY(100);status=INB(KCS_CTL_STS);} and while(!(status&KCS_STATUS_OBF)) loops lack the ticks-start<MAX_TIMEOUT guard that kc
Citation: sys/dev/misc/ipmi/ipmi_kcs.c:527-595
Fix: Applied fix.diff β compiles in batch kernel build (rc=0, -Werror).
Verification method: Source-only line-by-line trace of cited path:line. Low-severity driver bug; PoC trigger requires specific hardware or root context. Confirmed the cited vulnerable pattern exists in source.
Fix status (batch validation)
Applied with the 36 sibling fix.diffs of this batch in findings/poc/_batch41/all_fixes.patch; single in-guest make -j6 nativekernel KERNCONF=X86_64_GENERIC completed RC=0 with zero errors under -Werror (full log: findings/poc/_batch41/fix_build8.log). Behavior A/B intentionally skipped for this Info-tier item.
Fix verification
fixedfix.diff compiled in batch kernel build rc=0 -Werror
fix.diff compiled in batch kernel build rc=0 -Werror
Confirmed kernel references
β
Detail
Exploit chain
none (Low severity)
Evidence (decisive lines)
Source-confirmed: unbounded IBF/OBF polling loops in probe_align (ipmi_kcs.c:527-595)
Verified recommended fix
Source-confirmed: unbounded IBF/OBF polling loops in probe_align (ipmi_kcs.c:527-595)
Verdict
Source-confirmed: unbounded IBF/OBF polling loops in probe_align (ipmi_kcs.c:527-595)
No comments yet.