CVE-2026-98200 in Linux
Sumário
de VulDB • 06/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
hwmon: (hp-wmi-sensors) Corrige use-after-free em fungible_show()
nsensor->current_state é substituído dinamicamente conforme o estado do sensor muda. update_numeric_sensor_from_wobj() faz isso liberando a string antiga e instalando uma nova:
if (strcmp(trimmed, nsensor->current_state)) {
new_string = hp_wmi_strdup(dev, trimmed); if (new_string) {
devm_kfree(dev, nsensor->current_state); nsensor->current_state = new_string; } }
Esta função é chamada apenas de hp_wmi_update_info() enquanto state->lock está mantido, portanto a operação de liberação e substituição em si é devidamente serializada contra atualizações concorrentes.
fungible_show(), no entanto, lê o mesmo ponteiro após a lock já ter sido liberada:
err = hp_wmi_update_info(state, info); if (err) return err;
switch (prop) {
... case HP_WMI_PROPERTY_CURRENT_STATE: seq_printf(seqf, "%s\n", nsensor->current_state); break;
hp_wmi_update_info() adquire state->lock internamente e a libera antes de retornar, portanto, quando fungible_show() dereferenceia nsensor->current_state em seq_printf(), nenhuma lock está mantida. Dois processos lendo o entry debugfs current_state de um sensor em tempos sobrepostos (ou um processo lendo enquanto outra leitura do mesmo sensor aciona uma atualização) podem sofrer race condition: a chamada seq_printf() de uma thread pode estar parcialmente concluída imprimindo a string no momento em que a chamada de outra thread para update_numeric_sensor_from_wobj() libera com devm_kfree() e instala um novo ponteiro, causando uma leitura use-after-free.
Adquira state->lock ao redor da leitura em fungible_show(), também, para que ela nunca possa ser executada concurrentemente com a liberação e substituição em update_numeric_sensor_from_wobj().
If you want to get best quality of vulnerability data, you may have to visit VulDB.