![code-1689066_640.jpg](/news/photo/201804/33569_26204_1858.jpg)
구글 프로젝트 제로 소속 해커인 James Forshaw는 구글 공개 정책에 따라 90일간 취약점이 수정되지 않았기 때문에 해당 이슈를 공개했다. 이 제로데이는 UMCI가 활성화된 모든 윈도우 10 버전에 영향을 미치고, Forshaw는 윈도우 10에서 익스플로잇에 성공했다.
구글이 게시한 보안 권고문은 “윈도우 Lockdown 정책은 UMCI가 활성화된 시스템에서 임의 코드 실행으로 이어질 수 있는 .NET 버그를 사용해 우회 가능한 COM 클래스 인스턴스화를 검토한다.”고 설명한다. 이 제로데이 취약점은 .NET COM 객체가 인스턴스화될 때 WLDP COM 클래스 잠금 정책이 작동하는 방식으로 연결한다.
WLDP COM 클래스 잠금 정책은 스크립팅 엔진이 인스턴스화할 수 있는 8~50개의 하드코딩된 COM 객체 리스트를 가지고 있다. 공격을 방어하기 위해 존재하는 DLL을 등록하는 동안,올바르게 구현된 정책은하드코딩된 리스트에 대해 DllGetObject로 전달된 CLSID를 확인해야 한다.
알려진 객체의 내부 목록을 DllGetObject에 전달된 CLSID와 비교해야하는제대로 작동하는 COM 구현으로서, 허용된 COM CLSID 중 하나에 기존 DLL을 등록하기 위해 레지스트리에 쓸 수 있는 경우에도 이것이 중요한 이슈는 될 수 없다.
구글 연구원은 .NET COM 객체가 인스턴스화 되었을 때 mscoree의 DllGetClassObject에 전달된 CLSID가 HKCR에 있는 등록 정보를 조회하는 데만 사용되고 CLSID는 버려지고 .NET 객체가 생성되는 것을 발견했다.
이것은 공격자가 신뢰할 수 있는 CLSID 중 하나에 임의의 COM 클래스를 로드하는, HKCU를 포함한 레지스트리 키를 추가할 수 있다는 것을 의미한다. 구글의 분석 게시물은 또한 “.NET가 .NET 타입이 구체적인 GUID를 가지고 있는지 여부에 상관하지 않으므로 임의 코드 실행을 발생시키는데 이 코드를 사용할 수 있다”고 언급했다.
James Forshaw는두개의 파일로 구성된 PoC 코드를 공개했다. 두개의 파일은 레지스트리를 설치할 수 있는 .INF 파일과 신뢰할 수 없는 .NET 어셈블리를 메시지 박스에 나타내기 위해 메모리에 로드할 수 있는 DotNetJScript 무료 툴로 생성된 .SCT 파일이다.
Forshaw는 1월 19일에 해당 취약점을 마이크로소프트에 보고했지만 90일 안에 해결하지 못했다. 그는 “이 이슈는 4월 패치 튜스데이에 수정되지 않았으므로 마감일이 지났다.해당 문제는 Device Guard가 활성화된 시스템에만 영향을 미치며 그러한 시스템에서 영구 코드 실행을 얻는 방법으로만 사용된다. 원격으로 익스플로잇될 수 있는 종류는 아니고 권한 상승 문제도 아니다. 공격자가 이를 익스플로잇하고 레지스트리 항목을 설치하기 위해서는 시스템에 액세스해야 한다”고 덧붙였다.
★정보보안 대표 미디어 데일리시큐!★