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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-65349 — 针对 iOS 26.6 中 XNU 的 vfs_attr_pack_internal(getattrlist)越界写入的概念验证,演示内核堆破坏以及用于 PAC 指针伪造的利用说明。 | Kitploit
工具/GitHubGitHub/bytev0rtex/cve-2026-65349
iOS安全漏洞分析漏洞利用逆向工程二进制利用
GitHubbytev0rtex/cve-2026-65349

CVE-2026-65349

针对 iOS 26.6 中 XNU 的 vfs_attr_pack_internal(getattrlist)越界写入的概念验证,演示内核堆破坏以及用于 PAC 指针伪造的利用说明。

查看仓库
110小时22分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-65349 — vfs_attr_pack_internal 中的 getattrlist 越界写入

组件: XNU VFS — vfs_attr_pack_internal(getattrlist 系统调用)
受影响版本: iOS / iPadOS 26.6 (23G71) 及更早版本
修复版本: iOS / iPadOS 26.6.1 (23G83)
类型: 对调用者缓冲区进行越界写入
影响: 内核堆损坏;在内核上下文中(获得内核读写能力后),可向攻击者控制的缓冲区写入 PAC 签名指针


致谢

由匿名研究人员发现
(依据 Apple 安全公告 — iOS 26.6.1)


根本原因

vfs_attr_pack_internal 遍历请求的属性位图,并将每个属性顺序写入调用者的缓冲区。在写入属性槽位 51(SETXATTR_SLOT)之前,它不会检查当前输出偏移是否已超过 bufsize。

对于文件名为 16 个字符的文件,完整有效的属性输出为 0x1a4(420)字节。槽位 51 从偏移 0x198(408 字节)处开始。当调用者提供的缓冲区小于 0x198 + 8 时,内核会向缓冲区末尾之外写入 8 字节:

root@kitploit:~
; vfs_attr_pack_internal(受影响路径,26.6 / 23G71)
; 槽位 51 写入 — 存储前无边界检查
str  x_attr_data, [buf + 0x198]   ; 若 bufsize < 0x198 + 8 则越界

属性位图

通过设备端探测验证的有效属性掩码(在 16 字符文件名上执行 getattrlist,iOS 26.6):

字段掩码
commonattr0xffe7ffff(位 19、20 在此内核上无效)
fileattr0x0000363f
forkattr0xffffe003

在 16 字符文件名上使用这些掩码时,总输出 = 0x1a4 字节。只要 bufsize < 0x1a0,越界就会发生在槽位 51(buf+0x198)处。


iOS 26 利用说明

在 iOS 26 上,KHEAP_TEMP 隔离机制使得从用户空间进行的越界写入无法以有效方式直接破坏相邻的堆分配。在本研究中,该漏洞被归类为仅限内核堆:

  • 从用户空间:越界写入会命中调用者自身的用户栈/堆 — 可观察到,但若无额外原语,则无法用于权限提升。
  • 从内核上下文(在通过 CVE-2026-64788 获得内核写入原语之后):通过越界偏移将 PAC 签名指针写入内核缓冲区,然后从受控调用点触发 vfs_attr_pack_internal。

在 iOS 26.6 越狱链中,此漏洞在最后阶段被用于将 PACIA 伪造指针写入与调用者缓冲区相邻的内核分配中。


PoC 行为

poc_getattrlist_oob.c 通过三次调用演示越界边界:

PoC 创建一个 16 字符文件名(/var/root/aaaaaaaaaaaaaaaa)作为测试目标,执行全部三次 getattrlist() 调用,并打印返回码。内核崩溃日志(若触发)将显示在 buf+0x198 处出现故障。


要求

  • iOS 26.6 (23G71) 或更早版本
  • /var/root/ 写入权限(用于创建 16 字符测试文件;路径可调整为任何可写位置)
  • 无需任何权限

构建

root@kitploit:~
# 独立 C 二进制 — 无需框架
clang -arch arm64 -o poc poc/poc_getattrlist_oob.c

# 在设备上运行:
clang -arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) \
      -o poc poc/poc_getattrlist_oob.c
codesign -s "Apple Development" poc

时间线

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

参考

  • Apple 安全公告 — iOS 26.6.1
下载工具
调用缓冲区大小预期结果
164 字节内核写入 0x1a4 字节 → 在 buf+0x198 处越界(超出末尾 344 字节)
20x198 字节越界写入恰好从缓冲区末尾开始
30x1a4 字节精确有效大小 → 完全成功