🇰🇷 한글 설명
Linux 커널의 c67x00 USB 드라이버에서 isochronous URB의 마지막 패킷 생성 실패 시 Use-After-Free 취약점이 발생합니다. TD 생성 실패 시 엔드포인트 스케줄링 상태를 업데이트하기 전에 URB를 반환하여, 이미 해제된 메모리에 접근할 수 있는 문제가 있습니다.
💡 쉬운 설명
USB 장치가 데이터를 주고받는 과정에서 오류가 발생했을 때, 컴퓨터가 이미 사용이 끝난 메모리 영역을 다시 참조하려고 시도하는 문제입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
USB: c67x00: fix use-after-free in c67x00_add_iso_urb()
When TD creation fails for the last packet of an isochronous URB,
c67x00_add_iso_urb() gives the URB back before updating the endpoint
scheduling state.
c67x00_giveback_urb() frees the URB private data, and the completion
callback may release the final URB reference. The following accesses to
urbp->ep_data, urb->interval, and urbp->cnt can therefore use freed
memory.
Update next_frame and cnt before giving back the failed final packet,
making the giveback the last operation that uses the URB and its private
data.
📍 영향받는 시스템
Linux kernel (c67x00 USB driver 포함 버전)
⚔️ 공격 벡터
특수하게 조작된 USB 장치를 연결하여 isochronous URB 전송 중 오류를 유도함으로써 메모리 손상 유발
🛡️ 대응 방법
c67x00 드라이버의 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전인지 배포판 보안 공지를 통해 확인