🇰🇷 한글 설명
Linux 커널 DRM GEM shmem 드라이버에서 dma_buf 필드 사용을 되돌리는 커밋입니다. 기존 방식은 사용자 공간이 마지막 GEM 핸들을 해제하면 dma_buf 필드가 NULL이 되어 NULL 포인터 역참조가 발생했으며, 이를 .import_attach->dmabuf 사용으로 복원합니다.
💡 쉬운 설명
리눅스 그래픽 기능에서 메모리 버퍼를 관리하는 방식에 결함이 있어 잘못된 주소를 참조하면서 시스템이 비정상 종료될 수 있었습니다. 이 수정은 안전한 방식으로 되돌려 해당 문제를 해결합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Revert "drm/gem-shmem: Use dma_buf from GEM object instance"
This reverts commit 1a148af06000e545e714fe3210af3d77ff903c11.
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
📍 영향받는 시스템
수정 이전의 Linux 커널 (DRM gem-shmem 드라이버를 사용하는 그래픽 기능 활성화 시스템)
⚔️ 공격 벡터
로컬 사용자가 GEM 핸들을 해제하는 과정에서 NULL 포인터 역참조를 유발해 커널 패닉 또는 서비스 거부를 일으킬 수 있음
🛡️ 대응 방법
배포판 제공 최신 커널 패키지로 업데이트 후 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고문에서 확인된 패치 적용 버전과 비교하여 수정 여부를 판단합니다.