[하루한줄] CVE-2021-1665: Windows 그래픽 드라이버 원격 코드 실행 취약점

URL

Analyzing CVE-2021-1665 – Remote Code Execution Vulnerability in Windows GDI+

Target

  • Windows

Explain

Windows의 그래픽 장치 인터페이스(Graphic Device Interface, GDI)에서 발견된 원격 코드 실행 취약점의 세부 정보가 공개되었습니다.

취약점은 gdiplus.dll 에서 EMF 파일을 파싱 할 때 발생합니다.

EMF : WMF 파일의 확장으로 응용프로그램에서 이미지 또는 그래픽을 렌더링 할 수 있도록 하는 메타 파일

Builtline::BuildAllLines 함수에는 다음 루프 프로세스가 존재합니다.

  1. 0x60 bytes 크기의 메모리를 할당
  2. Builtline::BuiltLine를 호출해 할당된 메모리에 데이터 복사
  3. BuiltLine::GetUntrimmedCharacterCount 함수를 호출하고 해당 함수의 반환 값(1)을 루프 카운터 더함
  4. 루프 카운터가 EMF 파일의 Length 필드보다 크면 루프 종료

그러나 BuiltLine::GetUntrimmedCharacterCount 함수의 반환 값이 0이 되는 경우를 처리하는 코드가 없어 지정된 Length 필드 값 이상으로 루프가 실행되고 이는 데이터 손상과 원격 코드 실행으로 이어질 수 있습니다.

Microsoft는 BuiltLine::GetUntrimmedCharacterCount 함수의 반환 값을 확인하는 검사를 추가한 패치를 배포하였습니다.