🇰🇷 한글 설명
리눅스 커널의 8250 시리얼 드라이버에서 하드웨어 특정 드라이버를 언로드할 때 커널 페이지 오류(Oops)가 발생하는 취약점입니다. 드라이버 언로드 후 약 10초 뒤에 uart_change_pm() 함수 호출 과정에서 잘못된 메모리 주소에 접근하여 시스템 불안정을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터의 시리얼 통신 장치 드라이버를 제거할 때, 시스템이 이미 사라진 메모리 주소를 참조하려고 시도하여 오류가 발생하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 오류 메시지가 나타날 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
serial: 8250: Fix oops for port->pm on uart_change_pm()
Unloading a hardware specific 8250 driver can produce error "Unable to
handle kernel paging request at virtual address" about ten seconds after
unloading the driver. This happens on uart_hangup() calling
uart_change_pm().
Turns out commit 04e82793f068 ("serial: 8250: Reinit port->pm on port
specific driver unbind") was only a partial fix. If the hardware specific
driver has initialized port->pm function, we need to clear port->pm too.
Just reinitializing port->ops does not do this. Otherwise serial8250_pm()
will call port->pm() instead of serial8250_do_pm().
📍 영향받는 시스템
8250 시리얼 드라이버를 사용하는 리눅스 커널 버전
⚔️ 공격 벡터
로컬 권한을 가진 사용자가 특정 하드웨어 드라이버를 언로드(Unload)하는 동작을 통해 유도 가능
🛡️ 대응 방법
커널 패치를 적용하여 uart_change_pm() 호출 시 port->pm을 적절히 초기화하도록 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인