Apple QuickTime JPEG 2000 Integer Underflow

January 18, 2012

QuickTime is an extensible proprietary multimedia framework developed by Apple Inc. It is capable of handling various formats of digital video, picture, sound, panoramic images, and interactivity, including JPEG 2000 media data. QuickTime is integrated with Mac OS X, and it also supports Microsoft Windows.

JPEG 2000 is an image compression standard and coding system. The JPEG 2000 specification was designed as a replacement to the original JPEG standard, providing features such as efficient variable quality decoding, and efficient low-resolution decoding. The standardized filename extension for JPEG 2000 data is .jp2 for ISO/IEC 15444-1 conforming files and .jpx for the extended part-2 specifications, published as ISO/IEC 15444-2. JPEG 2000 data is stored in codestreams.

A codestream is a bit-sequence containing all information required for the decoding of an image, and consists of a main header, a sequence of tile-parts (which contain the actual image data), and finishes with an end-of-codestream (EOC) marker. A tile-part consists of a tile-part header and tile-part data. The main header of a codestream is composed by the following markers:

 | SOC | SIZ | COD | COC | QCD | QCC | RGN | POD | PPM | TLM | PLM | CME | 

A vulnerability exists in Apple QuickTime when processing invalid JPEG 2000 marker and its contents from JP2 files. Specifically, the vulnerability is due to an integer underflow when calculating with one of the content values. A remote attacker may exploit this vulnerability to inject and execute malicious code in the target system. And the malicious code will be executed in the security context of the target user.

SonicWALL UTM team has researched this vulnerability and released the following IPS signature to cover the attack attempts addressing this vulnerability.

  • 7298 Apple QuickTime JPEG 2000 COD Length Integer Underflow

This vulnerability has been referred by CVE as CVE-2011-3250.