구글 보안팀이 Windows 10 그래픽 구성 요소의 치명적인 원격 코드 실행 취약점에 대한 기술 세부 정보와 익스플로잇(PoC 코드)을 공개했습니다.
구글의 정보보안 전문가 그룹인 프로젝트 제로(Project Zero)는 마이크로소프트의 화면 텍스트 서식 지정 및 글리프 렌더링용 애플리케이션 프로그래밍 인터페이스(API)인 DirectWrite에서 발견된 취약점(CVE-2021-24093)의 세부 사항을 밝혔습니다.
해당 문제는 버전 20H2 이전의 여러 Windows 10 에디션과 Windows Server에 영향을 미칩니다.
90일 공개 마감 기한이 지난 후, 프로젝트 제로는 완전히 패치가 적용된 Windows 10(1909) 시스템에서 실행되는 브라우저에서 취약점을 재현할 수 있는 PoC(개념 증명) 테스트 코드를 공개했습니다.
브라우저 폰트 렌더링을 노린 공격 경로
DirectWrite API는 Chrome, Firefox, Edge 등 주요 웹 브라우저에서 웹 폰트 글리프를 렌더링하기 위한 기본 폰트 래스터라이저로 사용됩니다.
브라우저가 DirectWrite API를 통해 폰트를 렌더링하기 때문에, 공격자는 이 취약점을 악용해 메모리 손상 상태를 유발하고 대상 시스템에서 임의의 코드를 원격으로 실행할 수 있습니다.
브라우저가 웹 폰트의 글리프를 표시할 때 웹 폰트 바이너리 데이터를 DirectWrite에 전달하고 자체 렌더링 프로세스 내에서 이를 실행합니다. 따라서 메모리 손상을 통한 코드 실행 가능성은, 공격자가 사용자를 악성 폰트를 다운로드하고 표시하는 콘텐츠로 유도하는 데 성공한다면 원격 공격자에게까지 확장됩니다. 이는 구글 프로젝트 제로 연구원들이 보고한 내용입니다.
힙 기반 버퍼 오버플로우 악용
공격자는 피해자를 악의적으로 조작된 TrueType 폰트가 포함된 웹사이트로 유인하여 fsg_ExecuteGlyph API 함수에서 힙 기반 버퍼 오버플로우(heap-based buffer overflow)를 일으킬 수 있습니다.
"해당 코드는 할당된 메모리 내 더 뒤쪽에 위치한 후속 구조체 멤버들, 즉 폰트의 다른 중요 데이터 구조를 가리키는 포인터들을 손상시킵니다. 이러한 메모리 손상 상태는 DirectWrite 클라이언트의 컨텍스트에서 임의 코드 실행으로 이어질 수 있습니다"라고 관계자는 설명했습니다.
마이크로소프트의 대응
전문가들은 지난해 11월 마이크로소프트 보안대응센터(MSRC)에 이 문제를 보고했으며, 마이크로소프트는 올해 2월 해당 취약점을 해결하는 보안 업데이트를 배포했습니다.
참고로, 구글 프로젝트 제로는 최근 Windows LSASS 패치가 실효성이 없다고 경고한 바 있습니다.