Linux: ata: libata-scsi: bound the ATA passthru sense descriptor writes
What fixes it
- 1603abb0c50420e97cf4a1feddbd5e183c5fdf86LinuxCVE List
- 80fbb0bc4d11683c88f2f9d3997ea02fcada5408LinuxCVE List
- 80320b278fea07ffcda3f57b67b61658e0a4e1caLinuxCVE List
- 6.6.158LinuxCVE List
- 6.11LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
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.
Text from CVE List
Affected versions 15
- Linuxaffected: ce477199c53e3db5a096981c565e232498ddeae4 before c698f6deabf680f8f4a1727ef2dc80fe78815fbfCVE List
- Linuxaffected: 97981926224afe17ba3e22e0c2b7dd8b516ee574 before d9a7147b93624660626cd7c3b1143715699e1f5cCVE List
- Linuxaffected: 97981926224afe17ba3e22e0c2b7dd8b516ee574 before 1603abb0c50420e97cf4a1feddbd5e183c5fdf86CVE List
- Linuxaffected: 97981926224afe17ba3e22e0c2b7dd8b516ee574 before 80fbb0bc4d11683c88f2f9d3997ea02fcada5408CVE List
- Linuxaffected: 97981926224afe17ba3e22e0c2b7dd8b516ee574 before 80320b278fea07ffcda3f57b67b61658e0a4e1caCVE List
- Linuxaffected: 67d9d0b6ae4aaf2c4cef103a96a145c7fdfb15f8CVE List
- Linuxaffected: 6.6.44 before 6.6.158CVE List
- Linuxaffected: 6.10.3 before 6.11CVE List
- Linuxaffected: 6.11CVE List
- Linuxunaffected: all versions before 6.11CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.55 through 6.18.*CVE List
- Linuxunaffected: 7.2.9 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 5
- git.kernel.org/stable/c/c698f6deabf680f8f4a1727ef2dc80fe78815fbfReferencevia CVE List
- git.kernel.org/stable/c/d9a7147b93624660626cd7c3b1143715699e1f5cReferencevia CVE List
- git.kernel.org/stable/c/1603abb0c50420e97cf4a1feddbd5e183c5fdf86Referencevia CVE List
- git.kernel.org/stable/c/80fbb0bc4d11683c88f2f9d3997ea02fcada5408Referencevia CVE List
- git.kernel.org/stable/c/80320b278fea07ffcda3f57b67b61658e0a4e1caReferencevia CVE List