🇰🇷 한글 설명
Linux 커널 DRM 서브시스템에서 GEM 객체의 dma_buf 필드를 사용하던 기존 변경을 되돌립니다. 사용자 공간이 마지막 GEM 핸들을 해제하면 dma_buf 필드가 NULL이 되어 NULL 포인터 역참조가 발생할 수 있었습니다. 이를 수정하기 위해 .import_attach->dmabuf를 다시 사용하도록 복원합니다.
💡 쉬운 설명
그래픽 메모리 객체를 관리하는 리눅스 커널 코드에서 잘못된 참조 방식 때문에 시스템이 비정상 종료될 수 있는 문제였습니다. 이 패치는 참조 방식을 원래대로 되돌려 해당 충돌 가능성을 제거합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Revert "drm/gem-framebuffer: Use dma_buf from GEM object instance"
This reverts commit cce16fcd7446dcff7480cd9d2b6417075ed81065.
The dma_buf field in struct drm_gem_object is not stable over the
object instance's lifetime. The field becomes NULL when user space
releases the final GEM handle on the buffer object. This resulted
in a NULL-pointer deref.
Workarounds in commit 5307dce878d4 ("drm/gem: Acquire references on
GEM handles for framebuffers") and commit f6bfc9afc751 ("drm/framebuffer:
Acquire internal references on GEM handles") only solved the problem
partially. They especially don't work for buffer objects without a DRM
framebuffer associated.
Hence, this revert to going back to using .import_attach->dmabuf.
v3:
- cc stable
📍 영향받는 시스템
DRM/GEM 프레임버퍼 기능을 사용하는 수정 전 Linux 커널 버전 (그래픽 드라이버 사용 시스템)
⚔️ 공격 벡터
로컬 사용자 공간 프로세스가 GEM 핸들을 해제하는 타이밍을 조작해 커널 NULL 포인터 역참조를 유발하여 서비스 거부(커널 패닉)를 일으킬 수 있음
🛡️ 대응 방법
패치된 Linux 커널 버전으로 업데이트 (배포판 보안 업데이트 적용)
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고문에서 CVE-2025-38673 패치가 포함된 버전과 비교하여, 같거나 그 이후 버전이면 수정된 것입니다.