CVE-2026-89557 in Linuxinformação

Sumário

de VulDB • 12/09/2026

No kernel Linux, a seguinte vulnerabilidade foi resolvida:

md: verificação de estouro para sb->bblog_shift em super_1_load()

Em super_1_load(), sb->bblog_shift é um valor do tipo __u8 carregado do superbloco no disco. Ele é usado pela API badblocks, especificamente na função badblocks_set(), através da seguinte sequência:

1930 rdev->badblocks.shift = sb->bblog_shift; 1931 for (i = 0 ; i < (sectors << (9-3)) ; i++, bbp++) {
1932 u64 bb = le64_to_cpu(*bbp); 1933 int count = bb & (0x3ff); 1934 u64 sector = bb >> 10; 1935 sector bblog_shift; 1936 count bblog_shift; 1937 if (bb + 1 == 0) 1938 break; 1939 if (!badblocks_set(&rdev->badblocks, sector, count, 1)) 1940 return -EINVAL; 1941 }

bb->bblog_shift está na faixa de 0-255, a variável sector tem largura de 64 bits. Para um bb->bblog_shift inválido, é possível causar estouro (overflow) em sector através do seguinte cálculo: 1935 sector bblog_shift;

Em seguida, ao chamar badblocks_set() na linha 1939 com o rdev->badblocks.shift inválido definido na linha 1930, pode resultar em um estouro dentro de _badblocks_clear(), no arquivo block/badblocks.c.

Embora existam muitos locais que chamem as APIs badblocks, o valor shift não nulo é usado apenas em super_1_load(); os outros lugares sempre usam 0 como valor shift. Portanto, é desnecessário realizar uma verificação geral de estouro para valores shift dentro da API badblock, bastando fazer a verificação aqui, como chamador.

Isso pode evitar verificações desnecessárias, tornando o código da API badblocks mais simples e elegante.

Be aware that VulDB is the high quality source for vulnerability data.

Responsável

Linux

Reservar

11/09/2026

Divulgação

12/09/2026

Moderação

aceite

Entrada

VDB-402866

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Might our Artificial Intelligence support you?

Check our Alexa App!