🇰🇷 한글 설명
Linux 커널의 xHCI 드라이버에서 Isochronous Babble 및 버퍼 오버런 이벤트를 부적절하게 처리하는 취약점이 발견되었습니다. 드라이버가 오류 발생 시 TRB 소유권 해제를 잘못 판단하여, 남은 TRB가 해제되거나 새로운 TD에 의해 덮어씌워질 수 있는 문제가 있습니다.
💡 쉬운 설명
USB 장치가 데이터를 보낼 때 오류가 발생하면 컴퓨터가 데이터를 처리하는 과정에서 혼란을 겪어 시스템 오류가 발생할 수 있습니다. 이로 인해 데이터가 잘못 저장되거나 시스템이 불안정해질 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xhci: handle isoc Babble and Buffer Overrun events properly
xHCI 4.9 explicitly forbids assuming that the xHC has released its
ownership of a multi-TRB TD when it reports an error on one of the
early TRBs. Yet the driver makes such assumption and releases the TD,
allowing the remaining TRBs to be freed or overwritten by new TDs.
The xHC should also report completion of the final TRB due to its IOC
flag being set by us, regardless of prior errors. This event cannot
be recognized if the TD has already been freed earlier, resulting in
"Transfer event TRB DMA ptr not part of current TD" error message.
Fix this by reusing the logic for processing isoc Transaction Errors.
This also handles hosts which fail to report the final completion.
Fix transfer length reporting on Babble errors. They may be caused by
device malfunction, no guarantee that the buffer has been filled.
📍 영향받는 시스템
xHCI 드라이버를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
악의적인 동작을 수행하는 USB 장치를 연결하여 xHCI 드라이버의 오류 처리 로직을 유도
🛡️ 대응 방법
xHCI Isoc Transaction Error 처리 로직이 반영된 최신 Linux 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 보안 패치가 적용된 최신 버전인지 확인합니다.