[하루한줄] CVE-2021-1905: Qualcomm Adreno GPU memory mapping use-after-free
URL
CVE-2021-1905: Qualcomm Adreno GPU memory mapping use-after-free
Target
Qualcomm Adreno GPU
Explain
Qualcomm Adreno GPU는 여러 프로세스의 메모리 매핑을 동싱에 처리하는 과정에서 Use-after-free 취약점이 발생합니다. GPU는 여러 VMA(Linux Virtual Memory Access)와 메모리 매핑을 공유하고 하나의 매핑이 닫히면 kpsl_gpumem_vm_close
함수를 호출해 entry->memdesc.useraddr
필드를 초기화합니다. 문제는 해당 필드가 여러 VMA에 공유되며 entry가 이미 매핑되었는지 확인하는 데 사용되므로 나머지 VMA에 의도하지 않은 버그가 발생합니다. Linux kernel mmap implementation에 따라 서로 다른 프로세스에서 동시에 호출이 불가능한 함수 kpsl_get_unmapped_area
를 두 프로세스에서 같은 GPU 매핑에 대해 경쟁하도록 race condition을 발생시킬 수 있습니다. 따라서 구조체 kpsl_mem_entry
가 서로 다른 두 프로세스에서 동시에 사용되어 use-after-free로 이어질 수 있습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.