ARM64 베어메탈 하이퍼바이저는 간접 분기 뒤 잘못 예측된 대상에서 실행 가능하게 매핑된 MMIO의 잠긴 bootrom을 추측적으로 읽으며 멈췄습니다. MMIO를 Device로 지정해도 추측적 데이터 접근만 막을 뿐 명령어 인출은 차단하지 못했고, 페이지에 NX를 적용하자 커널 패치 없이 Android가 반년 만에 부팅됐습니다. 단일 Cortex-A53 시스템의 디버깅 사례지만 실행 권한이 보안 방어뿐 아니라 장치 메모리의 기능적 동작을 좌우함을 보여줍니다.
Tech로 돌아가기
Tech
ARM64 MMIO의 NX 설정이 추측 실행 부팅 장애를 해결했습니다
ARM 장치 메모리는 Device 속성만 믿지 말고 추측적 명령 인출을 막도록 비실행 매핑도 적용해야 합니다.