🇰🇷 한글 설명
Linux 커널의 xHCI 드라이버에서 등시성(Isochronous) 링 언더런/오버런 이벤트 처리 중 레이스 컨디션 취약점이 발견되었습니다. 인터럽트 지연이 발생할 경우 잘못된 TRB 포인터를 참조하여 데이터 손실이나 버퍼 Use-After-Free(UAF)가 발생할 수 있습니다.
💡 쉬운 설명
USB 장치와 컴퓨터 사이의 데이터 전송 과정에서 처리 속도 차이로 인해 데이터가 꼬이는 문제가 있습니다. 이로 인해 데이터가 사라지거나 시스템 메모리 오류가 발생하여 보안 위협이 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usb: xhci: Fix isochronous Ring Underrun/Overrun event handling
The TRB pointer of these events points at enqueue at the time of error
occurrence on xHCI 1.1+ HCs or it's NULL on older ones. By the time we
are handling the event, a new TD may be queued at this ring position.
I can trigger this race by rising interrupt moderation to increase IRQ
handling delay. Similar delay may occur naturally due to system load.
If this ever happens after a Missed Service Error, missed TDs will be
skipped and the new TD processed as if it matched the event. It could
be given back prematurely, risking data loss or buffer UAF by the xHC.
Don't complete TDs on xrun events and don't warn if queued TDs don't
match the event's TRB pointer, which can be NULL or a link/no-op TRB.
Don't warn if there are no queued TDs at all.
Now that it's safe, also handle xrun events if the skip flag is clear.
This ensures completion of any TD stuck in 'error mid TD' state right
before the xrun event, which could happen if a driver submits a finite
number of URBs to a buggy HC and then an error occurs on the last TD.
📍 영향받는 시스템
xHCI 1.1 이상을 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
시스템 부하를 높여 인터럽트 처리를 지연시킴으로써 레이스 컨디션을 유도하여 메모리 오류 발생
🛡️ 대응 방법
xHCI 이벤트 처리 로직이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인