🇰🇷 한글 설명
Linux 커널의 ts4800 irqchip 드라이버에서 드라이버 제거 시 체인 핸들러를 적절히 해제하지 않는 취약점이 발견되었습니다. 이로 인해 드라이버 제거 후에도 부모 인터럽트가 발생할 경우 해제된 메모리에 접근하게 되어 커널 크래시가 발생할 수 있습니다.
💡 쉬운 설명
장치를 제거할 때 연결된 신호 처리기를 제대로 끄지 않아 발생하는 문제입니다. 장치가 사라졌는데도 시스템이 계속 신호를 처리하려다 오류가 발생하여 컴퓨터가 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
irqchip/ts4800: Fix missing chained handler cleanup on remove
The driver installs a chained handler for the parent interrupt during probe
using irq_set_chained_handler_and_data(), but the remove function does not
clear this handler. This leaves a dangling handler that may be called when
the parent interrupt fires after the driver has been removed, potentially
accessing freed memory and causing a kernel crash.
Additionally, the parent_irq obtained via irq_of_parse_and_map() is not
stored, making it inaccessible in the remove function. Moreover, interrupt
mappings created during probe are not properly disposed.
Fix this by:
- Saving parent_irq in probe
- Clearing the chained handler with NULL in ts4800_ic_remove()
- Disposing all IRQ mappings before domain removal to prevent resource
leaks
📍 영향받는 시스템
Linux kernel (ts4800 irqchip driver 포함 버전)
⚔️ 공격 벡터
로컬 공격자가 드라이버를 반복적으로 로드 및 제거하여 커널 패닉을 유도하는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.