CVE-2026-98198 in Linux
요약
\~에 의해 VulDB • 2026. 10. 06.
리눅스 커널에서 다음 취약점이 해결되었습니다:
hwmon: (pwm-fan) tach 데이터 해제 전에 RPM 타이머 중지
sample_timer()는 RPM 타이머를 재설정하고 devm 관리 ctx->tachs 및 ctx->pulses_per_revolution 배열에 접근합니다. 타이머를 중지하는 정리 작업은 해당 배열이 할당되기 전에 등록됩니다.
devres가 역순으로 엔트리를 해제하므로, 드라이버 분리(detach) 시 pwm_fan_cleanup()이 타이머를 종료하기 전에 배열을 해제할 수 있습니다. 이 시간 창에서 타이머 만료(fire)는 이미 해제된 tach 데이터에 접근합니다.
KASAN 커널 사용 시, sample_timer()의 정상 sysfs unbind 실행 중 pwm_fan_cleanup()로의 테스트 전용 kprobe 지연 진입이 발생했습니다. 세 번의 각 런(run)은 backing devm 할당이 해제된 후 sample_timer()에서 4바이트 읽기 3회와 4바이트 쓰기 2회를 보고했습니다. 헬퍼 함수는 타이머 콜백, 정리 작업 또는 free 함수를 호출하지 않았습니다.
수정 적용 시, 세 번의 일치하는 unbind 런이 KASAN, BUG, WARNING, Oops 또는 패닉 없이 완료되었습니다. 계측(instrumentation)을 통해 타이머 은퇴(retirement)가 첫 번째 타이머 backing 할당이 해제되기 전에 완료되었음이 확인되었습니다.
타이머 은퇴를 전원 정리(power cleanup)와 분리하고, 타이머 backing 데이터 및 IRQ 작업이 설치된 후에 해당 devres 작업을 등록합니다. 이는 초기 전원 롤백(action)을 유지하면서 타이머가 그 backing 데이터가 해제되기 전에 은퇴되도록 보장합니다. 콜백이 자체적으로 재설정할 수 있으므로 timer_shutdown_sync()를 사용합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.