🇰🇷 한글 설명
Linux 커널의 xhci 드라이버에서 debugfs 파일 읽기 시 NULL 포인터 역참조 취약점입니다. max_ports가 Supported Protocol 기능으로 보고된 포트 수보다 많거나 다양한 속도의 포트 간 간격이 있을 때 port->rhub이 NULL이 되어 발생합니다. 패치는 NULL 체크를 추가하고 rhub 참조 없이 portli를 16진수로 출력합니다.
💡 쉬운 설명
USB 컨트롤러 드라이버의 진단 파일을 읽을 때 존재하지 않는 메모리 주소에 접근하는 버그입니다. 포트 정보가 시스템과 맞지 않을 때 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xhci: Fix NULL pointer dereference when reading portli debugfs files
Michal reported and debgged a NULL pointer dereference bug in the
recently added portli debugfs files
Oops is caused when there are more port registers counted in
xhci->max_ports than ports reported by Supported Protocol capabilities.
This is possible if max_ports is more than maximum port number, or
if there are gaps between ports of different speeds the 'Supported
Protocol' capabilities.
In such cases port->rhub will be NULL so we can't reach xhci behind it.
Add an explicit NULL check for this case, and print portli in hex
without dereferencing port->rhub.
📍 영향받는 시스템
xhci 드라이버를 포함한 Linux 커널 (최신 debugfs portli 기능 포함 버전)
⚔️ 공격 벡터
로컬 사용자가 debugfs 파일 접근 권한으로 포트 정보 읽기 시도
🛡️ 대응 방법
Linux 커널을 xhci NULL 포인터 체크 패치가 포함된 버전으로 업데이트
🔧 검증 코드
명령어 실행 후 오류 없이 16진수 포트 정보가 출력되면 정상, Oops 또는 NULL 포인터 오류가 나면 취약 상태
cat /sys/kernel/debug/usb/xhci/*/portli 2>&1 | head -5