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

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

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

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

工具目录

分类

查看所有分类
Loading categories
iOS26.6-CVE-2026-65343 — CVE-2026-65343 PoC — AppleKeyStore 越界读取 → 绕过 KASLR(iOS 26.6 / 23G71) | Kitploit
工具/GitHubGitHub/amorcool/ios26.6-cve-2026-65343
漏洞利用框架iOS安全漏洞分析漏洞利用逆向工程移动安全二进制利用
GitHubamorcool/ios26.6-cve-2026-65343

iOS26.6-CVE-2026-65343

CVE-2026-65343 PoC — AppleKeyStore 越界读取 → 绕过 KASLR(iOS 26.6 / 23G71)

查看仓库
1天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-65343 — AppleKeyStore 越界读取(KASLR 绕过)

组件: AppleKeyStore 内核扩展 — _LibSer_SEPControl_Deserialize
受影响版本: iOS / iPadOS 26.6 (23G71) 及更早版本
修复版本: iOS / iPadOS 26.6.1 (23G83)
类型: SEP 控制消息反序列化中的越界读取
影响: 内核指针泄露 → 从沙盒、无权限进程中绕过 KASLR(通过 DYLD_INTERPOSE ACM 句柄捕获)


致谢

发现者:Drinor Selmanaj (Sentry)、Surya Narayan Kushwaha
(依据 Apple 安全公告 — iOS 26.6.1)


根本原因

AppleKeyStore 内核扩展中的 _LibSer_SEPControl_Deserialize 将 ACM(凭据管理器)消息缓冲区中的 (payload_ptr, declared_length) 对通过 copyout() 发布到用户空间,。

但未验证 declared_length ≤ remaining

通过提供 declared_length = 0x800,驱动程序会从内核 ACM 消息缓冲区末尾之外复制约 0x7E8 字节 — 读取到相邻的内核堆分配区域。这些相邻区域包含可用于计算 KASLR slide 的内核指针(0xfffffff0xxxxxxxx)。

root@kitploit:~
; _LibSer_SEPControl_Deserialize(受影响路径,26.6 / 23G71)
ldr  w2, [acm_msg + declared_length_offset]  ; 用户可控的 0x800
; 无检查:w2 <= (acm_msg_end - payload_ptr) ← 缺失
bl   copyout                                  ; 将 w2 字节复制到用户空间

ACM 句柄捕获(DYLD_INTERPOSE)

直接调用 IOServiceOpen("AppleKeyStore") 会被沙盒对侧载应用阻止。然而,Security.framework 的安全隔区密钥签名路径会在进程内使用真实的 ACM 会话句柄调用 IOConnectCallMethod。

PoC 使用 __DATA,__interpose 钩子(在 dyld 加载时运行,早于 __DATA_CONST 变为只读 — fishhook 在 iOS 26 上因 DATA_CONST 保护而被阻止):

  1. 启用 interpose 捕获标志
  2. SecKeyCreateRandomKey(kSecAttrTokenIDSecureEnclave) → SecKeyCreateSignature() → 进程内 IOConnectCallMethod 以真实 ACM 句柄触发
  3. 捕获 (conn, handle[16])
  4. 以 declared_length = 0x800 跨 163 个 AKS 选择器重放
  5. 扫描输出中的 0xfffffff0xxxxxxxx 内核指针 → 计算 KASLR slide

PoC 行为

poc_aks_oob.m 实现了完整的 ACM 句柄捕获和 OOB 探测链:

  • 创建安全隔区 P-256 密钥(kSecAttrAccessibleAfterFirstUnlock,无生物识别)
  • 对 32 字节消息签名以触发进程内 AKS IOKit 调用
  • 以 declared_length = 0x800 跨全部 163 个 AKS 选择器重放
  • 打印在 KPTR @+XXXX = 0xfffffff0YYYYYYYY 处发现的任何内核指针
  • 尝试从已知的 AKS 符号偏移计算 KASLR slide

如果 SE 密钥签名通过 secd XPC 而非进程内路由,则回退探测使用零句柄(确认 OOB 路径可达性;所有选择器将无法通过 ACM 验证,但 VNOP 路径已确认)。


iOS 26 说明:fishhook 被阻止

在 iOS 26 上,__DATA_CONST(包含 GOT)在任何进程内代码运行之前就被映射为只读。运行时 GOT 写入(如 fishhook 所使用的)会触发 KERN_PROTECTION_FAILURE → SIGBUS。通过 __DATA,__interpose 的 DYLD_INTERPOSE 之所以有效,是因为 dyld 在镜像加载时处理 interpose 表,早于内核强制执行 __DATA_CONST 保护。


要求

  • iOS 26.6 (23G71) 或更早版本
  • 安全隔区访问权限(kSecAttrTokenIDSecureEnclave)— 任何无权限的侧载应用均可使用
  • 无需沙盒逃逸:通过 Security.framework 的 SE 密钥签名可能会在进程内调用 AKS IOKit 调用 (取决于设备和 iOS 构建版本)。在某些配置下,该调用会通过 secd XPC 路由 — 在这种情况下,零句柄回退可确认 OOB 路径可达性,但无法实现完整的 KASLR 绕过。

构建

root@kitploit:~
# Xcode 项目 — 链接 Security.framework 和 Foundation.framework
clang -arch arm64 \
      -isysroot $(xcrun --sdk iphoneos --show-sdk-path) \
      -framework Security -framework Foundation \
      -o poc poc/poc_aks_oob.m

codesign -s "Apple Development" --entitlements ent.plist poc

最低权限要求(ent.plist):

root@kitploit:~
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
    <key>keychain-access-groups</key>
    <array><string>$(AppIdentifierPrefix)com.research.poc65343</string></array>
</dict></plist>

时间线

日期事件
2026-08-17iOS 26.6.1 发布并包含修复
2026-08-17Apple 在安全公告中发布致谢

参考

  • Apple 安全公告 — iOS 26.6.1
下载工具