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 字节,破坏相邻的堆元数据。

利用步骤

  1. 构造恶意 .icc 配置文件:
  • 构建 ICC 头(128 字节),签名为 acsp,并包含一个 lutAToBTypelutBToAType 标签条目。
  • 在标签表中,将 offsetToCLUT 设置为标签的 sizetagDataSize)。
  • 在标签数据块后面放置攻击者控制的数据,以覆盖堆元数据。
  1. 触发解析:
bash
sips --verifyColor malicious.icc
  1. 堆元数据损坏: 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}}