WWW2Exec - sips ICC Profile Out-of-Bounds Write (CVE-2024-44236)
Reading time: 2 minutes
概述
Apple macOS Scriptable Image Processing System (sips) ICC 配置文件解析器中的越界写入漏洞(macOS 15.0.1, sips-307),由于对 lutAToBType (mAB ) 和 lutBToAType (mBA ) 标签中的 offsetToCLUT 字段的验证不当。一个精心制作的 ICC 文件可以触发零写,最多达到堆缓冲区之后的 16 字节,破坏堆元数据或函数指针,并启用任意代码执行(CVE-2024-44236)。
易受攻击的代码
易受攻击的函数从攻击者控制的偏移量开始读取并将 16 字节置为零,而不确保其位于分配的缓冲区内:
c
// Pseudocode from sub_1000194D0 in sips-307 (macOS 15.0.1)
for (i = offsetToCLUT; i < offsetToCLUT + 16; i++) {
if (i > numberOfInputChannels && buffer[i] != 0)
buffer[i] = 0;
}
仅执行检查 offsetToCLUT <= totalDataLength。通过设置 offsetToCLUT == tagDataSize,循环索引到 buffer 末尾之后的 16 字节,破坏相邻的堆元数据。
利用步骤
- 构造恶意
.icc配置文件:
- 构建 ICC 头(128 字节),签名为
acsp,并包含一个lutAToBType或lutBToAType标签条目。 - 在标签表中,将
offsetToCLUT设置为标签的size(tagDataSize)。 - 在标签数据块后面放置攻击者控制的数据,以覆盖堆元数据。
- 触发解析:
bash
sips --verifyColor malicious.icc
- 堆元数据损坏: OOB 零写覆盖分配器元数据或相邻指针,使攻击者能够劫持控制流并在
sips进程的上下文中实现任意代码执行。
影响
成功利用会导致在运行易受攻击的 sips 实用程序的 macOS 系统上以用户权限进行远程任意代码执行。
检测
- 监控常见协议(FTP、HTTP/S、IMAP、SMB、NFS、SMTP)上的文件传输。
- 检查传输的文件是否具有签名
acsp。 - 对于每个
mAB或mBA标签,验证Offset to CLUT字段是否等于Tag data size。 - 如果满足此条件,则标记为可疑。
参考
- ZDI 博客:CVE-2024-44236:Apple macOS sips 实用程序中的远程代码执行漏洞 https://www.thezdi.com/blog/2025/5/7/cve-2024-44236-remote-code-execution-vulnerability-in-apple-macos
- Apple 2024 年 10 月安全更新(修补 CVE-2024-44236) https://support.apple.com/en-us/121564
{{#include ../banners/hacktricks-training.md}}
HackTricks