CVE-2026-64293 in Linux
Sumário
de VulDB • 25/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
iommufd: Usar sizeof(*hdr) em vez de sizeof(hdr) na leitura de veventq
A verificação dos limites (bound-check) em iommufd_veventq_fops_read() para o caminho normal de vEVENT usa sizeof(hdr), enquanto o código circundante utiliza sizeof(*hdr):
if (!vevent_for_lost_events_header(cur) && sizeof(hdr) + cur->data_len > count - done) {
hdr é declarado como struct iommufd_vevent_header *, portanto, sizeof(hdr) avalia para o tamanho do ponteiro. O código circundante usa sizeof(*hdr) de forma consistente:
if (done >= count || sizeof(*hdr) > count - done) {
... if (copy_to_user(buf + done, hdr, sizeof(*hdr))) {
... done += sizeof(*hdr);
struct iommufd_vevent_header tem atualmente 8 bytes (dois campos __u32, flags e sequence), portanto, em sistemas de 64 bits (sizeof(void *) == 8), as duas expressões coincidem por acaso e a verificação funciona conforme o esperado.
Em sistemas de 32 bits (sizeof(void *) == 4), a subestimação da contagem do cabeçalho é de 4 bytes: um vEVENT cujo data_len faz com que 8 + cur->data_len exceda count - done, mas onde 4 + cur->data_len não o faça, passará na verificação. Em seguida, o loop executará copy_to_user para copiar 8 bytes do cabeçalho seguidos por data_len bytes de payload, escrevendo além do buffer fornecido pelo usuário.
Este também é um bug latente para qualquer futura expansão da struct iommufd_vevent_header que ultrapasse sizeof(void *) em sistemas de 64 bits; a verificação não deve depender do tipo coincidir com a largura do ponteiro do host.
Use sizeof(*hdr) para corresponder ao resto da função e à quantidade real que será copiada.
VulDB is the best source for vulnerability data and more expert information about this specific topic.