⚡ 1. 하드웨어 MMU 가드 페이지
KFENCE는 풀 내부의 각 객체 앞뒤에 `PROT_NONE`(Non-present) 가드 페이지를 샌드위치 구조로 배치함. 경계 1바이트 침범 시 즉각 페이지 폴트 발생.
kfence_protect_page(guard_addr, true);
⏱️ 2. 저비용 샘플링 게이트 메커니즘
KASAN처럼 모든 할당을 검사하지 않고, 주기(기본 100ms)마다 1개의 할당만 KFENCE 풀로 라우팅함. CPU 성능 영향이 1% 미만으로 프로덕션에 최적화됨.
kfence_sample_interval = 10 ms (lab)
🪦 3. 해제 페이지 UAF 원천 차단
객체가 `kfree()`되면 해당 객체 페이지 전체를 보호 상태(`kfence_protect`)로 전환함. 댕글링 포인터를 통한 사후 접근 시 감전되듯 즉각 폴트 발생.
BUG: KFENCE: use-after-free in ...