CVE-2026-45837 in Linux
요약
\~에 의해 VulDB • 2026. 06. 02.
리눅스 커널에서 다음 취약점이 해결되었습니다:
bpf: fork 시 arena_vm_close에서의 use-after-free 수정
arena_vm_open()은 vml->mmap_count만 증가시키지만, 자식 VMA를 arena->vma_list에 등록하지 않습니다. vml->vma는 항상 부모 VMA를 가리키므로, 부모에서 munmap을 호출한 후 해당 포인터는 더 이상 유효하지 않은 상태(dangling pointer)가 됩니다. 만약 자식 프로세스가 bpf_arena_free_pages()를 호출하면, zap_pages()가 stale한 vml->vma를 읽게 되어 use-after-free가 발생합니다.
이 문제를 VM_DONTCOPY 플래그를 사용하여 fork 시 arena VMA가 상속되지 않도록 하고, may_split 콜백을 통해 VMA 분할을 방지함으로써 해결합니다.
또한 .mremap 콜백이 -EINVAL를 반환하는 경우 mremap을 거부합니다. 전체 arena VMA에 대한 동일 크기 mremap(MREMAP_FIXED)은 다음 경로를 통해 copy_vma()에 도달합니다:
check_prep_vma() - new_len == old_len이므로 0을 조기에 반환하고 VM_DONTEXPAND 검사를 건너뜀 prep_move_vma() - vm_start == old_addr이고 vm_end == old_addr + old_len이므로 may_split이 결코 호출되지 않음 move_vma() copy_vma_and_data() copy_vma() vm_area_dup() - vm_private_data(vml 포인터) 복사 vm_ops->open() - vml->mmap_count 증가 vm_ops->mremap() - -EINVAL 반환, 롤백 시 새 VMA를 unmap
참조 카운트(refcount)는 롤백 시 수행되는 arena_vm_close가 원래 VMA와 공유하는 vml을 해제하지 않도록 보장합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.