🇰🇷 한글 설명
Linux 커널의 Aspeed UDC 드라이버에서 DMA 버퍼 할당 실패 시 이를 확인하지 않고 참조하여 발생하는 취약점입니다. 할당 실패 시 적절한 오류 처리가 이루어지지 않아 시스템 불안정이나 커널 패닉을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품이 데이터를 저장할 공간을 빌려오려다 실패했는데도, 컴퓨터가 그 공간이 있는 줄 알고 계속 사용하려다 오류가 발생하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 꺼질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usb: gadget: aspeed_udc: check endpoint DMA allocation
ast_udc_probe() allocates a coherent DMA buffer used as the backing store
for endpoint buffers. ast_udc_init_ep() derives per-endpoint buffer
pointers from udc->ep0_buf, so a failed allocation is dereferenced during
probe.
Check the allocation before endpoint setup. The existing probe error path
called ast_udc_remove(), which unregisters the gadget unconditionally and
is not safe before usb_add_gadget_udc() succeeds. Add a local cleanup
helper for probe failures so pre-registration failures only unwind the
resources that were actually initialized.
This was found by a local static analysis checker for unchecked allocator
returns while scanning Linux 6.16. The change was checked by applying it
to current mainline and by running checkpatch. I do not have access to
Aspeed UDC hardware, so no runtime testing was performed.
📍 영향받는 시스템
Linux kernel 6.16 미만 버전 중 Aspeed UDC 드라이버를 사용하는 시스템
⚔️ 공격 벡터
로컬 공격자가 메모리 할당 실패를 유도하여 커널 패닉을 일으키는 방식 (Local)
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인하십시오.