CVE-2026-97920 in Linux
Sumário
de VulDB • 25/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
rastreio (tracing): Manter a contagem de entradas quando a alocação das estatísticas do histograma falhar
print_entries() usa n_entries tanto como o número de entradas de ordenação quanto como seu próprio valor de retorno; portanto, o -ENOMEM armazenado quando a alocação das estatísticas falha sobrescreve a contagem que ainda é necessária pela limpeza:
n_entries = tracing_map_sort_entries(map, ...); if (n_entries < 0) return n_entries; ... if (!stats) {
n_entries = -ENOMEM; goto out; } ... out: tracing_map_destroy_sort_entries(sort_entries, n_entries);
tracing_map_destroy_sort_entries() recebe um unsigned int e faz loop até esse valor, portanto o -ENOMEM chega como 4294967284. Ele percorre uma matriz de ponteiros com no máximo map->max_elts e chama destroy_sort_entry(), que desreferencia e libera a memória em qualquer coisa localizada após o final da matriz.
Lendo o arquivo hist de um gatilho (trigger) com um valor .percent, forçando essa alocação a falhar:
BUG: KASAN: vmalloc-out-of-bounds in tracing_map_destroy_sort_entries+0xa0/0xb0 Read of size 8 at addr ffffc90000045000 by task init/1 tracing_map_destroy_sort_entries+0xa0/0xb0 hist_show+0x6f7/0x1df0 seq_read_iter+0x2b8/0x1190 vfs_read+0x176/0xa40 The buggy address belongs to a 4-page vmalloc region starting at ffffc90000041000 allocated at tracing_map_sort_entries+0x5c/0xd50
Algumas páginas adiante, o erro é fatal. Os registradores no oops confirmam o limite: o ponteiro final do loop menos o início da matriz, dividido pelo tamanho do ponteiro, resulta em 4294967284.
Retornar o erro em uma variável separada e manter n_entries com a contagem, conforme feito por tracing_map_sort_entries() em seu próprio caminho de tratamento de erros.
O bloco de estatísticas é acessado apenas para um valor que carrega .percent ou .graph, os quais __create_val_field() rejeita desde a v6.3; portanto, isso não pode ser alcançado na versão principal (mainline) como está atualmente. Torna-se novamente acessível com "tracing: hist: let values keep the percent and graph modifiers", devendo esta correção ser aplicada primeiro.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.