Files
cinder27/README.zh-CN.md
T
JBJF 7949c7ce9f v2.0 — 31 C POC twins + harness fixes
- 31 C POC files, one per CVE folder: full seed construction + trigger +
  main(), self-contained, no app dependency. All compile clean with
  clang -O2 -Wall (zero warnings) on macOS arm64; each has a recorded
  oracle on this host.
- CMGetDMVersionLevelFromRPU ABI pinned by disassembly: macOS export is
  (CFDataRef), the Swift POC drives the 4-arg iOS surface — this is the
  mechanism behind the cm.rpu death oracle on the simulator build.
- Harness fixes: glyphCount guard, MachOInspector size guard, ModTools
  clamp, DeviceModel iPhone19,7, GPTPayload clamps, Gate patch display.
- POC comments rewritten English-only (31 swift + arc.rr + 5 py).
- README (en/zh): C twin column, .c anatomy section, compile/run
  examples, C oracle verification status.
- Dead if-let binding removed from Identity summary; v2.0 build 3.
2026-10-29 20:08:55 +08:00

15 KiB
Raw Permalink Blame History

Cinder27

English

iOS 17.0–27.1 漏洞验证与设备修改工具链,51 个模块。主靶:iOS 27.0.1 / iPhone 18 Pro Max(iPhone19,7 · 24A446)。

组件覆盖:ImageIO、CoreGraphics、CoreMedia、FontParser、ArchiveUtility、VideoToolbox、AudioToolbox、Calendar、Dolby Vision RPU、XNU 内核 IPC、沙盒与文件系统、GPT / kext、HID / 外设 / 无线链路、entitlement 探测。

仓库结构

区块 内容
CVE-2026-XXXX/(31 个) 每个 CVE 一个文件夹,POC 本体在文件夹内:.py 种子构建器(可独立运行)、.swift 种子构造 + 触发闭包(可独立 typecheck),以及 .c 双子——种子 + 触发 + main() 自包含,在 macOS arm64 上独立编译运行
<模块名>/(11 个) 无 CVE 编号的模块——工具、探针、基线、沙盒原语——按模块 id 命名,同样一文件夹一文件
Sources/ scripts/ Resources/ Info.plist Cinder27 app 主体(验证台本体,构建见下)

共 42 个 Swift POC 文件(全部通过独立 typecheck)+ 5 个 Python 种子构建器(产物与 app 内置种子逐字节一致)+ 31 个 C POC 文件(macOS arm64 上 clang -O2 -Wall 零警告编译通过,各自带一份记录在案的 oracle)。

POC 索引 — 31 个 CVE 文件夹

复合编号(如 CVE-2026-112627 / 112561)归并到主编号的文件夹;同一 CVE 命中多个模块时,触发闭包并列在同一文件里。

CVE 模块 组件 原语 触达 标题 文件
CVE-2026-112415 vid.hevc AVD.videodecoder 插件 OOB 读 系统进程 MVHEVC 层 ID 越界 CVE-2026-112415.swift · CVE-2026-112415.c
CVE-2026-112416 vid.avc AVD.videodecoder 插件(非 kext) OOB 写 系统进程 AVC 切片数量上限缺失 CVE-2026-112416.swift · CVE-2026-112416.c
CVE-2026-112485 mdl.usda Model I/O · libusd_ms OOB 读 进程内 USDA 声明嵌套深度 CVE-2026-112485.py · CVE-2026-112485.swift · CVE-2026-112485.c
CVE-2026-112488 iio.tiff.direntry ImageIO · TIFFReadDirEntry*Array OOB 写 进程内 TIFF 目录项分配 32 位截断 CVE-2026-112488.swift · CVE-2026-112488.c
CVE-2026-112507 / 112476 kern.ipc XNU · ipc_port.c 请求表消费方 UAF 内核 ipc_port 请求表索引竞态 CVE-2026-112507.swift · CVE-2026-112507.c
CVE-2026-112515 probe.hid IOHIDFamily · caps 表查找 OOB 读 外设 IOHIDFamily 预解析数据表索引 CVE-2026-112515.swift · CVE-2026-112515.c
CVE-2026-112522 arc.iso, arc.iso.stress, arc.cab libarchive · build_pathname_utf16be OOB 写 进程内 ISO9660 Joliet 路径名堆溢出 CVE-2026-112522.py · CVE-2026-112522.swift · CVE-2026-112522.c
CVE-2026-112546 aud.hoa AudioCodecs · APACHOADecoder::Initialize OOB 读 系统进程 HOA 空间音频系数越界读 CVE-2026-112546.swift · CVE-2026-112546.c
CVE-2026-112554 kext.gpt IOStorageFamily OOB 读 内核 GPT 分区名扫描 72 字节内核堆越界读 CVE-2026-112554.swift · CVE-2026-112554.c
CVE-2026-112571 iio.jpeg.comment ImageIO · ReadUserComment 信息泄露 进程内 EXIF UserComment 短读 → 元数据泄露 CVE-2026-112571.swift · CVE-2026-112571.c
CVE-2026-112610 cg.cmap CoreGraphics · _cmap_convert OOB 写 进程内 CMap /UseCMap 递归越界写(负结果探针) CVE-2026-112610.swift · CVE-2026-112610.c
CVE-2026-112611 cg.shading, cg.shading.sweep CoreGraphics · _cg_shading_type5_draw OOB 写 进程内 Type-5 阴影栈溢出(值可控 OOB 写) CVE-2026-112611.swift · CVE-2026-112611.c
CVE-2026-112619 cal.unzip CalendarFoundation · _UnzipArchiveWithLimits OOB 写 系统进程 日历附件解压容器逃逸 CVE-2026-112619.swift · CVE-2026-112619.c
CVE-2026-112625 iio.ktx2, iio.pvr ImageIO · KTX2ReadPlugin 整数溢出 进程内 KTX2 维度/层级尺寸运算 CVE-2026-112625.py · CVE-2026-112625.swift · CVE-2026-112625.c
CVE-2026-112627 iio.dds.bc7, iio.appx ImageIO · BCReadPlugin::initialize OOB 读 进程内 BC7 纹理 mip 截断 CVE-2026-112627.swift · CVE-2026-112627.c
CVE-2026-112629 iio.jpeg.gps ImageIO · GPSCopy::processData OOB 读 进程内 GPS IFD 值偏移越界 CVE-2026-112629.swift · CVE-2026-112629.c
CVE-2026-112630 iio.apng.fctl ImageIO · IIO_Reader_PNG::getImageCount 信息泄露 进程内 APNG fcTL 截断 → 栈上未初始化帧几何 CVE-2026-112630.swift · CVE-2026-112630.c
CVE-2026-112632 iio.tiff.trunc ImageIO · decodeStripChunky 信息泄露 进程内 TIFF 截断条带 → 未初始化堆进像素 CVE-2026-112632.swift · CVE-2026-112632.c
CVE-2026-112633 / 112614 iio.tiff.planar, iio.pdf.raster ImageIO · decodeStripPlanar OOB 写 进程内 TIFF planar 散写越界 CVE-2026-112633.swift · CVE-2026-112633.c
CVE-2026-112634 iio.jpeg.marker ImageIO · _JPEGFile::processData OOB 读 进程内 JPEG 标记长度越界 CVE-2026-112634.swift · CVE-2026-112634.c
CVE-2026-112638 aud.lc3 AudioCodecs · ACLC3Decoder::AppendInputData OOB 写 权限受限 LC3 解码器输入缓冲溢出 CVE-2026-112638.swift · CVE-2026-112638.c
CVE-2026-112646 sb.stash SpringBoard · SBHomeScreenService OOB 写 系统进程 SpringBoard 布局名 stash 校验 CVE-2026-112646.swift · CVE-2026-112646.c
CVE-2026-112656 font.gdef CoreText · GetLigatureCaretPositionsForGlyph OOB 读 进程内 GDEFLigatureCaret 追链越界读 CVE-2026-112656.swift · CVE-2026-112656.c
CVE-2026-112683 font.cff FontParser · charstring 解释器 OOB 写 进程内 CFF Type2 charstring 操作数栈溢出 CVE-2026-112683.py · CVE-2026-112683.swift · CVE-2026-112683.c
CVE-2026-112688 cm.rpu, cm.rpu.sweep CoreMedia · hevcbridgeParseVdrDmDataPayloadExMetadataBlocks OOB 写 系统进程 Dolby Vision RPU 扩展元数据块数组越界 CVE-2026-112688.swift · CVE-2026-112688.c
CVE-2026-112696 / 84494 probe.ane AppleH16ANEInterface OOB 写 内核 ANE 内核接口可达性 CVE-2026-112696.swift · CVE-2026-112696.c
CVE-2026-112706 cm.fdleak, cm.fdleak.boundary CoreMedia · mediaplaybackd.bytestream.xpc 信息泄露 系统进程 CoreMedia bytestream XPC 跨沙盒文件描述符获取 CVE-2026-112706.swift · CVE-2026-112706.c
CVE-2026-113907 aud.haptic, aud.immersive AudioToolbox · AVHapticServerInstance OOB 写 系统进程 AVHaptic 自定义音频事件格式校验 CVE-2026-113907.swift · CVE-2026-113907.c
CVE-2026-113910 kern.decmpfs XNU · AppleFSCompressionTypeZlib 信息泄露 内核 decmpfs 分块解压欠产出 → 内核堆泄露 CVE-2026-113910.swift · CVE-2026-113910.c
CVE-2026-113912 / 86972 aud.drc AudioCodecs · mpddrc::UniDrcSelection OOB 读 系统进程 MPEG-D DRC 下混矩阵系数校验 CVE-2026-113912.swift · CVE-2026-113912.c
CVE-2026-65385 kext.iohid IOKit.framework · IOHIDEventAppendEvent OOB 写 内核 IOKit 事件短堆固定偏移写 CVE-2026-65385.swift · CVE-2026-65385.c

无 CVE 模块 — 11 个

模块 组件 标题 文件
kern.baseline XNU · mach_port Mach 命名空间基线 kern.baseline.swift
probe.privset 沙盒 / 签名 / entitlements 本进程权限面 probe.privset.swift
arc.rr libarchive · RockRidge CL/PL RockRidge 重定位环(未修复孪生) arc.rr.py · arc.rr.swift
sbx.toctou libsystem_sandbox · sandbox_extension_issue_file sandbox_extension 符号链接 TOCTOU 越界读 sbx.toctou.swift
tool.ipa IPASurgeon · MachO · ZipWriter IPA 手术自检(改包名 / 注入 / 重签名准备) tool.ipa.swift
tool.zip ZipWriter + libarchive ZIP 写入器往返自检 tool.zip.swift
tool.macho MachO · MachOInspector Mach-O 解析器自检 tool.macho.swift
tool.hex HexTool 十六进制查找替换自检 tool.hex.swift
tool.container Container · ensureAll / probe / repair / normalize 容器读写正常化(数据容器自检 + 修复) tool.container.swift
tool.backup BackupPane · ZipWriter · libarchive 备份 / 回滚往返自检 tool.backup.swift
tool.paths Probe · FileManager 文件系统权限矩阵全扫 tool.paths.swift

POC 文件解剖(.swift)

每个文件由五段构成,除注释外全部为 Cinder27 源码 verbatim 提取:

  1. 双语头 — 模块 id、组件、CVE、原语 / 触达 / tier、中英文摘要
  2. 判别 / oracle — 该漏洞在本机上的可观测信号(崩溃点、返回码分布、多次解码指纹比对、超时窗口……)
  3. enum B — 字节助手(来自 Sources/Kit.swift)
  4. 种子构造 — payload 构建器及其依赖闭包(来自 Sources/Payloads.swift / Payloads2.swift;Entry / BitWriter / PDFBuilder 等结构体按引用自动带上)
  5. 触发器 — 模块 run 闭包原文(注释块;引用 RunContext / Runners / tl(),在 app 验证台内执行)

种子组的 .py 是同一构建器的 Python 原文(来自 scripts/gen_seeds.py),带 __main__ 写盘入口,可直接运行。

C POC 文件(.c)的结构

每个 CVE 文件夹还带一个 C 双子——同一验证的纯 C 实现,直接在 macOS arm64 主机上编译运行(无 Swift 运行时、不依赖 app):

  1. 头部注释 —— 模块 · 框架 · 漏洞函数 · CVE,一行漏洞类别,C twin of the Swift POC 标注,Build: / Run: 行;多变体模块注明哪个变体在 main() 里跑
  2. 种子构造 —— 与 Swift 构建器相同的载荷文法,纯手写:位写入器、字节缓冲、结构体发射
  3. 触发 —— 漏洞入口本身。公开框架直接链接(VTDecompressionSessionCreate、AudioConverterNew、CGFontCreateWithDataProvider);私有符号运行时 dlsym 解析(CMGetDMVersionLevelFromRPU、Fig* XPC 家族、IOHIDEvent*)
  4. 预言机 —— 打印到 stdout:OSStatus 码、入口拒绝回执、XPC 回复类型、信号/崩溃结果
  5. main() —— Swift 版可参数化的地方同样参数化(深度、块数、路径);种子文件写入工作目录备查

31 个全部 clang -O2 -Wall 零警告编译通过,且都在本机跑出记录在案的 oracle。

运行

# Python 种子构建器 — 独立可跑
python3 CVE-2026-112522/CVE-2026-112522.py out.iso        # → joliet_path_oob.iso 字节一致
python3 CVE-2026-112485/CVE-2026-112485.py deep_nest.usda
python3 CVE-2026-112625/CVE-2026-112625.py bad_dims.ktx2
python3 CVE-2026-112683/CVE-2026-112683.py stack_bomb.cff
python3 arc.rr/arc.rr.py out.iso

# Swift POC — 独立类型检查(无 app 依赖)
xcrun swiftc -parse-as-library -swift-version 5 -sdk "$(xcrun --sdk macosx --show-sdk-path)" \
  -target arm64-apple-macos14 -typecheck CVE-2026-112611/CVE-2026-112611.swift

# 完整触发(解码、竞态、崩溃 oracle)在 app 验证台内执行
bash scripts/build-sim.sh        # → build/sim/Cinder27.app 并安装到已启动的模拟器

# C 双子 —— 独立编译运行(macOS arm64)
clang -O2 -Wall -o /tmp/c112522 CVE-2026-112522/CVE-2026-112522.c    # 纯 C,无框架依赖
/tmp/c112522                                                        # → SIGTRAP:2 字节越界写
clang -O2 -Wall -o /tmp/c112706 CVE-2026-112706/CVE-2026-112706.c -fblocks -framework CoreFoundation
/tmp/c112706                                                        # → FigXPC 握手,'Connection invalid'

构建验证台 app

依赖:macOS + Xcode 命令行工具(xcode-select --install),无第三方包管理。

bash scripts/build-device.sh     # → dist/Cinder27-unsigned.ipa(arm64,iOS 17.0+,未签名)
bash scripts/build-sim.sh        # → build/sim/Cinder27.app(arm64 模拟器)
python3 scripts/gen_seeds.py     # → seeds/(app 内置种子,与 .py POC 产物逐字节一致)

设备安装:bundle id com.jbjf.cinder27(v2.0 build 3),未签名——用自有证书 + 匹配(或通配符)描述文件签名后侧载。

验证状态

51 模块全量回归(模拟器构建):47 done + 4 armed。

armed 不是超时——是死亡 oracle 命中:负载触发进程崩溃,journal 停在 armed、进程消失。cm.rpu / cm.rpu.sweep 的崩溃栈落在 CMGetDMVersionLevelFromRPU 内 SIGSEGV;C 双子钉死了机制——iOS 面是 4 参 (bytes, count, u32*, u32*) 形态,而 macOS 导出的是单 CFDataRef(反汇编验证:arg0 先走 CFRetain 式 GOT 调用才进 FigHEVCBridge_GetRPUMetadata),所以 Swift 的 4 参调用在模拟器的 CoreMedia 上死在入口。cg.shading / cg.shading.sweep 为 R=136 长溢出阶梯扫描,按设计在同一进程内推进到致命级。

31 个 C 双子全部零警告编译通过(clang -O2 -Wall,macOS arm64),且都在开发机上跑出记录在案的 oracle:112522 触发 SIGTRAP(2 字节越界写被 malloc 抓住)、112507 活过全程环竞态并带回 -300 / invalid-destination 回执、112706 回应 'Connection invalid'(macOS 无 mediaplaybackd bytestream XPC——静默服务判定)、112485 拿到 PEGTL 深度回执(Expected } at 'def Xform "n1999"')、113910 读回纯 0x41(macOS 上带数据的文件不走 decmpfs)。其余都在入口层被拒——与 app 验证台同形回执。

模块语义

  • tier 1 — 直接原语命中(OOB 写 / UAF / 类型混淆),崩溃即证据
  • tier 2 — 可观测信号(信息泄露指纹、返回码分布、超时窗口),需要比对基线
  • probe / baseline / tool — 环境探针、内核基线采样、设备修改工具(hex 编辑、xattr / decmpfs 手术、MachO 分析、容器 / 备份 / IPA 签名 / 路径 / zip)

app 内中英双语运行时切换(RuntimeText,633 键全映射,无硬编码 CJK 残留)。