Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-0049 — Android DNG SDK 中零点击 DoS 的 PoC 与分析,包含特制的 DNG 样本、NDK 崩溃测试工具,以及 MapTable 溢出的 UBSan/IntSan 复现。 | Kitploit
工具/GitHubGitHub/r3n3r0/cve-2026-0049
Android安全Payload生成漏洞分析漏洞利用二进制分析论文与研究学习与教育
GitHubr3n3r0/cve-2026-0049

CVE-2026-0049

Android DNG SDK 中零点击 DoS 的 PoC 与分析,包含特制的 DNG 样本、NDK 崩溃测试工具,以及 MapTable 溢出的 UBSan/IntSan 复现。

查看仓库
81个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-0049 — Android DNG 零点击拒绝服务(dng_sdk MapTable 加法溢出)

完整的研究与 PoC 材料。叙述性分析: 🇮🇹 BLOG.md · 🇬🇧 BLOG.en.md。

  • Bug:dng_opcode_MapTable::ProcessArea(dng_sdk/source/dng_misc_opcodes.cpp:388)中 fAreaSpec.Plane() + fAreaSpec.Planes() 的无符号整数溢出。
  • 影响:零点击 DoS。Android 编译 libdng_sdk.so 时使用的 IntSan 会将溢出转化为 abort() → 在解码 DNG 的进程中触发 SIGABRT。
  • 不是 RCE(循环上有双重边界 → 无越界访问)。参见 BLOG.md 第 12 节。
  • 严重性:Google(公告)将其评为 Critical;NVD/CISA 为 Medium(CVSS 6.2) —— 同一 CVE 的两种不同分类体系(第 13 节)。
  • 修复:Android 安全公告 2026 年 4 月(补丁 2026-04-01,A-456471290)。两个补丁:dng_sdk 中的算术修正(+ 改写为 -)+ LocalImageResolver.java 中拒绝 DNG 的 MIME 白名单(第 14 节)。

文章还详细介绍了:PoC 的完整生成流程(第 6 节)、为何使用 NDK harness(第 7 节)、UBSan/IntSan 标志 -fsanitize=undefined 与 =integer、recover/no-recover/trap、完整 vs 最小运行时(第 10 节)之间的区别,以及 IntSan vs SafeInt vs MTE(第 11 节)。

结构

root@kitploit:~
CVE-2026-0049/
├── BLOG.md                       完整文章 — 意大利语(17 个章节)
├── BLOG.en.md                    完整文章 — English (17 sections)
├── poc/
│   ├── inject_opcode.py          [主要] 向有效 DNG 中注入 OpcodeList2/MapTable
│   ├── gen_base_dng.py           生成有效的 Bayer 基础 DNG(需要 pidng)
│   ├── make_dng.py               独立生成器(最小 DNG + opcode)
│   └── make_poc_dng.py           第一个从头生成的生成器(最小 LinearRaw)
├── harness/
│   ├── decode_poc.c              NDK AImageDecoder harness(在设备上崩溃)
│   └── dng_xmp_stub.cpp          XMP stub,用于在 PC 上编译 dng_validate
├── samples/
│   ├── valid_poc.dng             可用的 PoC(使系统解码器崩溃)
│   ├── base_benign.dng           良性对照(解码无崩溃)
│   └── poc_minimal.dng           从零生成的最小变体
└── evidence/
    ├── crash_backtrace.txt       Pixel 9 的真实 tombstone
    └── device_analysis.md        libdng_sdk.so 二进制分析 + IntSan/SafeInt/MTE

快速复现

A) 恶意 DNG

root@kitploit:~
pip install pidng
python3 poc/gen_base_dng.py base                     # -> base.dng(有效的 Bayer)
python3 poc/inject_opcode.py base.dng valid_poc.dng poc
# 或者直接使用 samples/valid_poc.dng

关键细节:AreaSpec 必须非空(0,0,H,W);若 area 为空,Android 的 dng_sdk 会短路,解码返回错误而不崩溃(参见 BLOG.md 第 6.6 节)。为什么需要完全有效的 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/     # 注意:/data/local/tmp,不是 /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_sdk 源码时,只对 dng_misc_opcodes.cpp 应用 -fsanitize=integer -fno-sanitize-recover(使用 harness/dng_xmp_stub.cpp 以便在没有 XMP SDK 的情况下链接)。然后:

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

仅供研究/教学使用。仅在自有硬件上测试。

下载工具