🇰🇷 한글 설명
Linux 커널의 uart_shutdown() 함수에서 NULL 포인터 체크 없이 uart_port_dtr_rts()를 호출하는 메모리 안전성 취약점입니다. HUPCL 플래그가 설정된 경우만 영향을 받아 실제 악용은 제한적입니다.
💡 쉬운 설명
리눅스 직렬 포트 제어 코드에서 안전성 검사가 누락되어 특정 조건에서 시스템 오류가 발생할 수 있습니다. 이 버그는 Coverity 정적 분석으로 발견되었으며 NULL 포인터 참조 가능성이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
serial: protect uart_port_dtr_rts() in uart_shutdown() too
Commit af224ca2df29 (serial: core: Prevent unsafe uart port access, part
3) added few uport == NULL checks. It added one to uart_shutdown(), so
the commit assumes, uport can be NULL in there. But right after that
protection, there is an unprotected "uart_port_dtr_rts(uport, false);"
call. That is invoked only if HUPCL is set, so I assume that is the
reason why we do not see lots of these reports.
Or it cannot be NULL at this point at all for some reason :P.
Until the above is investigated, stay on the safe side and move this
dereference to the if too.
I got this inconsistency from Coverity under CID 1585130. Thanks.
📍 영향받는 시스템
Linux kernel (직렬 포트 드라이버 활성화된 모든 시스템)
⚔️ 공격 벡터
HUPCL 플래그 활성화 상태에서 uart_shutdown() 함수 호출 (권한 필요)
🛡️ 대응 방법
Linux 커널을 최신 버전으로 업데이트하여 uart_port_dtr_rts() 호출을 NULL 체크 범위 내로 이동
🔧 검증 코드
직렬 포트 드라이버가 활성화되어 있는지 확인하고, 커널 버전을 통해 패치 상태 검증. 최신 커널로 업데이트되었으면 해당 취약점이 수정되었음을 의미합니다.
grep -i uart_port_dtr_rts /boot/config-$(uname -r) 2>/dev/null || echo 'Serial driver not enabled'