🇰🇷 한글 설명
Linux 커널의 drm/xe 드라이버에서 exec IOCTL 호출 시 외부 BO(Buffer Object)의 커널 펜스 의존성을 제대로 확인하지 않는 취약점이 발견되었습니다. 이로 인해 커널 작업이 완료되기 전에 사용자 작업이 실행되어 메모리 이동 중인 데이터를 읽거나 쓰는 레이스 컨디션이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 그래픽 메모리를 관리할 때, 다른 작업이 끝나기를 기다려야 하는데 이 과정을 건너뛰는 문제가 있습니다. 이 때문에 데이터가 옮겨지는 도중에 잘못된 메모리에 접근하여 시스템 오류나 데이터 손상이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/xe: Wait on external BO kernel fences in exec IOCTL
Before arming a user job, xe_exec_ioctl() only added the VM's
dma-resv KERNEL slot as a dependency. That slot covers rebinds and
the kernel operations of the VM's private BOs, but not external BOs
(bo->vm == NULL), which carry their kernel operations (evictions,
moves, ...) in their own dma-resv KERNEL slot.
The DMA_RESV_USAGE_KERNEL slot is the cross-driver contract for
memory management operations that must complete before the BO or its
backing store may be used: any accessor is required to wait on the
KERNEL fences before touching the resv. By skipping the external BOs'
KERNEL slots, the exec path violated that contract and could schedule
a user job while a kernel operation on an external BO mapped by the VM
was still in flight, racing against it and potentially reading or
writing memory that was being moved.
Replace the VM-only dependency with an iteration over every object
locked by the exec, adding each object's KERNEL slot as a job
dependency. This covers the VM resv (rebinds and private BOs) as well
as every external BO, mirroring the drm_gpuvm_resv_add_fence() call
that later publishes the job fence to the same set of objects.
Long-running mode continues to skip this, as before.
(cherry picked from commit a6b842acf3ddd1efc53a56de9260cfa718fb35e7)
📍 영향받는 시스템
Linux kernel (drm/xe driver 사용 환경)
⚔️ 공격 벡터
로컬 사용자가 조작된 IOCTL 호출을 통해 메모리 레이스 컨디션을 유발하여 비정상적인 메모리 접근 시도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 drm/xe 드라이버의 의존성 확인 로직 수정
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인
📊 CVSS Vector String
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux