| 항목 | 내용 |
|---|---|
| CVE ID | CVE-2023-23397 |
| 영향 제품 | Microsoft Outlook for Windows. Outlook for Android, iOS, Mac, Outlook on the web 단독 사용자는 영향 없음 |
| CVSS v3.1 | 9.8 (Critical) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 공개일 | 2023-03-14 |
| 비고 | CISA KEV 등재. Microsoft는 2022년 4월부터 악용 정황을 추적했다고 밝힘 |
| 분석 대상 PoC | Floodnut/CVE-2023-23397_EXPLOIT_0DAY |
CVE-2023-23397은 Outlook for Windows가 일정/작업/메일 객체의 reminder 속성을 처리할 때,
사용자 상호작용 없이 외부 SMB 경로로 인증을 시도할 수 있어 발생하는 권한 상승 취약점이다.
공격자는 특수하게 조작한 Outlook 메시지에 PidLidReminderFileParameter 값을 심어두고,
그 값이 외부 UNC 경로를 가리키게 만든다. Outlook이 reminder를 처리하는 순간 Windows는 해당
경로의 파일을 찾으려 하며, 이 과정에서 대상 사용자의 Net-NTLMv2 응답이 외부 서버로 전송될 수
있다.
이 취약점의 위험한 지점은 본문 링크 클릭이나 첨부파일 실행이 필요 없다는 점이다. Outlook for Windows가 열려 있고 reminder가 트리거되면, 사용자가 메시지를 읽지 않았더라도 인증 흐름이 발생할 수 있다. 유출된 Net-NTLMv2 응답은 일반적인 Pass-the-Hash에는 그대로 사용할 수 없지만, NTLM relay나 오프라인 크래킹의 입력으로 쓰일 수 있다.
Outlook 객체는 제목, 본문, 수신자 같은 일반 속성 외에도 MAPI named property를 가진다.
PidLidReminderFileParameter는 reminder가 만료되었을 때 클라이언트가 재생할 사운드 파일
이름을 지정하는 속성이다. Microsoft Learn 기준으로 이 속성의 LID는 0x851F, 데이터 타입은
PT_UNICODE, 영역은 Reminder다.
이 값이 단순 로컬 파일 이름이면 정상 기능이다. 문제는 패치 전 Outlook이 이 값을 충분히 제한하지 않아, 원격 UNC 경로도 reminder 사운드 경로처럼 처리될 수 있었다는 점이다.
PidLidReminderOverride는 클라이언트가 reminder 사운드 관련 속성 값을 존중할지 여부를
나타내는 boolean 속성이다. 공격 메시지에서는 이 값이 함께 설정되어, 기본 reminder 동작 대신
메시지에 포함된 사운드 경로가 사용되도록 유도된다.
TNEF(Transport Neutral Encapsulation Format)는 SMTP 같은 전송 경로가 MAPI 속성을 직접
표현하지 못할 때 Outlook/Exchange가 MAPI 메시지 속성을 직렬화해 전달하는 형식이다. 흔히
winmail.dat로 보이는 첨부 안에 서식, meeting request, Outlook 전용 extended MAPI property
등이 들어갈 수 있다.
따라서 메시지 본문에 악성 URL이 없어도, TNEF 또는 .msg 객체 내부의 MAPI 속성만으로 Outlook
클라이언트 동작을 바꿀 수 있다. 이 취약점의 탐지가 어려웠던 이유도 여기에 있다. 표면적으로는
평범한 일정/작업/reminder 객체처럼 보이지만, 깊은 MAPI 속성 안에 외부 경로가 숨는다.
Windows가 SMB 공유에 접근할 때 현재 로그인한 사용자 컨텍스트로 NTLM 인증 협상을 수행할 수 있다. 공격자가 제어하는 외부 SMB 서버로 연결이 나가면, 대상 시스템은 Net-NTLMv2 challenge-response 값을 전송할 수 있다. 이 값은 평문 암호가 아니지만, 공격자가 다른 서비스에 relay하거나 오프라인 크래킹을 시도하는 데 사용할 수 있다.
Outlook reminder 처리
│
▼
PidLidReminderFileParameter 값 확인
│
▼
패치 전: 외부 UNC 경로도 사운드 파일 경로처럼 처리 가능
│
▼
Windows가 원격 SMB 공유에 접근 시도
│
▼
Net-NTLMv2 인증 응답이 외부 서버로 전송될 수 있음
정상 기능만 놓고 보면 PidLidReminderFileParameter는 "reminder 사운드 파일 이름"이다.
하지만 파일 이름이라는 입력은 로컬 파일 경로뿐 아니라 UNC 경로도 표현할 수 있다. 패치 전
Outlook은 메시지 객체 안에 저장된 이 경로가 로컬/신뢰 네트워크인지, 외부 네트워크인지
충분히 구분하지 못했다.
Microsoft는 공격 메시지가 PidLidReminderFileParameter를 공격자 제어 SMB 공유의 UNC 경로로
설정할 수 있으며, Outlook for Windows가 열려 있고 reminder가 트리거되면 사용자 상호작용 없이
Net-NTLMv2 hash leak이 발생할 수 있다고 설명한다. 여기서 "권한 상승"은 Outlook 프로세스가
코드를 실행한다는 뜻이 아니라, 공격자가 피해자의 Windows 인증 재료를 획득해 다른 시스템 접근
권한으로 확장할 수 있다는 의미에 가깝다.
- 공격자는 Outlook 객체에 reminder 관련 MAPI 속성을 포함한다.
PidLidReminderFileParameter에는 외부 UNC 경로가 들어간다.PidLidReminderOverride와 reminder 시간 속성은 Outlook이 해당 reminder 값을 처리하도록 조합된다.- 메시지가 대상 mailbox에 도착한다.
- Outlook for Windows가 실행 중이고 reminder가 만료되면, Outlook은 지정된 reminder 사운드 경로를 처리하려 한다.
- Windows는 해당 원격 SMB 경로에 접근하면서 현재 Windows 로그온 사용자의 Net-NTLMv2 인증 응답을 전송할 수 있다.
- 공격자는 이를 relay하거나 크래킹 대상으로 삼는다.
이 흐름에서 중요한 점은 대상 mailbox 사용자와 Windows 장치에 로그인한 사용자가 반드시 같을 필요는 없다는 것이다. Microsoft는 유출되는 Net-NTLMv2 응답이 "Outlook 클라이언트가 실행 중인 Windows 장치에 로그인한 사용자"에 속한다고 설명한다.
[메일/일정 객체]
├─ 일반 본문: 평범해 보일 수 있음
└─ extended MAPI properties
├─ PidLidReminderFileParameter = 외부 UNC 경로
└─ PidLidReminderOverride = true
│
▼
Outlook reminder 엔진
│
▼
원격 사운드 파일 접근 시도
│
▼
SMB 인증 협상 → Net-NTLMv2 응답 노출
Floodnut/CVE-2023-23397_EXPLOIT_0DAY는 기존 .NET MsgKit 프로젝트를 기반으로 Outlook
.msg appointment 파일을 생성하는 형태다. 저장소의 README는 Pandora Framework의 탐지 로직을
인용하며, AppointmentMeeting 객체에서 reminderFileParameter가 존재하면
CVE-2023-23397 의심 항목으로 보고하는 접근을 보여준다.
핵심 변경 지점은 MsgKit/Appointment.cs와 MsgKitTestTool/AppointmentTest.cs다.
Appointment.WriteToStorage()는 appointment 저장 시PidLidReminderFileParameter와PidLidReminderOverride를 named property로 추가한다.NamedPropertyTags.cs는PidLidReminderFileParameter를 LID0x851F,PidLidReminderOverride를 LID0x851C로 정의한다. 이는 Microsoft Learn의 속성 정의와 일치한다.- 테스트 도구는 appointment 객체의 reminder 파일 경로를 UNC 형태로 지정하고 override를 켠 뒤
.msg파일로 저장한다.
따라서 이 PoC는 Outlook 자체의 취약한 코드 경로를 재구현하는 것이 아니라, 취약한 Outlook이 처리할 수 있는 메시지/appointment 객체를 만드는 생성기(generator)에 가깝다. 저장소에는 credential relay 서버나 크래킹 로직이 포함된 것으로 보이지 않으며, 핵심은 MAPI 속성 조합이다.
다만 신뢰도는 제한적으로 봐야 한다. README가 짧고, 실제 악용 성공 조건(Outlook 버전, 패치 상태, Exchange/메일 전달 경로, TNEF 보존 여부, 외부 SMB 차단 여부)을 체계적으로 검증하지 않는다. PoC의 속성 조합은 공개 분석과 부합하지만, 실행 검증 없이 "완전한 exploit chain"으로 간주해서는 안 된다.
Microsoft의 2023년 3월 Outlook 보안 업데이트는 Outlook for Windows가
PidLidReminderFileParameter에 지정된 경로를 먼저 검사하도록 바꾼다. 경로가 로컬 또는 신뢰된
네트워크 위치가 아니라면, 패치된 Outlook은 해당 parameter를 존중하지 않는다.
Exchange 계층의 방어도 추가되었다. Microsoft 설명에 따르면 Exchange Online은 새 메시지를
수신해 TNEF 변환을 수행할 때 PidLidReminderFileParameter 속성을 제거하며, Exchange Server도
2023년 3월 Security Update 적용 후 동일한 방어 동작을 제공한다.
패치 전후 흐름을 비교하면 다음과 같다.
패치 전
메시지 속성의 외부 UNC 경로
│
▼
Outlook reminder 사운드 경로로 처리
│
▼
외부 SMB 연결 및 Net-NTLMv2 노출 가능
패치 후
메시지 속성의 외부 UNC 경로
│
▼
Outlook이 로컬/신뢰 네트워크 여부 검사
│
├─ 신뢰되지 않는 위치 → parameter 무시
└─ Exchange TNEF 변환 경로에서는 속성 제거
- Outlook for Windows를 최신 보안 업데이트로 유지한다. Microsoft는 메일 호스팅 위치와 관계없이 Outlook 보안 업데이트가 필요하다고 명시한다.
- 외부로 나가는 SMB/TCP 445 트래픽을 perimeter firewall, local firewall, VPN 설정에서 차단한다.
- 고가치 계정은 Protected Users 그룹 적용을 검토한다. 이 그룹은 NTLM 사용을 막는 효과가 있어 relay 위험을 줄일 수 있지만, NTLM이 필요한 레거시 애플리케이션 영향도를 먼저 확인해야 한다.
- 가능한 환경에서는 NTLM 자체를 줄이거나 비활성화한다.
- Exchange 환경에서는 Microsoft의 CVE-2023-23397 스캔 스크립트로
PidLidReminderFileParameter가 설정된 메시지, 일정, 작업을 찾는다. Internet zone을 가리키는 값은 악성으로 간주하고, intranet 값도 맥락을 확인한다. - 엔드포인트에서는
Microsoft-Windows-SMBClient/Connectivity의 관련 이벤트, 외부 SMB 연결, WebDAV fallback 프로세스 생성, 의심스러운 NTLM 인증 출처를 함께 본다. - 이미 의심 메시지가 발견되면 단순 삭제에 그치지 말고, 대상 사용자의 로그인 이력, Exchange EWS/IIS/HTTP Proxy 로그, mailbox permission 변경 흔적을 함께 조사한다.
이 저장소는 PidLidReminderFileParameter와 PidLidReminderOverride를 포함한 .msg
appointment 객체를 만들 수 있음을 보여준다. 공개된 자료와 비교했을 때, 취약점의 핵심 입력을
정확히 겨냥한다는 점에서는 학습 가치가 있다.
하지만 PoCTrust 관점에서는 부분 검증으로 보는 것이 맞다.
| 항목 | 판단 |
|---|---|
| 취약점 핵심 속성 재현 | 높음 — Microsoft/MDSec 설명과 일치 |
| 전체 공격 체인 구현 | 낮음 — NTLM relay/후속 접근 단계는 포함하지 않음 |
| 실행 안전성 | 미검증 — 로컬에서 빌드/실행하지 않음 |
| 최종 보고서 근거 사용 | 가능하되, Microsoft/MDSec/공식 MAPI 문서로 교차 검증 필요 |
- CVE-2023-23397 — NVD
- Microsoft Security Blog — Guidance for investigating attacks using CVE-2023-23397
- PidLidReminderFileParameter Canonical Property — Microsoft Learn
- PidLidReminderOverride Canonical Property — Microsoft Learn
- Transport-Neutral Encapsulation Format (TNEF) — Microsoft Learn
- Exploiting CVE-2023-23397 — MDSec
- Floodnut/CVE-2023-23397_EXPLOIT_0DAY
- Microsoft의 실제 Outlook 수정 diff는 비공개 제품 코드라 직접 대조할 수 없다. 패치 동작은 Microsoft가 공개한 설명(경로 신뢰 여부 검사, Exchange의 TNEF 변환 시 속성 제거)에 근거했다.
- PoC는 정적 분석만 수행했고 빌드/실행하지 않았다. 따라서 특정 Outlook 빌드와 메일 전달 경로에서
실제로 어떤 형태의
.msg/TNEF가 유지되는지는 별도 격리 환경에서 검증해야 한다. - WebDAV fallback은 탐지 흔적으로는 중요하지만, Microsoft는 이 취약점의 외부 credential leak은 SMB 경로에서 성립한다고 설명한다. 따라서 방어 우선순위는 Outlook 패치와 외부 SMB 차단에 둔다.