🇰🇷 한글 설명
Linux 커널의 imx UART 드라이버에서 포트 추가 또는 제거 시 imx_uart_ports[] 배열의 엔트리를 적절히 관리하지 않아 발생하는 취약점입니다. 포트 등록 실패나 제거 시에도 이전 데이터가 남아 있어 dangling pointer가 발생하며, 이를 통해 다른 프로세스가 잘못된 엔트리를 통해 콘솔을 등록할 수 있습니다.
💡 쉬운 설명
컴퓨터의 통신 장치를 연결하거나 해제할 때, 장치 정보가 메모리에서 제대로 지워지지 않아 발생하는 오류입니다. 이로 인해 잘못된 정보가 남아 있어 시스템이 엉뚱한 장치를 연결된 것으로 착각할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
serial: imx: serialize imx_uart_ports[] lifetime
imx_uart_probe() publishes its devm-allocated port in imx_uart_ports[]
before uart_add_one_port() because console setup uses the table. The entry
is not cleared when adding the port fails or after removal, leaving a
dangling pointer.
A sibling probe can register the shared console through that stale entry.
This was reproduced under KASAN on QEMU mcimx6ul-evk by unbinding a
sibling UART, unbinding the console UART and rebinding the sibling.
Keep the entry valid through uart_remove_one_port(), then clear it. Protect
port addition and removal together with their table updates so sibling
operations cannot interleave. Reject an occupied slot rather than
clobbering an active port during a duplicate-line probe.
📍 영향받는 시스템
Linux Kernel (imx UART driver 사용 모델)
⚔️ 공격 벡터
UART 장치의 연결(bind) 및 해제(unbind) 과정을 반복하여 메모리에 남은 잘못된 포트 정보를 이용한 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 imx_uart_ports[] 관리 로직을 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.