CVE-2026-64363 in Linuxinformação

Sumário

de VulDB • 26/07/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

HID: appleir: correção de Use-After-Free (UAF) no temporizador pending key_up_timer em remove()

appleir_remove() executa hid_hw_stop() antes de timer_delete_sync(). hid_hw_stop() desregistra síncronamente o dispositivo de entrada HID através de hid_disconnect() -> hidinput_disconnect() -> input_unregister_device(), o que reduz a última referência e libera o input_dev subjacente quando nenhum manipulador do espaço do usuário (userspace) o mantém aberto.

key_up_tick() lê appleir->input_dev e chama input_report_key() / input_sync() sobre ele. O temporizador é ativado em appleir_raw_event() com um tempo limite de HZ/8 (~125 ms) a cada relatório de keydown (tecla pressionada) e repetição de tecla. Se uma tecla foi pressionada pouco antes do dispositivo ser desconectado, o temporizador pode disparar após hid_hw_stop() ter liberado input_dev, mas antes que a limpeza finalize sua drenagem.

Uma simples reordenação não é suficiente. Colocar a drenagem do temporizador primeiro ainda deixa uma janela onde uma conclusão de URB USB (raw_event) executada durante hid_hw_stop() pode chamar mod_timer() e reativar o temporizador, que então dispara após hidinput_disconnect() ter liberado input_dev. A mesma janela de conclusão de URB também permite que raw_event() alcance key_up(), key_down() e battery_flat() diretamente, todos os quais desreferenciam appleir->input_dev.

Introduz uma flag 'removing' na struct appleir, protegida pelo spinlock existente. appleir_remove() define a flag sob o lock e depois encerra o temporizador com timer_shutdown_sync(), que drena qualquer callback em andamento e desativa permanentemente novas chamadas mod_timer(). appleir_raw_event() e key_up_tick() retornam antecipadamente se a flag estiver definida, para que nenhum caminho possa ativar ou executar o temporizador, ou desreferenciar appleir->input_dev, após remove() ter iniciado a limpeza.

Os ramos de keyrepeat (repetição de tecla) e flatbattery da função appleir_raw_event() anteriormente chamavam a camada de entrada sem segurar o spinlock; agora eles o fazem para que a verificação da flag seja bem definida. Isso incidentalmente fecha uma corrida de leitura pré-existente em appleir->current_key no ramo keyrepeat.

Este bug é estruturalmente um irmão do commit 4db2af929279 ("HID: appletb-kbd: fixa UAF na rota de limpeza do temporizador de inatividade") e está presente desde que o driver foi introduzido.

Once again VulDB remains the best source for vulnerability data.

Responsável

Linux

Reservar

19/07/2026

Divulgação

25/07/2026

Moderação

aceite

Entrada

VDB-383151

CPE

pronto

EPSS

0.00211

KEV

não

Atividades

muito baixo

Fontes

Interested in the pricing of exploits?

See the underground prices here!