Linux Page Table Isolation (KPTI/KAISER) 패치 배경 및 개요
Source
Evernote/Technote scraps/The mysterious case of the Linux Page Table Isolation patches.md
Summary
이 문서는 2017년 말 리눅스 커널에 긴급하게 적용된 ‘페이지 테이블 격리(Page Table Isolation, 당시 KAISER로 불림)’ 패치의 배경과 의미를 분석한다. 오스트리아 그라츠 기술대학교(TU Graz) 연구진이 제안한 이 패치는 사용자 공간에서 실행 중일 때 커널 가상 주소 공간을 메모리 관리 하드웨어에서 언매핑(unmap)하여, 비권한 사용자 코드가 커널 주소 범위를 식별하는 것을 방지한다. 이는 기존 KASLR(커널 주소 공간 레이아웃 랜덤화)의 효과를 유지하기 위한 조치로, 당시 embargo 상태였던 모든 가상 메모리 아키텍처에 영향을 미치는 심각한 하드웨어 보안 취약점(사후 Spectre로 확인됨)에 대한 소프트웨어적 완화책으로 급속히 머지되었다. 문서 작성 당시에는 정확한 공격 벡터가 공개되지 않았으나, Rowhammer 변종 공격이나 가상화 환경(EC2, GCE)에 대한 영향 가능성이 시사되었다.
Key Points
- KAISER(후에 KPTI로 명칭 변경) 패치는 사용자 모드 실행 시 커널 페이지 테이블을 분리하여 커널 주소 누출을 방지한다.
- 이 패치는 당시 embargo 상태였던 광범위한 CPU 아키텍처 보안 취약점에 대한 긴급한 소프트웨어 완화책이다.
- 기존 커널 패치 프로세스와 달리 매우 짧은 기간(3개월 미만) 내에 머지되어 그 심각성을 시사한다.
- 주요 목적은 KASLR의 무력화를 막고, 비권한 프로세스가 커널 가상 주소 공간을 추론하는 것을 어렵게 만드는 것이다.
- 완전한 해결을 위해서는 하드웨어 변경이 필요하며, 소프트웨어 패치는 성능 저하를 초래할 수 있다.