COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
2018년 공개된 Shell.Explorer.1 기법이 8년 만에 실제 공격에 악용. 매크로 경고 없이 실행되는 Office 취약점의 원리와 대응 방법을 알아보세요.
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
보안 연구원 Yorick Koster는 이상한 걸 발견했다.
Word 문서 안에 Internet Explorer를 통째로 넣을 수 있었다.
Shell.Explorer.1이라는 COM 객체.
문서를 열면 내장된 브라우저가 로컬 파일에 접근하고, 원격 서버에 연결했다.
매크로 경고? 없다. "콘텐츠 사용" 버튼? 없다.
그냥 실행된다.
Koster는 이걸 Microsoft에 보고했다.
Microsoft의 답변:
"이 기법은 상당한 사회공학이 필요한다. 보안 경고에서 '예'를 눌러야 하고, Protected Mode가 아니어야 한다."
패치 거부.
Microsoft가 긴급 패치를 배포했다.
.
MSTIC(Microsoft Threat Intelligence Center)가 실제 공격을 탐지했다.
누군가 8년 전 기법의 보호 장치를 우회하는 방법을 찾아낸 것이다.
2018년과 2026년의 차이점:
| 구분 | 2018년 | 2026년 |
|---|---|---|
| 공격 성공 조건 | 사용자가 보안 경고 클릭 필요 | 보안 검사 우회됨 |
| Protected View | 차단됨 | 우회 가능 |
| Microsoft 대응 | "사회공학 필요" → 패치 거부 | 긴급 OOB 패치 |
| 실제 공격 | 없음 | 확인됨 |
공격자들은 8년 동안 Microsoft가 "충분하다"고 생각한 보호 장치를 분석했다.
그리고 구멍을 찾았다.
| 구분 | 내용 |
|---|---|
| CVE ID | |
| CVSS | 7.8 (High) |
| 유형 | Security Feature Bypass |
| 공격 조건 | 악성 Office 파일 열기 (Preview Pane 제외) |
| CISA KEV | 등재됨 (2/16 패치 기한) |
이름: Shell.Explorer.1
CLSID: {EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}
정체: Microsoft Web Browser Control (내장 IE)
이 객체가 Office 문서 안에 들어가면:
전부 VBA 매크로 없이.
보낸 사람: security-team@company.com (스푸핑)
제목: [긴급] 보안 점검 결과 - 즉시 확인 요망
첨부: security_report_2026.docx
피해자가 첨부파일을 연다.
화면에는 정상적인 보안 보고서가 보인다.
하지만 문서 안에는 Shell.Explorer.1 객체가 숨어있다.
객체가 로드되면서 내장 브라우저가 활성화된다.
1. 원격 서버 연결 (C2)
2. 2차 페이로드 다운로드
3. 악성코드 실행
"콘텐츠 사용" 버튼을 누르지 않았다. 매크로 경고도 없었다.
문서를 열었을 뿐인데, 시스템이 장악됐다.
Office의 보안 모델은 VBA 매크로에 집중되어 있다.
매크로가 있으면 → 경고 매크로가 없으면 → 통과
하지만 Shell.Explorer.1은 매크로가 아니다.
COM(Component Object Model) 객체다.
Office는 COM 객체에 대해 별도의 신뢰 결정을 한다. 문제는 이 신뢰 결정 로직에 결함이 있었다는 것.
Microsoft 공식 설명:
"Reliance on untrusted inputs in a security decision"
(신뢰할 수 없는 입력값에 기반한 보안 결정)
공격자가 문서의 특정 값을 조작하면, Office는 위험한 객체를 "안전하다"고 판단한다.
이건 새로운 패턴이 아니다.
| CVE | 설명 |
|---|---|
| 연도: 2017 / 기법: Equation Editor 버퍼 오버플로우 / 악용 그룹: 다수 APT (2026년까지 악용 중) | |
| 연도: 2021 / 기법: MSHTML ActiveX / 악용 그룹: Wizard Spider 등 | |
| 연도: 2022 / 기법: Follina (MSDT) / 악용 그룹: 중국, 러시아 APT | |
| 연도: 2023 / 기법: Office/Windows HTML RCE / 악용 그룹: Storm-0978 (러시아) | |
| 연도: 2023 / 기법: Outlook NTLM 탈취 / 악용 그룹: APT28 (러시아 GRU) | |
| CVE-2026-21509 | 연도: 2026 / 기법: OLE 보안 우회 / 악용 그룹: 미확인 (타겟 공격) |
패턴이 보인다:
(Equation Editor)는 17년 된 코드에서 발견됐다. 의 기반 기법은 8년 전 공개됐다.
레거시 코드는 시한폭탄이다.
공식적으로 확인된 것:
추정:
MSTIC가 탐지했다는 건 보통 정교한 공격자를 의미한다.
과거 유사 취약점 악용 이력:
정식 귀속(attribution)에는 수개월~수년이 걸린다.
| Technique | ID | 설명 |
|---|---|---|
| Spearphishing Attachment | T1566.001 | 악성 Office 문서 전달 |
| User Execution: Malicious File | T1204.002 | 사용자가 파일 열기 |
| Inter-Process Communication: COM | T1559.001 | Shell.Explorer.1 COM 객체 실행 |
| System Binary Proxy Execution | T1218 | 내장 IE를 통한 페이로드 실행 |
| 제품 | 패치 상태 |
|---|---|
| Microsoft 365 Apps | ✅ 자동 패치 (앱 재시작 필요) |
| Office LTSC 2024 | ✅ 자동 패치 |
| Office LTSC 2021 | ✅ 자동 패치 |
| Office 2019 | ⚠️ 패치 "곧 출시" → 수동 완화 필요 |
| Office 2016 | ⚠️ 패치 "곧 출시" → 수동 완화 필요 |
Office 2016/2019는 2025년 10월 지원 종료됨. 우선순위가 낮아서 패치가 늦다.
Office 365 / 2021 이상:
앱 재시작만 하면 자동 적용
Office 2016/2019: 패치가 나올 때까지 아래 레지스트리 완화 적용
위험한 COM 객체를 수동 차단:
경로: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility\{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}
값 이름: Compatibility Flags
값 종류: DWORD
값 데이터: 0x00000400
주의: 레지스트리 수정 전 백업 필수
의심스러운 Office 문서에서 이 바이트 시퀀스 검색:
{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}
oletools 등으로 OLE 객체 추출 후 확인.
| 유형 | 상태 |
|---|---|
| Sigma Rule | 미공개 |
| YARA Rule | 미공개 |
| Microsoft Defender | ✅ 탐지 활성화 |
PoC가 공개되지 않아서 커뮤니티 탐지 규칙도 없다. Microsoft Defender에 의존하거나, 위 IOC를 기반으로 자체 규칙 작성 필요.
2018년 Yorick Koster의 보고서는 무시됐다.
"사회공학이 필요하다"는 이유로.
하지만 공격자들은 8년 동안:
"충분히 안전하다"는 판단은 위험하다.
특히 Office처럼 수십억 대에 설치된 소프트웨어에서는.
결국 Microsoft는 8년 만에 긴급 패치를 내놓아야 했다.
레거시 코드는 부채다. 이자는 복리로 쌓인다.
가 사용한 공격 벡터는 2017년에 처음 공개된 DDE(Dynamic Data Exchange) 기법의 변종이다. DDE는 Office 문서 간 데이터를 교환하는 레거시 기능으로, 수식 필드를 통해 외부 명령을 실행할 수 있다. Microsoft는 2017년 패치로 DDE를 비활성화했지만, 이번 CVE는 새로운 코드 경로를 통해 유사한 기능을 트리거했다.
공격자가 오래된 기법을 재활용하는 이유는 명확하다. 보안 팀이 이미 해결됐다고 판단한 취약점에 대한 감시를 줄이기 때문이다. 코드베이스가 복잡할수록 같은 유형의 버그가 다른 경로에서 재발할 확률이 높다. 이번 사례는 "패치된 취약점 유형"에 대한 지속적 감사의 필요성을 보여준다.
이 취약점의 근본 원인은 Office의 RTF(Rich Text Format) 파서에 있다. RTF는 1987년에 설계된 문서 포맷으로, OLE 객체를 내장할 수 있다. 문제는 RTF 파서가 OLE 객체의 Class ID를 처리하는 과정에서 유형 검증이 불충분하다는 점이다.
공격자는 RTF 문서에 특수하게 조작된 OLE 객체를 삽입한다. 이 객체의 Class ID는 MSHTML 엔진을 가리키도록 설정되어, RTF 문서를 열면 MSHTML이 로드되고 원격 서버에서 HTA(HTML Application) 파일을 다운로드한다. 이 기법은 2017년 와 구조적으로 동일하다. 8년 전의 공격 벡터가 변형된 형태로 다시 유효해진 것이다.
Microsoft가 RTF의 MSHTML 호출을 완전히 차단하지 않은 이유는 하위 호환성 때문이다. 많은 기업 환경에서 RTF 기반 문서 양식이 여전히 사용되며, 이 양식 중 일부는 정상적으로 MSHTML 기능에 의존한다. 보안과 호환성 사이의 이 긴장 관계가 8년 된 공격 벡터를 살아남게 만들었다.
Microsoft는 이 취약점의 심각성을 인지하고 정규 패치 화요일을 기다리지 않고 긴급 업데이트를 배포했다. MSHTML의 RTF 문서 내 OLE 객체 호출 경로에 추가 검증 단계를 삽입하여 악성 Class ID를 차단했다. 그러나 보안 연구자들은 유사한 변형 공격이 가능할 수 있다고 경고했다.
관련 취약점 분석
관련 MITRE ATT&CK 기법
관련 보안 사건
Office/Windows 취약점
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.