🇰🇷 한글 설명
Linux 커널에서 THP(Transparent Huge Page) 마이그레이션 중 deferred split 스캔이 PMD 마이그레이션 엔트리에 동시 접근하면 잘못된 주소를 참조하여 커널 페이지 폴트가 발생할 수 있습니다. 이 문제는 PMD 마이그레이션 엔트리를 확인하고 조기에 반환하도록 수정되었습니다.
💡 쉬운 설명
리눅스 커널이 큰 메모리 페이지를 옮기는 도중 잘못된 주소를 읽어 시스템이 멈추거나 오류를 낼 수 있는 문제입니다. 커널을 최신 보안 업데이트로 올리면 해결됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mm/huge_memory: fix dereferencing invalid pmd migration entry
When migrating a THP, concurrent access to the PMD migration entry during
a deferred split scan can lead to an invalid address access, as
illustrated below. To prevent this invalid access, it is necessary to
check the PMD migration entry and return early. In this context, there is
no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the
equality of the target folio. Since the PMD migration entry is locked, it
cannot be served as the target.
Mailing list discussion and explanation from Hugh Dickins: "An anon_vma
lookup points to a location which may contain the folio of interest, but
might instead contain another folio: and weeding out those other folios is
precisely what the "folio != pmd_folio((*pmd)" check (and the "risk of
replacing the wrong folio" comment a few lines above it) is for."
BUG: unable to handle page fault for address: ffffea60001db008
CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60
Call Trace:
<TASK>
try_to_migrate_one+0x28c/0x3730
rmap_walk_anon+0x4f6/0x770
unmap_folio+0x196/0x1f0
split_huge_page_to_list_to_order+0x9f6/0x1560
deferred_split_scan+0xac5/0x12a0
shrinker_debugfs_scan_write+0x376/0x470
full_proxy_write+0x15c/0x220
vfs_write+0x2fc/0xcb0
ksys_write+0x146/0x250
do_syscall_64+0x6a/0x120
entry_SYSCALL_64_after_hwframe+0x76/0x7e
The bug is found by syzkaller on an internal kernel, then confirmed on
upstream.
📍 영향받는 시스템
수정 이전의 Linux 커널 (THP 및 deferred split 기능을 사용하는 시스템, 업스트림 6.14 계열 포함)
⚔️ 공격 벡터
로컬 사용자가 shrinker debugfs 등을 통해 deferred split 스캔을 유발하여 커널 충돌(서비스 거부)을 일으킬 수 있음
🛡️ 대응 방법
배포판 공급사가 제공하는 최신 Linux 커널 보안 업데이트를 설치하고 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지에서 CVE-2025-37958 수정 포함 여부로 확인하며, 해당 수정이 포함된 패치 버전 이상이면 안전합니다.