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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/r3n3r0/cve-2026-20700
漏洞分析漏洞利用逆向工程ShellcodeCTF硬件安全论文与研究学习与教育Payload 开发二进制利用实验室与实践
GitHub
10363个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
r3n3r0/cve-2026-20700

CVE-2026-20700

PoC 演示了通过 arm64e 上手工构造的 Mach-O 链式修复,将 dyld 用作 PAC 签名预言机,从而在 iOS 上实现受控的 PAC 有效指针写入与分发回调执行。

查看仓库
分享

dyld-signing-oracle-poc

对 dyld 的 page-in 链接和 chained fixup 机制进行的一次受控探索,将其作为 PAC 签名预言机,背景为 CVE-2026-20700。

在 arm64e 上,每个函数指针都经过硬件认证。这里的目标是展示:通过手工构造的 Mach-O,dyld 本身可以被引导——仅利用其自身的常规 fixup 机制——向攻击者选定的槽位写出 PAC 有效的指针。

已在以下设备上测试:iPhone 14(iOS 18.5,arm64e)。


演示内容

  1. 受控的 chained-fixup 绑定 — dyld 接受手工构造的 Mach-O dylib,并针对其自身 __DATA 中选定的槽位写入 PAC 有效的函数指针。
  2. 在 fixupPage64 中确定性崩溃 — 畸形的 page_start / next 值使 dyld 越出页边界,证明分支可达性。
  3. Dispatch 事件循环执行 — dyld 写入的 PAC 有效指针被注册为 dispatch_source_t 定时器处理函数,并通过事件循环自然调用,PoC 代码没有直接调用它。

仓库结构

root@kitploit:~
dyld-signing-oracle-poc/
├── Makefile                        ← orchestrates the full pipeline
├── src/
│   └── launcher.c                  ← iOS launcher (2 threads + dispatch chain-close)
├── generators/
│   ├── gen_exports.py              ← generates exports.c  (N dummy symbols)
│   ├── gen_client.py               ← generates client.c  (N imports, dyld gate stress)
│   └── gen_malformed_dylib.py      ← generates libmalformed.dylib (hand-crafted Mach-O)
├── tools/
│   ├── scan_pointers.py            ← classifies Mach-O pointer sections as W/R
│   └── inspect_fixups.py           ← parses LC_DYLD_CHAINED_FIXUPS header
└── blog/
    ├── it/
    │   └── dyld-signing-oracle.md  ← write-up completo in italiano
    └── en/
        └── dyld-signing-oracle.md  ← full write-up in English

构建产物(未提交)

文件生成方式
exports.cgenerators/gen_exports.py + Makefile 哨兵符号
client.cgenerators/gen_client.py
libmalformed.dylibgenerators/gen_malformed_dylib.py
libexports.dylib由 exports.c 通过 clang 编译
libclient.dylib由 client.c 通过 clang 编译
PoCApp由 src/launcher.c 通过 clang 编译
PoCApp.ipaMakefile package 步骤

环境要求

  • 搭载 Xcode 命令行工具的 macOS
  • iOS SDK(xcrun --sdk iphoneos --show-sdk-path)
  • Python 3
  • 真机测试:Sideloadly 或开发者证书 + 描述文件(provisioning profile)

构建

root@kitploit:~
# Default full build (arm64, 99k symbols)
make

# Fast build for iteration
make SYMBOLS=10000

预设

root@kitploit:~
# Deterministic crash in fixupPage64 (branch reachability proof)
make stress

# Stable intra-image write-what-where
make exploit

# dyld writes PAC-valid pointer → dispatch calls it naturally
make chain_close

分析工具

root@kitploit:~
# Verify generated chained-fixup blob layout
make verify

# Parse LC_DYLD_CHAINED_FIXUPS header of libmalformed.dylib
make inspect

# Scan pointer sections (GOT/non-lazy) across compiled binaries
make scan

可调参数

变量默认值描述
SYMBOLS99000libclient 中的绑定目标数量(26.3 之前门槛 < 100k,26.3 及之后 < 64k)
STACK_KB128工作线程栈大小(KB)
BURN_KB0dlopen 前要消耗的栈大小(KB);(0 = 自动)
MARGIN_KB24自动消耗的余量(KB)
ARM64E0使用 DYLD_CHAINED_PTR_ARM64E_USERLAND24 格式
MALFORM_PAGEIN0启用畸形的 page-in 链
MALFORM_TARGET_OFFSET—__DATA 内的目标偏移(例如 0x10)
CHAIN_CLOSE0第二个槽 → _attacker_hook,启用 dispatch 演示

在真机上安装

root@kitploit:~
# Ad-hoc signed (Sideloadly)
make chain_close
# drag PoCApp.ipa into Sideloadly

# Real certificate
make resign IDENTITY="iPhone Developer: ..." PROFILE=embedded.mobileprovision

# Monitor logs
idevicesyslog | grep "POC"

工作原理

PoCApp 内部的运行时加载顺序:

  1. libexports.dylib — 最先加载(RTLD_GLOBAL),为后续任何 dlopen 提供 write_target_value 和 attacker_hook。
  2. libclient.dylib — 由线程 B 加载(128KB 栈);约 99k 个绑定目标压力测试 dyld 的 page-in 链接门槛。
  3. libmalformed.dylib — 由线程 A 加载;手工构造的 chained-fixup 链使 dyld 解析并将 _write_target_value(以及可选的 _attacker_hook)写入 __DATA+0x10 / +0x20。
  4. 线程 A 读取写入的槽位,验证 canary 值,并调用 dyld 写入的函数指针。
  5. 在 chain_close 模式下,主线程将 __DATA+0x20 注册为 dispatch_source_t 定时器处理函数——事件循环在 1 秒后调用它,PoC 代码没有直接调用。

博客

完整技术文章提供意大利语和英语版本。涵盖:PAC 硬件机制、dyld 作为指针生成器、从零开始讲解 chained-fixup 编码、page-in 链接门槛机制、Mach-O 工程陷阱(sizeofcmds、节数量、stride)、canary 验证的数据布局、99k 符号门槛、可达性崩溃证明、稳定的镜像内原语、arm64e 签名预言机概念、dispatch 定时器 chain-close。

  • 🇮🇹 意大利语 — blog/it/dyld-signing-oracle.md
  • 🇬🇧 英语 — blog/en/dyld-signing-oracle.md
下载工具