Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-52885 — CVE-2026-52885에 대한 기술 분석: Notepad++ v8.9.6.2의 TOCTOU 경쟁 조건으로 인해 HMAC 무결성 우회를 통한 임의 명령 실행이 가능합니다. 근본 원인, 공격 시나리오, PoC 및 패치 분석을 포함합니다. | Kitploit
도구/GitHubGitHub/v3s9er/cve-2026-52885
Vulnerability AnalysisCode AnalysisExploitationBinary AnalysisPapers & ResearchLearning & Education
GitHubv3s9er/cve-2026-52885

CVE-2026-52885

CVE-2026-52885에 대한 기술 분석: Notepad++ v8.9.6.2의 TOCTOU 경쟁 조건으로 인해 HMAC 무결성 우회를 통한 임의 명령 실행이 가능합니다. 근본 원인, 공격 시나리오, PoC 및 패치 분석을 포함합니다.

저장소 보기
327일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

TOCTOU: HMAC가 디스크를 확인하고 메모리에서 실행

Notepad++ v8.9.6.2 — HMAC 경쟁 조건을 통한 공격자 제어 UserCommand 실행

권고 사항

GHSAGHSA-qm4c-qg8p-qfcr
CVECVE-2026-52885
심각도높음
영향을 받는 버전v8.9.6.2
패치된 버전v8.9.6.4
패치 커밋4f7563c
영향을 받는 파일PowerEditor/src/NppCommands.cpp :4328–4359
플랫폼Windows 11 Pro x64
필요 권한표준 사용자 (shortcuts.xml에 쓰기 권한)
연구자v3s9er
공개일2026-06-05

요약

Notepad++ v8.9.6.2는 shortcuts.xml에 HMAC-SHA256 무결성 검사를 도입하여 임의의 UserCommand 항목 삽입을 방지했습니다.

이 검사에는 TOCTOU 결함이 있습니다. HMAC는 트리거 시점의 디스크 파일을 기준으로 확인되지만, 실행되는 명령은 시작 시 로드된 메모리 내 _userCommands 벡터에서 읽어옵니다. 이 두 소스는 다시 동기화되지 않습니다.

shortcuts.xml에 쓸 수 있는 공격자는 시작 전에 악의적인 명령을 심고, Notepad++가 이를 메모리에 로드하게 한 다음, 디스크의 파일을 정상 파일로 복원한 후 명령을 트리거할 수 있습니다. HMAC 검사는 통과하지만(디스크는 깨끗함), 악의적인 페이로드가 실행됩니다(메모리는 오래된 상태).


기술 개요

무결성 메커니즘은 현재 디스크에 있는 shortcuts.xml을 검증하는 반면, 명령 실행은 이전에 로드된 메모리 내 표현을 사용합니다. 두 데이터 소스가 독립적이기 때문에, 공격자는 시작 전에 파일을 변경하고 메모리에 파싱되도록 한 후, 명령 실행 전에 원래 파일을 복원하여 HMAC 검사를 통과시키면서 악의적인 페이로드가 실행되도록 할 수 있습니다.


근본 원인

NppCommands.cpp 4328–4359행:

root@kitploit:~
// TIME OF CHECK — reads on-disk file
std::string currentHMAC = computeHMAC(
    getMachineGUID(),
    getFileContent(nppParams.getShortcutsPath().c_str())
);
if (currentHMAC != nppGUI._shortcutsXmlHmacInConfig) { return; }
// validated against DISK

// TIME OF USE — reads in-memory vector (loaded at startup, never refreshed)
int i = id - ID_USER_CMD;
const vector<UserCommand>& cmds = nppParams.getUserCommandList();
UserCommand ucmd = cmds[i];
Command cmd(string2wstring(ucmd.getCmd(), CP_UTF8));
cmd.run(_pPublicInterface->getHSelf()); // executes payload from MEMORY
작업소스시점
확인 (HMAC)디스크 파일트리거 시
사용 (실행)메모리 벡터시작 시 로드
갭공격자 제어시작 → 트리거

공격 시나리오

전제 조건: shortcuts.xml에 대한 쓰기 권한

  • 휴대용 설치: notepad++.exe와 동일한 디렉터리
  • 표준 설치: %AppData%\Notepad++\

단계:

  1. 디스크의 shortcuts.xml을 악의적인 버전으로 덮어씁니다 (cmd = calc.exe)
  2. Notepad++를 실행합니다 — _userCommands가 악의적인 파일로 채워집니다
  3. 디스크의 정상 shortcuts.xml을 복원합니다 — HMAC가 이제 config.xml과 일치합니다
  4. WM_COMMAND(21000) (ID_USER_CMD+0)을 보내거나 Ctrl+Alt+P를 누릅니다
  5. HMAC 검사가 디스크의 정상 파일을 읽습니다 → 통과
  6. 실행이 메모리의 _userCommands[0]을 읽습니다 → calc.exe 실행

결과: 현재 사용자의 권한으로 공격자 제어 명령이 실행됩니다. 관리자 권한, UAC, 사용자 경고가 필요하지 않습니다.


실행 타임라인

시간이벤트상태
T+0.0초공격자가 악의적인 shortcuts.xml 작성디스크=악성
T+0.0초공격자가 Notepad++ 실행디스크=악성
T+0.1초Notepad++가 shortcuts.xml 읽음 → _userCommands[0]="calc.exe"메모리=악성
T+4.2초Notepad++ 완전 로드됨메모리=악성
T+4.2초공격자가 정상 shortcuts.xml 복원디스크=정상 / 메모리=악성
T+4.7초공격자가 WM_COMMAND(21000) 전송
T+4.7초HMAC 검사: 디스크에서 정상 파일 읽음 → 통과확인 통과
T+4.7초실행: 메모리에서 _userCommands[0] 읽음 → calc.exe익스플로잇
T+4.7초calc.exe 생성됨 (PID 35932)확인됨

영향

유형임의 명령 실행
관리자 필요아니오
UAC 프롬프트아니오
탐지 가능성낮음 — 디스크에는 항상 정상 파일만 표시됨; 페이로드는 메모리 전용
CVSS (추정)AV:L / AC:H / PR:L / UI:N / S:U / C:H / I:H / A:H

개념 증명

poc_8962_toctou.ps1 참조.

요구 사항:

  • Notepad++ v8.9.6.2 휴대용 x64
  • Notepad++ 디렉터리에 doLocalConf.xml이 있어야 함 (휴대용 모드)
  • 정상 shortcuts.xml에 대한 유효한 HMAC가 포함된 config.xml
root@kitploit:~
.\poc_8962_toctou.ps1 -NppPath "C:\path\to\notepad++.exe"

확인됨: calc.exe 생성됨 (PID 35932), 디스크에는 항상 정상 shortcuts.xml이 표시됨.


패치 분석

수정 사항 (커밋 4f7563c)은 HMAC 검증을 시작 시점으로 이동하여 초기 파일 파싱과 함께 수행합니다. 이제 확인과 사용이 동일한 객체에 대해 동시에 수행되어 TOCTOU 윈도우가 제거됩니다.

v8.9.6.2 (취약)v8.9.6.4 (패치됨)
HMAC 검사트리거 시, 디스크 다시 읽기시작 시, 파싱과 동일한 바이트
명령 소스시작 시 로드된 메모리시작 시 검증된 메모리
TOCTOU 윈도우시작 → 트리거제거됨

참고 자료

  • GHSA-qm4c-qg8p-qfcr
  • 패치 커밋 4f7563c
  • Notepad++ v8.9.6.4 릴리스
도구 다운로드