ata: libata-scsi: bound the ATA passthru sense descriptor writes
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.158, 6.11, 6.12.112, 6.18.55, 7.2.9
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
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.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From ce477199c53e3db5a096981c565e232498ddeae4 · fixed in c698f6deabf680f8f4a1727ef2dc80fe78815fbf; From 97981926224afe17ba3e22e0c2b7dd8b516ee574 · fixed in d9a7147b93624660626cd7c3b1143715699e1f5c; From 97981926224afe17ba3e22e0c2b7dd8b516ee574 · fixed in 1603abb0c50420e97cf4a1feddbd5e183c5fdf86; From 97981926224afe17ba3e22e0c2b7dd8b516ee574 · fixed in 80fbb0bc4d11683c88f2f9d3997ea02fcada5408; From 97981926224afe17ba3e22e0c2b7dd8b516ee574 · fixed in 80320b278fea07ffcda3f57b67b61658e0a4e1ca; From 6.6.44 · fixed in 6.6.158; From 6.10.3 · fixed in 6.11
- Linux Linux
6.11
- KernelLinux
fixed in 6.6.158; From 6.7.0 · fixed in 6.12.112; From 6.11.0 · fixed in 6.18.55; From 6.13.0 · fixed in 7.2.9