
CVE-2023-28303에 취약한 Windows Snipping Tool PNG 캡처의 탐지 및 복원
CVE-2023-28303에 취약한 Windows 캡처 도구 PNG 캡처의 탐지 및 복원
SnipRecover CLI는 다음과 같은 기능을 위해 설계된 최소한의 의존성 없는 명령줄 유틸리티입니다:
Windows 캡처 도구 취약점(CVE‑2023‑28303)에 의해 수정된 PNG 파일을 탐지합니다.
IEND 청크 이후에 추가된 압축 데이터를 복구하여 원본 이미지를 복원합니다.
기본적으로 복원된 이미지는 RGBA 및 1920×1080 해상도를 사용하며, 출력 경로를 지정하지 않으면 도구는 restored-<original_name>.png로 저장합니다.
PNG 사양(ISO/IEC 15948)에 따르면 모든 이미지 데이터(IDAT 청크)는 마지막 IEND 청크 앞에 나타나야 합니다. Windows 캡처 도구는 실수로 IEND 이후에 추가 IDAT 데이터를 덧붙이며, 이는 표준을 위반하고 "잘라낸" 전체 이미지 콘텐츠를 노출합니다.
표준 PNG 구조:
시그니처(8바이트): 89 50 4E 47 0D 0A 1A 0A
청크:
IHDR: 이미지 헤더(너비, 높이, 색상 유형 등)
IDAT: 압축 픽셀 데이터
IEND: 파일 끝 표시
캡처 도구로 잘라낸 PNG는 IEND 너머에 추가 바이트를 포함합니다. SnipRecover CLI는 이러한 이상 징후를 감지하고 압축 스트림을 재구성하여 원본 이미지를 복구합니다.
사전 요구 사항:
설치 단계:
git clone https://github.com/m31r0n/SnipRecover-CLI.git
cd SnipRecover-CLI
chmod +x sniprecover
외부 라이브러리는 필요하지 않습니다. Python 표준 _struct_, _zlib_, 그리고 _io_ 모듈만 사용합니다.
# 도움말 표시
python3 sniprecover --help
# 1. 취약한 PNG 탐지
python3 sniprecover detect /path/to/images/
# 2. 잘라낸 캡처 복원
python3 sniprecover restore capture.png --output restored-capture.png
참고:
--width,--height, 또는--alpha를 생략하면 기본값인 1920×1080 및 RGBA가 적용됩니다.--output을 생략하면 복원된 이미지는restored-<original_name>.png로 저장됩니다.
SnipRecover-CLI/
├── sniprecover # Main CLI executable (make sure it's executable)
└── README.md # Documentation and theory
CVE‑2023‑28303: Windows 캡처 도구 취약점 – Microsoft 보안 대응 센터
PNG 사양 (ISO/IEC 15948) – W3C
MIT © 2025 – m31r0n 제작
| 옵션 | 설명 | 기본값 |
|---|
--width <int> | 원본 이미지 너비 | 1920 |
--height <int> | 원본 이미지 높이 | 1080 |
--alpha | 알파 채널 포함(RGBA) | 활성화됨 |
--output <file> | 복원된 PNG를 저장할 경로 | restored-<original_name>.png |