CVE-2026-64365 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 25.

리눅스 커널에서 다음 취약점이 해결되었습니다:

HID: letsketch - 드라이버 언바인드 시 inrange_timer에 대한 UAF(Use-After-Free) 수정

letsketch_driver는 .remove 콜백을 제공하지 않지만, letsketch_probe()는 장치별 타이머를 활성화합니다.

timer_setup(&data->inrange_timer, letsketch_inrange_timeout, 0);

타이머는 펜 인레인지(pen-in-range) 보고가 있을 때마다 raw_event에서 100ms의 타임아웃으로 재활성화되며, 해당 콜백은 합성 BTN_TOOL_PEN 릴리즈를 전달하기 위해 data->input_tablet을 역참조합니다.

letsketch_data는 devm_kzalloc()로 할당되고, input_dev 필드는 letsketch_setup_input_tablet()를 통해 devm으로 할당됩니다. 장치 언바인드(USB 제거 또는 rmmod) 시 HID 코어는 기본 정리 절차를 실행하고 devm 정리는 letsketch_data와 입력 장치를 모두 해제합니다. .remove 콜백이 존재하지 않기 때문에 타이머가 먼저 비워지지 않습니다: 만약 raw_event가 언바인드 후 약 100ms 이내에 타이머를 활성화했다면, 대기 중인 타이머는 이미 해지된 메모리에서 실행됩니다. 이는 data 및 data->input_tablet에 대한 UAF 읽기이며, 이어져서 해제된 input_dev로 input_report_key() / input_sync()가 호출됩니다.

동일한 문제는 probe 오류 경로에서도 발생할 수 있습니다: hid_hw_start()가 항상 폴링(quirk) 장치를 위해 I/O를 활성화한 후 실패하면, devm이 data를 해제하기 전에 raw_event에서 타이머가 활성화되었을 수 있습니다.

해결책은 먼저 hid_hw_stop()을 호출하는 .remove 콜백을 추가하는 것입니다. hid_hw_stop()은 raw_event()를 전달하는 URB들을 동기적으로 종료하므로, 반환 시에는 어떤 경로에서도 타이머를 재활성화할 수 없습니다. 그런 다음 timer_shutdown_sync()는 진행 중인 모든 콜백을 비우고 영구적으로 이후의 mod_timer() 호출을 비활성화합니다. probe 오류 경로에도 동일한 timer_shutdown_sync()를 적용하여 타이머가 data보다 오래 지속되지 않도록 보장합니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-383165

EPSS

0.00173

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!