CVE-2024-44236: Remote Code Execution vulnerability in Apple macOS

May 07, 2025 | Trend Micro Research Team

In this excerpt of a Trend Vulnerability Research Service vulnerability report, Nikolai Skliarenko and Yazhi Wang of the Trend™ Research Team detail a recently patched code execution vulnerability in the Apple macOS operating system. This bug was originally discovered by Hossein Lotfi of the Trend™  Zero Day Initiative. Successful exploitation could result in arbitrary code execution on the target machine in the context of the running process. The following is a portion of their write-up covering CVE-2024-44236, with a few minimal modifications.


An out-of-bounds write vulnerability has been reported in macOS. The vulnerability is due to the lack of proper validation of “lutAToBType” and “lutBToAType” tag types.

A remote attacker could exploit this vulnerability by enticing a victim to open a crafted file. A successful attack may result in code execution on the victim's machine in the context of the running process.

The Vulnerability

The Scriptable Image Processing System (sips) is a terminal utility included in macOS that allows a user to verify, edit, and print out information about ICC Profile files and images.

An ICC (International Color Consortium) Profile is a set of data that characterizes a color input or output device, or a color space, according to the standards by ICC. Every device that captures or displays color can have its own profile.

An ICC Profile file consists of a Header, Tag Table, and tagged element data:

The Header has the following format:

The Tag Table consists of a number of Individual Tag Structures in the following format:

The tagged element data is located after the Tag Table. Each data structure starts with a 4-byte signature, which is followed by a tag type-specific data. The two tag types relevant to the vulnerability are lutAToBType and lutBToAType. Both of those types use a similar format for storing the data:

The offsets are relative to the beginning of the tagged element data. Signature "\x6d\x42\x41\x20" is used for lutBToAType, and signature "\x6d\x41\x42\x20" is used for lutAToBType.

The function sub_1000194D0() handles those structures. The first 16 bytes starting from the value of the "Offset to CLUT" field are checked. If the index of the byte is bigger than the value of the "Number of input channels" field, and the value of the said byte is not a null, it will be changed to zero. Due to the insufficient validation of the "Offset to CLUT" field value, it is possible to set an offset equal to the total length of the tagged element data. That would cause the function to read and possibly modify memory up to 16 bytes past the end of the heap-allocated buffer.

A remote attacker could exploit this vulnerability by crafting a malicious ICC Profile file and enticing the victim to process it using a vulnerable version of sips tools. Successful exploitation could result in the execution of arbitrary code in the security context of the target user.

Source Code Walkthrough

The following code snippet was taken from sips version sips-307 for macOS 15.0.1. Comments added by Trend Research have been highlighted.

In sub_1000194D0():

Detection Guidance

To detect an attack exploiting this vulnerability, the detection device must monitor and parse traffic on the ports that can be used to deliver an attack that exploits this vulnerability. These include the following ports and services:

•            FTP, over ports 20/TCP, 21/TCP
•            HTTP, over port 80/TCP
•            HTTPS, over port 443/TCP
•            IMAP, over port 143/TCP
•            NFS, over ports 2049/TCP, 2049/UDP, 111/TCP, 111/UDP
•            POP3, over port 110/TCP
•            SMB/CIFS, over ports 139/TCP, 445/TCP
•            SMTP, over port 25/TCP

The detection device must monitor for transfer of ICC Profile files. If such a file transfer is found, the detection device must inspect its contents.

The detection device should verify that the Profile signature field in the Header is equal to the following byte string "\x61\x63\x73\x70". If found, the detection device should get the Count of tags value and compute the size of the Tag Table. After doing that, the Individual Tag Structures from the Tag Table must be processed. For each structure, the tagged element data located at the Offset to tag data from the beginning of the file must be inspected. If the data starts with "\x6d\x42\x41\x20" or "\x6d\x41\x42\x20", the value of the Offset to CLUT field must be checked. If it's equal to the Tag data size field from the corresponding Individual Tag Structure, the traffic should be considered suspicious; an attack exploiting this vulnerability is likely underway.

Notes:

•   All integers in the described structures are in the big-endian format 

Conclusion

This vulnerability was patched by the vendor in October. To date, no attacks have been detected in the wild. Apple does not provide any mitigations for this bug, so it is recommended to apply the vendor patch to completely address this issue.

Special thanks to Nikolai Skliarenko and Yazhi Wang of the Trend Research Team for providing such a thorough analysis of this vulnerability. For an overview of Trend Research services, please visit http://go.trendmicro.com/tis/.

The threat research team will be back with other great vulnerability analysis reports in the future. Until then, follow the team on Twitter, Mastodon, LinkedIn, or Bluesky for the latest in exploit techniques and security patches.

OSZAR »