CVE-2020-0674
CVE-2020-0674는 레거시 jscript 엔진의 use-after-free 취약점입니다. Internet Explorer에서 트리거할 수 있습니다. 여기 있는 익스플로잇은 maxpl0it이 작성했지만, 취약점 자체는 Qihoo 360에 의해 실제 공격에서 사용되는 것이 발견되었습니다. 이 익스플로잇은 단순히 계산기를 실행합니다.
익스플로잇 분석 글은 여기에서 확인할 수 있습니다.
취약점 개요
- 이 취약점은 비교자 함수를 사용할 때 Array
sort 함수에 존재합니다.
- 비교자 함수에 제공되는 두 인수는 가비지 컬렉터에 의해 추적되지 않으므로 GC가 호출된 후 해제된 메모리를 가리키게 됩니다.
익스플로잇 참고 사항
- 이 익스플로잇은 특히 Windows 7용으로 작성되었지만, 큰 어려움 없이 포팅할 수 있을 것입니다.
- 이 익스플로잇은 x64 버전의 Internet Explorer용으로 작성되었으며, 따라서 다음 브라우저 구성에서 실행되며 (테스트되었습니다):
- IE 8 (x64 빌드)
- IE 9 (x64 빌드)
- IE 10 (Enhanced Protected Mode 활성화 또는 TabProcGrowth 활성화 상태)
- IE 11 (Enhanced Protected Mode 활성화 또는 TabProcGrowth 활성화 상태)
- Windows 7에서 Enhanced Protected Mode는 단순히 브라우저 프로세스의 x64 버전을 활성화하므로, 추가 샌드박스가 없는 것에 가깝지 샌드박스 탈출은 아닙니다. 아이러니하게도 이 익스플로잇은 x64용이므로 EPM이 실제로 작동을 가능하게 합니다.
- 이 익스플로잇은 EMET을 완전히 우회하도록 만들어진 것은 아닙니다 (스택 피벗 탐지 우회만 실제로 구현되었습니다). 그러나 최종 버전(5.52)은 익스플로잇이 실행될 때 EAF+를 트리거하지 않는 반면 5.5는 트리거합니다 (적어도 Windows 7 x64에서). 따라서 최대 EMET 설정이 활성화된 Enhanced Protected Mode의 IE 11에서 익스플로잇이 작동합니다.
- 익스플로잇에 많은 주석이 달려 있지만, 익스플로잇이 어떻게 작동하고 각 단계에서 무엇을 하는지 더 잘 이해하려면
var debug = false;를 var debug = true;로 변경하고, 개발자 콘솔을 열어 로그를 보거나 콘솔을 닫고 대신 alert 팝업을 보십시오 (약간 성가실 수 있습니다).