Apple QuickTime Image Description Atom Sign Extension Memory Corruption
Apple has just released a new version of QuickTime. This version includes a fix to a vulnerability I reported to them back in March.
I would like to thank Apple for the efficient way in which they handled this security issue.The following is the advisory.
For video media, the general sample description format is extended by the following structure:
"((width+(4-width%4))*4 & 0xFFFF" where 'width' is taken from the RPZA sample description entry (offset 30).
If width >= 0x5FFD, then [ESP+4C] >= 0x8000.
Sign-extending such values results in very large unsigned values, as their most significant word becomes 0xFFFF (so 0x8000 is sign-extended to 0xFFFF8000).
to alter the normal control flow of the application and execute arbitrary code.
A simple attack vector would be to lure the victim to browse to a web site controlled by the attacker, which serves a malicious QuickTime file that exploits this vulnerability.
QuickTime 7.6 (472)
2. BID: 35166
2. QuickTime File Format Specification, Apple Inc.
3. Apple QuickTime Image Description Atom Sign Extension Vulnerability, SecurityFocus
4. QuickTime patched
I would like to thank Apple for the efficient way in which they handled this security issue.The following is the advisory.
INTRODUCTION
According to QuickTime's specification, The sample description atom (STSD) stores information that allows QuickTime to decode samples in the media. It has the following structure: The structure of each entry in the sample description table varies by the media type, however the first four fields are the same for all media types: These four fields may be followed by additional data specific to the media type and data format.For video media, the general sample description format is extended by the following structure:
VULNERABILITY DETAILS
When the data format field (offset 4 of the sample description table extension) is 'RPZA' (Apple Video), it is possible to trigger a sign extension vulnerability which leads to a buffer underflow. The following is the faulty sign extended MOV: [ESP+4C] contains a user controlled input, which is equal to"((width+(4-width%4))*4 & 0xFFFF" where 'width' is taken from the RPZA sample description entry (offset 30).
If width >= 0x5FFD, then [ESP+4C] >= 0x8000.
Sign-extending such values results in very large unsigned values, as their most significant word becomes 0xFFFF (so 0x8000 is sign-extended to 0xFFFF8000).
Deeper in the code, the user controllable sign-extended value is treated as the size of a structure.
A vector of this structure is walked over:
[1] At each iteration the base pointer is incremented by the user's controlled sign-extended value. This means that it is possible to force the pointer to reference memory regions below the vector's VA:
[2] At each iteration values are written to an element in the vector (a single structure) which is referenced by the incremented pointer. This means that it is possible to write to memory regions below the buffer's VA.
IMPACT
By writing to memory regions below the buffer's VA, An attacker may overwrite crucial data such as function pointers, flags, heap structures and so forth. Doing so may allow an attackerto alter the normal control flow of the application and execute arbitrary code.
A simple attack vector would be to lure the victim to browse to a web site controlled by the attacker, which serves a malicious QuickTime file that exploits this vulnerability.
TEST ENVIRONMENT
Windows XP Service Pack 3QuickTime 7.6 (472)
REMEDIATION
A new version of QuickTime (7.6.2) has been released in order to address this issue.IDENTIFIERS
1. CVE-ID: CVE-2009-09552. BID: 35166
REFERENCES
1. Apple's advisory, Apple Inc.2. QuickTime File Format Specification, Apple Inc.
3. Apple QuickTime Image Description Atom Sign Extension Vulnerability, SecurityFocus
4. QuickTime patched