CVE-2026-89801 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 16.

Linux 커널에서 다음 취약점이 해결되었습니다:

drm/nouveau/uvmm: OP_UNMAP_SPARSE 실패 시 premature region free 수정

nouveau_uvmm_bind_job_submit()의 OP_UNMAP_SARSE 분기에서 op->reg는 nouveau_uvma_region_find()로부터 설정되는데, 이 함수는 영역을 조회할 뿐 참조(reference)를 취하지 않습니다. 영역의 유일한 참조는 uvmm->region_mt 내에서의 멤버십에 의해 유지됩니다. 두 가지 실패 경로가 op->reg를 설정된 상태로 남깁니다: 영역이 사용 중일 때의 -ENOENT 체크와 drm_gpuvm_sm_unmap_ops_create() 실패입니다. 바로 아래에 있는 sibling인 nouveau_uvmm_sm_unmap_prepare()의 실패는 op->reg를 지웁니다; 그러나 이 두 가지는 그렇지 않습니다.

unwind_continue는 한 단계 뒤로 이동하므로, 실행된 작업(op)은 unwind 루프에서 건너뛰어지고 그 op->reg가 설정된 상태로 남습니다. 이후 nouveau_uvmm_bind_job_cleanup()이 if (op->reg) 분기로 진입하여 해당 영역에 대해 nouveau_uvma_region_remove() 및 nouveau_uvma_region_put()를 호출합니다. 이는 트리의 유일한 참조를 해제하고, 이 작업에서 생성되지 않은 영역을 해제(free)하게 됩니다. cleanup 루프 위의 주석은 깨진 불변식(invariant)을 문서화합니다: 제출 실패 시 op->reg는 NULL이어야 합니다.

이로 인해 관련 없는 실패 상황에서 활성 상태의 영역이 해제되는데, drm_gpuvm_sm_unmap_ops_create()가 -ENOMEM을 반환할 때 단일 작업으로 접근 가능합니다. 다른 작업이 동일한 영역을 소유하고 있다면, 해당 작업의 cleanup 과정에서 이미 해제된 영역에 대한 제거 및 put 연수가 발생하여 use-after-free 취약점이 초래됩니다. 두 실패 경로 모두에서 op->reg를 지워야 합니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

출처

Want to know what is going to be exploited?

We predict KEV entries!