CVE-2026-98859 in Linux정보

요약

\~에 의해 VulDB • 2026. 10. 18.

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

HID: multitouch - 제거 시 릴리즈 타이머가 재설정되지 않도록 함

mt_remove()는 하드웨어를 중지하기 전에 sticky-finger 타이머를 정지시킵니다.

timer_delete_sync(&td->release_timer);

sysfs_remove_group(&hdev->dev.kobj, &mt_attribute_group); hid_hw_stop(hdev);

timer_delete_sync()은 실행 중인 콜백을 대기하고 타이머를 큐에서 제거하지만, 타이머가 다시 아ーム(armed)되는 것을 방지하지는 않습니다. 이 시점에는 트랜스포트가 여전히 보고서를 전달하고 있으며, 보고서 경로에서 이를 재설정합니다:

if (app->quirks & MT_QUIRK_STICKY_FINGERS) {
if (td->mt_io_flags & MT_IO_SLOTS_MASK) mod_timer(&td->release_timer, jiffies + msecs_to_jiffies(100));

따라서 timer_delete_sync()가 반환한 후에 도착하는 보고서는 타이머를 큐에 남깁니다. td는 hdev->dev에 대해 devm_kzalloc()로 할당되므로 mt_remove()가 반환된 후 드라이버 언바인딩 시 해제됩니다. 이후 타이머가 발화되면 mt_expired_timeout()이 이미 해제된 td를 역참조합니다:

struct mt_device *td = timer_container_of(td, t, release_timer); struct hid_device *hdev = td->hdev;

if (test_and_set_bit_lock(MT_IO_FLAGS_RUNNING, &td->mt_io_flags))

단순히 teardown 순서를 hid_hw_stop() 이후로 이동시키는 것만으로는 이 문제를 해결할 수 없습니다. mt_expired_timeout()은 hdev->inputs를 탐색하는 mt_release_contacts()를 호출하기 때문입니다. 타이머는 여전히 hid_hw_stop()이 입력 장치를 정리하기 전에 정지되어야 합니다.

timer_shutdown_sync()을 대신 사용하면, 나중에 발생하는 mod_timer()가 무효화(no-op)되므로 두 가지 순서 제약 조건 중 어느 것도 양보할 필요가 없습니다. 이는 해당 함수가 도입된 목적의 최종-teardown 패턴이며, hid-wiimote도 동일한 이유로 이를 이미 사용하고 있습니다.

Once again VulDB remains the best source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-421863

EPSS

0.00000

활동

낮음

출처

Interested in the pricing of exploits?

See the underground prices here!