SMAP은 사전 무장 해제됨: 작동하지 않아야 할 스택 피벗이 커널 전체의 설계상의 약점을 드러낸 방법
Windows 11에서 커널 익스플로잇 체인을 작업하던 중, 사용자 모드 메모리로의 스택 피벗이 SMAP을 트리거하지 않는다는 것을 발견했습니다.
그 이유를 알아보기 위해 세 가지 실험을 작성했습니다. 요약하자면, 일반적인 syscall 진입 경로는 RFLAGS.AC=1과 함께 도착합니다. 표준 IOCTL 디스패치를 통해 도달하는 모든 코드에 대해 SMAP은 사실상 비활성화됩니다. 이는 MSRC가 2020년에 문서화한 내용과 일치합니다(Windows 커널은 SMAP을 염두에 두고 구축되지 않았으며, 이를 개조하려면 약 2,900개의 위치를 수정해야 합니다: 여기).
제 결론은 여기서 새롭지 않습니다. 현재 빌드에서 발생하는 아키텍처적 타협에 대한 실험적 확인일 뿐입니다. 저는 단지 이 사각지대에 빛을 비추고 싶었습니다. /u/Important_Map6928님이 제출했습니다.