CVE-2025-43300: iOS/macOS DNG 이미지 처리 메모리 손상
개요
CVE-2025-43300은 Apple 이미지 처리 프레임워크의 치명적인 메모리 손상 취약점으로 iOS 18.6.1 및 macOS 시스템에 영향을 미칩니다. 이 취약점은 RawCamera.bundle 내의 JPEG Lossless 압축 해제 코드에 존재하며, DNG 파일의 TIFF 메타데이터와 JPEG 스트림 매개 변수 간의 불일치로 인해 트리거됩니다.
취약점 세부 정보
근본 원인
이 취약점은 DNG(디지털 네거티브) 파일의 메타데이터/스트림 불일치에서 비롯됩니다:
- SamplesPerPixel TIFF 헤더의 메타데이터는 예상 색상 구성 요소를 나타냅니다
- SOF3 component count JPEG Lossless 스트림의 구성 요소 수는 실제 데이터 구성 요소를 지정합니다
- 이러한 값이 다르면 할당과 처리가 정렬되지 않습니다
메모리 손상 흐름
1. Parser reads SamplesPerPixel from TIFF metadata (e.g., 2 components)
2. System allocates buffer: width × height × 2 components
3. JPEG decoder reads SOF3 component count (e.g., 1 component)
4. Decoder writes data based on inconsistent assumptions
5. Buffer overflow occurs when more data is written than allocated
공격 벡터
- 제로 클릭 취약점: 사용자 상호 작용 불필요
- 자동 처리: DNG 파일을 보거나 가져오거나 수신하면 트리거됨
- 크로스 플랫폼 영향: iOS 및 macOS 시스템 모두에 영향
- 메모리 손상: 애플리케이션 충돌 또는 잠재적 코드 실행으로 이어질 수 있음
도구 개요
이 저장소에는 CVE-2025-43300을 분석하고 재현하기 위한 두 가지 Python 도구가 포함되어 있습니다:
1. DNG 취약점 분석기 (dng_vulnerability_analyzer.py)
용도: 취약점 조건을 식별하기 위해 DNG 파일 구조를 분석합니다
주요 기능:
- IFD 및 SubIFD를 포함한 TIFF/DNG 파일 구조를 파싱합니다
- SamplesPerPixel 메타데이터 태그를 찾습니다
- JPEG Lossless SOF3 마커와 구성 요소 수를 식별합니다
- 메타데이터/스트림 불일치를 감지합니다
- 수정을 위한 정확한 바이트 오프셋을 보고합니다
사용법:
python3 dng_vulnerability_analyzer.py <dng_file>
출력:
- 파일 구조 분석
- 메타데이터 태그 위치 및 값
- JPEG 스트림 구성 요소 정보
- 취약점 평가
- POC 생성을 위한 특정 오프셋
2. 안전한 Hex 수정기 (hex_modifier.py)
용도: 특정 바이트를 안전하게 수정하여 개념 증명 파일을 생성합니다
주요 기능:
- 수정 전에 예상 바이트 값을 검증합니다
- 파일 추적을 위한 SHA256 해시를 생성합니다
- 바이너리 diff 보고서를 생성합니다
- 우발적 손상을 방지하기 위한 안전 검사를 구현합니다
- 수동 및 자동 POC 생성을 모두 지원합니다
사용법:
# Create POC using known vulnerable offsets
python3 hex_modifier.py create-poc <input.dng>
# Manual byte modification
python3 hex_modifier.py modify <input.dng> <offset> <old_byte> <new_byte> <output.dng>
# Generate diff report
python3 hex_modifier.py diff <original.dng> <modified.dng>
POC 생성 과정
1단계: 대상 파일 분석
python3 dng_vulnerability_analyzer.py IMGP0847.DNG
이 도구는 다음을 식별합니다:
- SamplesPerPixel 메타데이터 위치
- JPEG SOF3 구성 요소 수 위치
- 현재 값 및 제안된 수정 사항
2단계: 취약한 샘플 생성
POC에는 두 가지 특정 바이트 수정이 필요합니다:
- SamplesPerPixel 메타데이터 증가 (일반적으로 1에서 2로)
- SOF3 구성 요소 수 감소 (일반적으로 2에서 1로)
python3 hex_modifier.py create-poc IMGP0847.DNG
3단계: POC 검증
python3 dng_vulnerability_analyzer.py vuln_poc_IMGP0847.dng
불일치가 존재하고 취약점이 트리거됨을 확인합니다.
POC가 작동하는 이유
기술적 메커니즘
-
할당 단계:
- 이미지 파서가 SamplesPerPixel = 2를 읽습니다
- 2개 구성 요소 분량의 픽셀 데이터에 대한 버퍼를 할당합니다
- 버퍼 크기 = image_width × image_height × 2
-
처리 단계:
- JPEG Lossless 디코더가 1개 구성 요소의 SOF3를 만납니다
- 파싱 로직이 실제 데이터 크기와 예상 데이터 크기 간에 혼란을 겪습니다
- 불일치한 가정에 기반하여 데이터를 쓰려고 시도합니다
-
메모리 손상:
- 원래 할당된 것보다 더 많은 데이터가 버퍼에 기록됩니다
- 버퍼 오버플로가 인접 메모리 영역을 손상시킵니다
- 애플리케이션 충돌 또는 잠재적 코드 실행으로 이어집니다
파일 형식 세부 사항
DNG 파일은 JPEG Lossless 스트림이 포함된 TIFF 컨테이너 형식을 사용합니다:
- TIFF 메타데이터는 이미지 속성과 색상 정보를 설명합니다
- JPEG 스트림은 압축된 픽셀 데이터를 포함합니다
- 메타데이터와 스트림 콘텐츠 사이에 신뢰 관계가 존재합니다
- 검증 공백으로 인해 불일치한 값이 처리 코드에 도달할 수 있습니다
영향 평가
심각도: 치명적
- CVSS 점수: 높음 (제로 클릭, 메모리 손상, 광범위한 영향)
- 영향을 받는 시스템: iOS 18.6.1, 유사한 이미지 처리를 사용하는 macOS 시스템
- 공격 경로: 네트워크/로컬 파일 전송
- 사용자 상호 작용: 필요 없음
- 범위: DNG 파일을 처리하는 모든 기기
실제 시나리오
- DNG 파일이 포함된 이메일 첨부 파일
- AirDrop 전송
- 클라우드 사진 동기화
- 사진가 샘플의 웹 다운로드
- 메시징 앱 미디어 공유
완화 및 패치
공급업체 대응
- iOS 18.6.2에서 수정됨: Apple이 적절한 메타데이터 검증을 구현했습니다
- macOS 업데이트: macOS 이미지 처리에 유사한 수정이 적용되었습니다
- 근본 원인: 메타데이터와 스트림 매개 변수 간의 일관성 검사가 추가되었습니다
권장 완화 조치
- 시스템 업데이트: iOS 18.6.2 이상을 설치합니다
- 입력 검증: 사용자 정의 파서에서 메타데이터 일관성을 검증합니다
- 경계 검사: 엄격한 버퍼 크기 검증을 구현합니다
- 퍼징: 파일 형식 파서의 정기적인 테스트
파일 구조 및 기술 세부 사항
TIFF/DNG 구조
TIFF Header → IFD Chain → SubIFDs → Image Data
├── Metadata Tags (SamplesPerPixel, Compression, etc.)
├── JPEG Lossless Streams (SOF3 markers)
└── Pixel Data (compressed)
주요 취약점 위치
- SamplesPerPixel 태그: IFD 구조의 TIFF 태그 0x0115
- SOF3 마커: JPEG Lossless 프레임 시작(0xFFC3)
- 구성 요소 수: SOF3 마커에서 바이트 오프셋 +9
- 치명적 불일치: 태그 값 ≠ 구성 요소 수인 경우
테스트 지침
안전한 테스트 환경
- 격리된 시스템 사용: VM 또는 전용 테스트 장치
- 스냅샷 생성: POC 파일을 테스트하기 전에
- 충돌 모니터링: 시스템 로그 및 충돌 보고서 확인
- 네트워크 격리: 의도치 않은 파일 공유 방지
기대 동작
- 취약한 시스템: 애플리케이션 충돌, 메모리 손상 오류
- 패치된 시스템: 정상적인 오류 처리 또는 올바른 처리
- 로그 지표: 메모리 액세스 위반, 세그멘테이션 오류
기술 참조
파일 형식 문서
- TIFF 6.0 사양: 태그 구조 및 IFD 형식
- DNG 사양: Adobe 디지털 네거티브 형식
- JPEG 표준: 무손실 압축(ITU-T T.87)
보안 연구
- 메모리 손상 기술: 버퍼 오버플로 기본 사항
- 파일 형식 퍼징: 자동화된 취약점 발견
- 파서 보안: 입력 검증 모범 사례
고지 사항: 이 연구는 교육 및 방어적 보안 목적으로만 제공됩니다. 사용자는 관련 법률 및 윤리 지침 준수에 대한 책임이 있습니다.
참고
충돌이 트리거되는 데 약 1~3분이 걸립니다. 재미있게 즐기세요.
POC의 경우 open vuln_file.dng를 실행하여 파일을 실행하거나 미리 보기만 해도 실행됩니다.