🇰🇷 한글 설명
Linux 커널의 accel/amdxdna 구성 요소에서 amdxdna_insert_pages() 함수 내의 BUG_ON 오류가 수정되었습니다. 권한이 없는 사용자 프로세스가 특정 조건에서 메모리 매핑을 조작할 경우 커널의 명시적 어설션(assertion)을 트리거하여 시스템을 중단시킬 수 있는 취약점입니다.
💡 쉬운 설명
특정 하드웨어 가속 기능을 사용하는 리눅스 컴퓨터에서, 일반 사용자가 특수한 명령을 보내 시스템을 강제로 멈추게 만들 수 있는 결함입니다. 시스템이 예상치 못한 메모리 상태를 만나면 스스로를 보호하기 위해 작동을 중단하는 현상을 이용합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
accel/amdxdna: Fix locally exploitable BUG_ON in amdxdna_insert_pages()
In amdxdna_insert_pages(), vm_flags_mod() sets VM_MIXEDMAP and clears
VM_PFNMAP. If an unprivileged userspace process mmaps a non-imported GEM
object and then calls madvise(MADV_DONTNEED), the PTEs will be
successfully cleared because VM_MIXEDMAP allows this (unlike VM_PFNMAP).
When userspace subsequently accesses the memory, drm_gem_shmem_fault()
handles the page fault and attempts to map the backing shmem page via
vmf_insert_pfn() which calls vmf_insert_pfn_prot(). Because the backing
shmem page is normal system memory (pfn_valid(pfn) is true) and the VMA
now has VM_MIXEDMAP set, won't this predictably trigger the explicit
assertion BUG_ON((vma->vm_flags & VM_MIXEDMAP) && pfn_valid(pfn))
Fix by removing the vm_flags_mod() call and replacing the vm_insert_pages()
pre-population with the handle_mm_fault() loop that was already used for
the import (dma-buf) path.
📍 영향받는 시스템
Linux kernel (accel/amdxdna 드라이버 포함 버전)
⚔️ 공격 벡터
권한이 없는 로컬 사용자가 메모리 매핑(mmap) 및 madvise(MADV_DONTNEED) 시스템 호출을 이용한 로컬 공격
🛡️ 대응 방법
amdxdna 드라이버의 vm_flags_mod() 호출을 제거하고 handle_mm_fault() 루프를 사용하도록 커널을 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.