Commit 61d099a
scsi: ibmvfc: Fix OOB access in ibmvfc_discover_targets_done()
A malicious or compromised VIO server can return a num_written value in the
discover targets MAD response that exceeds max_targets. This value is
stored directly in vhost->num_targets without validation, and is then used
as the loop bound in ibmvfc_alloc_targets() to index into disc_buf[], which
is only allocated for max_targets entries. Indices at or beyond max_targets
access kernel memory outside the DMA-coherent allocation. The
out-of-bounds data is subsequently embedded in Implicit Logout and PLOGI
MADs that are sent back to the VIO server, leaking kernel memory.
Fix by clamping num_written to max_targets before storing it.
Fixes: 072b91f ("[SCSI] ibmvfc: IBM Power Virtual Fibre Channel Adapter Client Driver")
Reported-by: Yuhao Jiang <[email protected]>
Cc: [email protected]
Signed-off-by: Tyllis Xu <[email protected]>
Reviewed-by: Dave Marquardt <[email protected]>
Acked-by: Tyrel Datwyler <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Martin K. Petersen <[email protected]>1 parent 7a9f448 commit 61d099a
1 file changed
Lines changed: 2 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4966 | 4966 | | |
4967 | 4967 | | |
4968 | 4968 | | |
4969 | | - | |
| 4969 | + | |
| 4970 | + | |
4970 | 4971 | | |
4971 | 4972 | | |
4972 | 4973 | | |
| |||
0 commit comments