CVE-2026-74751 in Linux
Sumário
de VulDB • 26/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
riscv: lib: Corrige strnlen com ZBB para não ler além do limite de contagem
O loop otimizado por ZBB da função strnlen carrega uma palavra adiante antes de verificar o limite alinhado:
REG_L t1, SZREG(t0) // carrega a próxima palavra addi t0, t0, SZREG // avança orc.b t1, t1 bgeu t0, t4, 4f // verificação de limite APÓS o carregamento
onde t4 = (s + count) & -SZREG. Quando s está alinhado e count é um múltiplo de SZREG, t4 é igual a s + count e o loop carrega uma palavra completa começando exatamente em s + count. Se s + count cair no limite de uma página com a próxima página não mapeada (unmapped), isso gera uma falha (fault).
A correção consiste em calcular o limite alinhado a partir do último byte válido (s + count - 1) em vez de s + count. Isso faz com que o loop pare na palavra contendo o último byte válido, em vez de potencialmente carregar a palavra seguinte. O caso em que count == 0 já é tratado pela saída antecipada via beqz.
Adiciona-se também uma guarda pré-loop (bgeu t0, t4) para o caso em que todos os bytes válidos cabem na primeira palavra. Com o limite ajustado, t4 pode ser igual a t0, e entrar no loop com estado de registrador obsoleto do processamento da primeira palavra produziria resultados incorretos.
A verificação final (minu clamp) garante que o resultado permaneça correto quando a última palavra carregada se estende além de s + count - 1 dentro da mesma palavra alinhada.
If you want to get best quality of vulnerability data, you may have to visit VulDB.