🇰🇷 한글 설명
Linux 커널의 iommufd 구성 요소에서 vevent 메모리 할당이 스핀락(spinlock) 내부에서 수행되어 발생하는 취약점입니다. 사용자 공간에서 큐 크기를 조절하여 커널의 원자적 메모리 예비군을 고갈시킬 수 있는 위험이 있습니다.
💡 쉬운 설명
사용자가 악의적으로 아주 큰 메모리 요청을 보내 컴퓨터의 중요한 메모리 자원을 모두 써버리게 만들 수 있는 문제입니다. 이로 인해 시스템이 느려지거나 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iommufd: Move vevent memory allocation outside spinlock
The veventq memory allocation happens inside the spinlock. Given its depth
is decided by the user space, this leaves a vulnerability, where userspace
can allocate large queues to exhaust atomic memory reserves.
Move the allocation outside the spinlock and use GFP_NOWAIT, which can fail
fast under memory pressure without dipping into the GFP_ATOMIC reserves or
direct-reclaiming from the threaded IRQ handler. On allocation failure,
queue the lost_events_header (so userspace learns of the drop) and return
-ENOMEM so the caller learns of the kernel-side memory pressure.
This is intentionally distinct from the queue-overflow path, which also
queues the lost_events_header but returns 0: a full queue is an expected
userspace-pacing condition rather than a kernel error.
A subsequent change will cap the upper bound of the veventq_depth.
📍 영향받는 시스템
iommufd 모듈을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
사용자 공간에서 veventq의 깊이(depth)를 매우 크게 설정하여 메모리 할당을 유도하는 방식
🛡️ 대응 방법
메모리 할당 로직을 스핀락 외부로 이동시키고 GFP_NOWAIT 플래그를 사용하는 최신 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.