🇰🇷 한글 설명
Linux 커널의 Xen gntdev 구성 요소에서 ioctl 호출 시 오류 처리 미흡으로 인해 메모리 누수 및 대기 중인 리스트 항목이 발생하는 취약점입니다. gntdev_ioctl_map_grant_ref() 함수가 사용자 공간으로 결과를 복사하는 데 실패할 경우, 할당된 참조를 해제하지 않고 -EFAULT를 반환하여 리소스가 남게 됩니다.
💡 쉬운 설명
시스템의 특정 기능을 사용할 때 오류가 발생하면, 사용했던 메모리를 제대로 정리하지 못하고 계속 쌓아두는 버그입니다. 이 문제가 반복되면 시스템 메모리가 부족해지거나 시스템이 불안정해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xen/gntdev: fix error handling in ioctl
When gntdev_ioctl_map_grant_ref() fails to copy the operation result
back to userspace after successfully adding the mapping to the list,
the error path returns -EFAULT without releasing the reference
acquired by gntdev_alloc_map(). The mapping remains in priv->maps
with a refcount of 1, causing a memory leak and a dangling list
entry.
Additionally, gntdev_add_map() may modify map->index to avoid overlap
with existing mappings. Therefore, the index returned to userspace
must be obtained after gntdev_add_map() completes.
Fix this by holding the mutex across gntdev_add_map(), retrieving
the correct index, and copy_to_user(). If copy_to_user() fails,
remove the mapping from the list and release the reference while
still holding the lock.
Fix these issues by properly handling all error cases.
📍 영향받는 시스템
Xen 가상화 환경을 사용하는 Linux 커널 (gntdev 모듈 포함 버전)
⚔️ 공격 벡터
로컬 공격자가 특수하게 조작된 ioctl 시스템 호출을 반복하여 메모리 누수를 유발할 수 있음
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 gntdev의 오류 처리 로직을 수정해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.