🇰🇷 한글 설명
Linux 커널의 accel/qaic 드라이버 내 find_and_map_user_pages() 함수에서 데이터 전송 크기가 0인 경우를 적절히 처리하지 못하는 취약점입니다. 이로 인해 메모리 할당 없이 특정 함수가 호출되어 시스템에 일반 보호 오류(General Protection Fault)를 유발할 수 있습니다.
💡 쉬운 설명
데이터를 주고받을 때 크기가 0인 잘못된 요청이 들어오면 컴퓨터가 이를 제대로 처리하지 못하고 갑자기 멈추거나 오류를 일으킬 수 있는 문제입니다. 이는 시스템의 안정성을 해칠 수 있는 결함입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
accel/qaic: Treat remaining == 0 as error in find_and_map_user_pages()
Currently, if find_and_map_user_pages() takes a DMA xfer request from the
user with a length field set to 0, or in a rare case, the host receives
QAIC_TRANS_DMA_XFER_CONT from the device where resources->xferred_dma_size
is equal to the requested transaction size, the function will return 0
before allocating an sgt or setting the fields of the dma_xfer struct.
In that case, encode_addr_size_pairs() will try to access the sgt which
will lead to a general protection fault.
Return an EINVAL in case the user provides a zero-sized ALP, or the device
requests continuation after all of the bytes have been transferred.
📍 영향받는 시스템
Linux kernel (accel/qaic 드라이버 포함 버전)
⚔️ 공격 벡터
사용자 공간에서 크기가 0인 DMA 전송 요청을 보내거나 장치로부터 잘못된 전송 상태를 수신하여 시스템 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 해당 드라이버의 오류 처리 로직을 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 제조사의 보안 공지와 대조합니다.