🇰🇷 한글 설명
Linux 커널의 memfd_luo 모듈 내 put_folios 정리 과정에서 물리 주소 변환 오류가 발견되었습니다. PFN(Page Frame Number)을 물리 주소로 올바르게 변환하지 않고 사용하며, 데이터가 없는 영역(hole)에 대한 유효성 검사가 누락되어 잘못된 메모리 주소를 참조할 수 있습니다.
💡 쉬운 설명
컴퓨터 메모리의 주소를 계산할 때 잘못된 숫자를 사용하여 엉뚱한 메모리 위치를 확인하는 오류입니다. 이로 인해 데이터가 비어 있는 공간을 실제 데이터가 있는 곳으로 착각하여 시스템 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mm/memfd_luo: fix physical address conversion in put_folios cleanup
In memfd_luo_retrieve_folios()'s put_folios cleanup path:
1. kho_restore_folio() expects a phys_addr_t (physical address) but
receives a raw PFN (pfolio->pfn). This causes kho_restore_page() to
check the wrong physical address (pfn << PAGE_SHIFT instead of the
actual physical address).
2. This loop lacks the !pfolio->pfn check that exists in the main
retrieval loop and memfd_luo_discard_folios(), which could
incorrectly process sparse file holes where pfn=0.
Fix by converting PFN to physical address with PFN_PHYS() and adding
the !pfolio->pfn check, matching the pattern used elsewhere in this file.
This issue was identified by the AI review.
https://sashiko.dev/#/patchset/
[email protected]
📍 영향받는 시스템
Linux Kernel (memfd_luo 모듈을 사용하는 버전)
⚔️ 공격 벡터
메모리 관리 로직의 취약점을 이용한 잘못된 물리 주소 참조 및 메모리 무결성 훼손
🛡️ 대응 방법
PFN을 물리 주소로 변환하는 PFN_PHYS() 함수를 적용하고, pfn이 0인 경우에 대한 유효성 검사 로직을 추가한 최신 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.