CVE-2026-53196 USB: serial: io_ti: fix heap overflow in get_manuf_info()
Description
In the Linux kernel, the following vulnerability has been resolved: USB: serial: io_ti: fix heap overflow in get_manuf_info() get_manuf_info() reads le16_to_cpu(rom_desc->Size) bytes from the device I2C EEPROM into a buffer allocated with kmalloc_obj(), which is sizeof(struct edge_ti_manuf_descriptor) = 10 bytes. The Size field comes from the device and is only validated (in check_i2c_image()) to make sure the descriptor fits within TI_MAX_I2C_SIZE (16384 bytes), not against the destination buffer size. A malicious USB device can therefore set Size to any value up to 16377, causing a heap overflow of up to 16367 bytes when plugged into a host running this driver. valid_csum() is called after read_rom() and also iterates buffer[0..Size-1], compounding the out-of-bounds access. Fix by rejecting descriptors with unexpected length before calling read_rom(). [ johan: amend commit message; also check for short descriptors ]
Détail CVSS 3.1
Vecteur CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HExploitable avec un accès physique à la machine, sans compte et sans action d’un utilisateur ; un attaquant peut compromettre gravement la confidentialité, l’intégrité ou la disponibilité.
- Vecteur d’attaque
- Physique
- Complexité
- Faible
- Privilèges requis
- Aucun
- Interaction
- Aucune
- Portée
- Inchangée
- Confidentialité
- Élevé
- Intégrité
- Élevé
- Disponibilité
- Élevé
Produits et versions touchés
| Produit | Versions touchées | Corrigé en |
|---|---|---|
| Linux 7.1 | premières → < 7.1 | 7.1 |
| Linux 7.0 | premières → < 7.0.13 | 7.0.13 |
| Linux 6.18 | premières → < 6.18.36 | 6.18.36 |
| Linux 6.12 | premières → < 6.12.94 | 6.12.94 |
| Linux 6.6 | premières → < 6.6.143 | 6.6.143 |
| Linux 6.1 | premières → < 6.1.176 | 6.1.176 |
| Linux 5.15 | premières → < 5.15.210 | 5.15.210 |
| Linux 5.10 | premières → < 5.10.259 | 5.10.259 |
| Linux | 2.6.12 | Pas de correctif indiqué |