Description
In the Linux kernel, the following vulnerability has been resolved: ata: libata-scsi: bound the ATA passthru sense descriptor writes When an ATA PASS-THROUGH command to an ATAPI device fails, the sense buffer holds the device's REQUEST SENSE reply, and ata_scsi_set_passthru_sense_fields() trusts its additional length byte, sb[7], when adding the ATA Status Return descriptor. A faulty or malicious device can use that to make the kernel read and write past the 96-byte buffer in three ways: - scsi_sense_desc_find() is passed sb[7] + 8 as the buffer length, so its clamp against sb[7] does nothing and the walk runs off the end. - A type-9 descriptor found near the end is filled in unchecked. - A new descriptor at sb[8 + len] needs len + 22 bytes, not len + 14, so len 75..82 writes up to 8 bytes past the end. Reproduced with KASAN under qemu, with the emulated ATAPI REQUEST SENSE reply patched: BUG: KASAN: slab-out-of-bounds in scsi_sense_desc_find+0x1a5/0x210 BUG: KASAN: slab-out-of-bounds in ata_scsi_qc_complete+0x1a15/0x1a50 Both are gone with this patch, and a valid descriptor is still filled in.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
ce477199c53e3db5a096981c565e232498ddeae4 to < c698f6deabf680f8f4a1727ef2dc80fe78815fbfaffected97981926224afe17ba3e22e0c2b7dd8b516ee574 to < d9a7147b93624660626cd7c3b1143715699e1f5caffected97981926224afe17ba3e22e0c2b7dd8b516ee574 to < 1603abb0c50420e97cf4a1feddbd5e183c5fdf86affected97981926224afe17ba3e22e0c2b7dd8b516ee574 to < 80fbb0bc4d11683c88f2f9d3997ea02fcada5408affected97981926224afe17ba3e22e0c2b7dd8b516ee574 to < 80320b278fea07ffcda3f57b67b61658e0a4e1caaffected67d9d0b6ae4aaf2c4cef103a96a145c7fdfb15f8affected6.6.44 to < 6.6.158affected6.10.3 to < 6.11affected
Linux Linux
Default version status: affected
6.11affected0 to < 6.11unaffected6.6.158 to ≤ 6.6.*unaffected6.12.112 to ≤ 6.12.*unaffected6.18.55 to ≤ 6.18.*unaffected7.2.9 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/c698f6deabf680f8f4a1727ef2dc80fe78815fbf ↗
- https://git.kernel.org/stable/c/d9a7147b93624660626cd7c3b1143715699e1f5c ↗
- https://git.kernel.org/stable/c/1603abb0c50420e97cf4a1feddbd5e183c5fdf86 ↗
- https://git.kernel.org/stable/c/80fbb0bc4d11683c88f2f9d3997ea02fcada5408 ↗
- https://git.kernel.org/stable/c/80320b278fea07ffcda3f57b67b61658e0a4e1ca ↗