[하루한줄] CVE-2021-31969: UNDERFLOWING IN THE CLOUDS

URL

CVE-2021-31969: UNDERFLOWING IN THE CLOUDS

Target

Windows Cloud Files Mini Filter Driver (cldflt.sys)

Explain

Windows Cloud Files Mini Filter Driver에서 발견된 integer underflow 취약점입니다. 해당 취약점을 통해 kernel buffer overflow를 발생 시켜 권한 상승 및 임의 코드 실행을 할 수 있습니다.

Windows의 Cloud Files API는 클라우드 동기화 엔진을 지원하고 placeholder 파일 및 디렉터리 생성과 관리 작업을 처리합니다. 동기화 엔진은 호스팅된 파일 및 디렉터리를 Windows 파일 시스템과 파일 탐색기를 통해 원격 호스트와 로컬 클라이언트 간에 파일을 동기화 하는 서비스 입니다. 해당 취약점은 placeholder 파일을 처리할 때 발생합니다.

함수 HsmFltProcessUpdatePlaceholder는 다음과 같은 동작을 합니다.

  1. HsmpRpReadBuffer 를 호출해 reparse point data를 검색

  2. HsmpRpiDecompressBuffer 를 호출해 length(Attacker-controled data) + 8 크기의 커널 버퍼 할당

  3. RtlDecompressBuffer를 호출해 데이터 압축 해제, 전 단계에서 할당한 버퍼에 저장

문제는 버퍼 내에 metadata를 저장할 12 bytes 공간을 확보해야 하고, 따라서 함수 RtlDecompressBuffer에 전달 되는 length 값은 (버퍼 크기-12)가 되므로 integer underflow 취약점이 발생합니다.

즉, 버퍼 크기가 8이되도록 유도한다면 length가 0xfffffff4가 되고 버퍼 오버플로우와 커널 권한 임의 코드 실행을 할 수 있습니다.