CVE-2026-89722 in Linux
Sumário
de VulDB • 11/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
PCI/sysfs: Corrige leitura fora dos limites em pci_write_legacy_io()
pci_write_legacy_io() carrega 4 bytes do buffer de escrita kernfs independentemente de quantos bytes o userspace escreveu:
```c if (count != 1 && count != 2 && count != 4) return -EINVAL;
return pci_legacy_write(bus, off, *(u32 *)buf, count); ```
kernfs_fop_write_iter() aloca o buffer com kmalloc(len + 1), portanto uma escrita de 1 byte no arquivo sysfs legacy_io aloca 2 bytes e a carga incondicional u32 lê até 2 bytes além do final da alocação, que o KASAN relata como uma leitura slab-out-of-bounds. Da mesma forma, uma escrita de 2 bytes causa um overread (leitura excessiva) de 1 byte.
Assim, leia apenas o número de bytes solicitados usando get_unaligned_le16() e get_unaligned_le32() para os casos de 2 e 4 bytes, interpretando o buffer como little-endian para corresponder à ordem dos bytes do espaço PCI I/O port.
A implementação PowerPC anteriormente compensava a carga nativa big-endian de 32 bits do código genérico deslocando (shifting) o valor para a posição correta nos casos de 1 e 2 bytes. Os deslocamentos estavam corretos apenas em kernels big-endian.
No PowerPC little-endian (POWER8 e posterior), eles extraíam os bytes incorretos, portanto uma escrita de 1 byte gravava um byte fora dos limites em vez do valor solicitado. No big-endian, a carga nativa também causava que out_le16() e out_le32() invertessem os bytes do usuário na rede para escritas de 2 e 4 bytes. Os helpers little-endion resolvem ambos os problemas, portanto os deslocamentos são removidos.
Nenhuma alteração é necessária para a plataforma Alpha.
O arquivo legacy_io é exclusivo do root (root-only) e existe apenas no Alpha e PowerPC, as duas arquiteturas que definem HAVE_PCI_LEGACY.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.