🇰🇷 한글 설명
리눅스 커널의 pagemap 스캔 과정에서 young/dirty 비트가 손실될 수 있는 취약점이 발견되었습니다. 기존의 ptep_get과 ptep_modify_prot_start 사이의 레이스 컨디션으로 인해 페이지 상태 정보가 유실될 수 있었으나, 원자적 연산을 사용하는 방식으로 수정되었습니다.
💡 쉬운 설명
컴퓨터 메모리의 상태를 기록하는 과정에서 데이터가 변경되는 찰나의 순간을 놓쳐 정보가 사라질 수 있는 문제입니다. 이로 인해 메모리 관리 시스템이 페이지의 상태를 정확히 파악하지 못할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fs/proc/task_mmu: fix loss of young/dirty bits during pagemap scan
make_uffd_wp_pte() was previously doing:
pte = ptep_get(ptep);
ptep_modify_prot_start(ptep);
pte = pte_mkuffd_wp(pte);
ptep_modify_prot_commit(ptep, pte);
But if another thread accessed or dirtied the pte between the first 2
calls, this could lead to loss of that information. Since
ptep_modify_prot_start() gets and clears atomically, the following is the
correct pattern and prevents any possible race. Any access after the
first call would see an invalid pte and cause a fault:
pte = ptep_modify_prot_start(ptep);
pte = pte_mkuffd_wp(pte);
ptep_modify_prot_commit(ptep, pte);
📍 영향받는 시스템
Linux kernel (pagemap scan 관련 기능이 포함된 버전)
⚔️ 공격 벡터
멀티스레드 환경에서 특정 시점에 페이지 테이블 엔트리(PTE)에 접근하여 레이스 컨디션을 유발하는 방식
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인하십시오.