2.4 KiB
Raw Blame History

WWW2Exec - sips ICC Profile Out-of-Bounds Write (CVE-2024-44236)

{{#include ../../banners/hacktricks-training.md}}

概述

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 字节置为零,而不确保其位于分配的缓冲区内:

// 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. 触发解析:
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
  • 如果满足此条件,则标记为可疑。

参考

{{#include /banners/hacktricks-training.md}}