🔍 CVE-2025-21939

7.8
CVSS Score
HIGH
2025-04-01
2026-10-15 22:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 drm/xe/hmm 구성 요소에서 notifier lock을 획득하지 않고 struct page 포인터를 역참조하는 취약점이 발견되었습니다. 이로 인해 소유하지 않은 페이지를 dirty 또는 accessed 상태로 표시하거나 잘못된 메모리 주소에 접근할 위험이 있습니다.

💡 쉬운 설명

컴퓨터의 핵심 운영체제인 리눅스에서 메모리를 관리할 때, 안전 장치(잠금)를 확인하지 않고 메모리 주소를 읽으려다 발생하는 오류입니다. 이 오류를 이용하면 시스템이 불안정해지거나 잘못된 데이터에 접근할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: drm/xe/hmm: Don't dereference struct page pointers without notifier lock The pnfs that we obtain from hmm_range_fault() point to pages that we don't have a reference on, and the guarantee that they are still in the cpu page-tables is that the notifier lock must be held and the notifier seqno is still valid. So while building the sg table and marking the pages accesses / dirty we need to hold this lock with a validated seqno. However, the lock is reclaim tainted which makes sg_alloc_table_from_pages_segment() unusable, since it internally allocates memory. Instead build the sg-table manually. For the non-iommu case this might lead to fewer coalesces, but if that's a problem it can be fixed up later in the resource cursor code. For the iommu case, the whole sg-table may still be coalesced to a single contigous device va region. This avoids marking pages that we don't own dirty and accessed, and it also avoid dereferencing struct pages that we don't own. v2: - Use assert to check whether hmm pfns are valid (Matthew Auld) - Take into account that large pages may cross range boundaries (Matthew Auld) v3: - Don't unnecessarily check for a non-freed sg-table. (Matthew Auld) - Add a missing up_read() in an error path. (Matthew Auld) (cherry picked from commit ea3e66d280ce2576664a862693d1da8fd324c317)

📍 영향받는 시스템

Linux kernel (drm/xe/hmm 모듈을 사용하는 시스템)

⚔️ 공격 벡터

로컬 공격자가 특정 메모리 관리 시나리오를 유도하여 잘못된 메모리 참조를 발생시킴

🛡️ 대응 방법

해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트

🔧 검증 코드

출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel