cam_periph_unmapbufs silently drops copyout errors -> data loss / inconsistent result
Summary
cam_periph_unmapbufs at cam_periph.c:830 /* XXX return error */ copyout return value DISCARDED. useracc at mapmem :712/:725 verifies range at mapmem time but does not pin pages. Concurrent munmap/mprotect between mapmem and unmapbufs copyout -> partial/failed copyout silently succeeds to xpt caller. XPT_DEV_MATCH: partial matches buffer. XPT_SCSI_IO: device data not propagated, xpt reports CAM_REQ_CMP. TOCTOU on user address space (self-inflicted or via shared memory with SETUID tool). No memory corruption (bounded by b_bcount<=MAXPHYS). Fix: plumb copyout error to caller.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-1026 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| manifest.json | file | 390 B | view raw |
Fix verification
not_testableproper fix needs void->int signature change; deferred
proper fix needs void->int signature change; deferred
Confirmed kernel references
β
Detail
Exploit chain
none (Info severity)
Evidence (decisive lines)
Source-confirmed at sys/bus/cam/cam_periph.c:829: cam_periph_unmapbufs silently drops copyout errors
Verified recommended fix
Source-confirmed at sys/bus/cam/cam_periph.c:829: cam_periph_unmapbufs silently drops copyout errors
Verdict
Source-confirmed at sys/bus/cam/cam_periph.c:829: cam_periph_unmapbufs silently drops copyout errors
No comments yet.