🇰🇷 한글 설명
리눅스 커널의 mm/vmscan 구성 요소에서 하드웨어 오류(hwpoisoned)가 발생한 대형 폴리오(large folio)를 처리할 때 발생하는 취약점입니다. 메모리 회수 과정과 하드웨어 오류 발생이 동시에 일어날 경우, 잘못된 메모리 해제 시도로 인해 커널 패닉(Kernel Panic)이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터 메모리에 물리적인 오류가 생겼을 때, 시스템이 이를 정리하는 과정에서 충돌이 일어나 컴퓨터가 갑자기 멈추거나 꺼질 수 있는 문제입니다. 메모리 관리 방식의 논리적 오류로 인해 발생하는 현상입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mm/vmscan: fix hwpoisoned large folio handling in shrink_folio_list
In shrink_folio_list(), the hwpoisoned folio may be large folio, which
can't be handled by unmap_poisoned_folio(). For THP, try_to_unmap_one()
must be passed with TTU_SPLIT_HUGE_PMD to split huge PMD first and then
retry. Without TTU_SPLIT_HUGE_PMD, we will trigger null-ptr deref of
pvmw.pte. Even we passed TTU_SPLIT_HUGE_PMD, we will trigger a
WARN_ON_ONCE due to the page isn't in swapcache.
Since UCE is rare in real world, and race with reclaimation is more rare,
just skipping the hwpoisoned large folio is enough. memory_failure() will
handle it if the UCE is triggered again.
This happens when memory reclaim for large folio races with
memory_failure(), and will lead to kernel panic. The race is as
follows:
cpu0 cpu1
shrink_folio_list memory_failure
TestSetPageHWPoison
unmap_poisoned_folio
--> trigger BUG_ON due to
unmap_poisoned_folio couldn't
handle large folio
[
[email protected]: add comment to unmap_poisoned_folio()]
📍 영향받는 시스템
Linux Kernel (Large Folio 및 THP를 사용하는 버전)
⚔️ 공격 벡터
하드웨어 결함 또는 메모리 오류를 유도하여 커널 패닉을 일으키는 방식 (로컬/물리적 접근 필요)
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인하십시오.