🇰🇷 한글 설명
Linux 커널의 drm/v3d 드라이버에서 발생하는 취약점으로, 사용자가 조작된 멀티싱크 확장을 제공할 경우 무한 루프가 발생할 수 있습니다. 공격자가 자기 참조 구조를 가진 확장을 전달하면 커널 컨텍스트에서 CPU 코어를 무한히 점유하여 시스템 성능을 저하시킵니다.
💡 쉬운 설명
컴퓨터의 그래픽 처리 관련 기능에서 잘못된 명령을 보내 시스템이 무한 반복 작업에 빠지게 만드는 버그입니다. 이로 인해 컴퓨터의 CPU 사용량이 100%가 되어 시스템이 멈추거나 느려질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/v3d: Reject empty multisync extension to prevent infinite loop
v3d_get_extensions() walks a userspace-provided singly-linked list of
ioctl extensions without any bound on the chain length. A local user
can craft a self-referential extension (ext->next == &ext) with zero
in_sync_count and out_sync_count, which bypasses the existing duplicate-
extension guard:
if (se->in_sync_count || se->out_sync_count)
return -EINVAL;
The guard never fires because v3d_get_multisync_post_deps() returns
immediately when count is zero, leaving both fields at zero on every
iteration. The result is an infinite loop in kernel context, blocking
the calling thread and pegging a CPU core indefinitely.
Fix this by rejecting a multisync extension where both in_sync_count
and out_sync_count are zero in v3d_get_multisync_submit_deps(). An
empty multisync carries no synchronization information and serves no
useful purpose, so returning -EINVAL for such an extension is the
correct defense against this attack vector.
📍 영향받는 시스템
Linux kernel (drm/v3d driver component)
⚔️ 공격 벡터
로컬 사용자가 조작된 자기 참조(self-referential) ioctl 확장을 커널에 전달
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.