Pack200 is a compression method introduced by Sun in the 1.5 release of the JRE. It is used to compress JAR files, and is optimized for the compression of Java class files. A Java applet can be compressed using the pack200 tool, and if the browser plug-in supports the pack200-gzip encoding it will pass the compressed JAR file to the JRE for unpacking. For more information, see the vendor's site at the following links.
Remote exploitation of an integer overflow vulnerability in Sun Microsystems Inc.'s Java Runtime Environment (JRE) could allow an attacker to execute arbitrary code with the privileges of the current user.
The vulnerability occurs when reading the header of the Pack200 compressed Jar file during decompression. To calculate the size of a heap buffer, the code multiplies and adds several 32-bit integers. The bounds of these values are not checked, and the arithmetic operations can overflow. This results in an undersized buffer being allocated, which leads to a heap-based buffer overflow.
This vulnerability is similar to two previous iDefense Exclusives in the JRE Pack200 code and is due to an incomplete fix of the previous vulnerabilities.
Exploitation allows attackers to execute arbitrary code in the context of the currently logged-on user. To exploit this vulnerability, a targeted user must load a malicious Web page created by an attacker. An attacker typically accomplishes this via social engineering or injecting content into compromised, trusted sites.
iDefense has confirmed the existence of this vulnerability in Sun Microsystems Inc.'s JRE version 1.6.0_13 for Windows and Linux. This vulnerability is different than the two previously reported iDefense Exclusives in the Pack200 code.
The library containing the vulnerability can be renamed, which will prevent it from being loaded. This workaround will prevent users from loading Pack200 format JAR files and from using the pack/unpack tools that come with the JRE; however, normal applets and Java applications will continue to function correctly. The vulnerable library is called "unpack" and can be found in:
"%SYSTEMDRIVE%Program FilesJavaJAVA VERSIONbinunpack.dll"
on Windows and in differing locations, dependent upon the distribution/platform on Unix systems.
Sun Microsystems Inc. has released a patch which addresses this issue. For more information, consult their advisory at the following URL:
A Mitre Corp. Common Vulnerabilities and Exposures (CVE) number has not been assigned yet.
04/09/2009 - Initial Contact
04/13/2009 - PoC Requested
04/13/2009 - Clarification Requested
04/13/2009 - PoC Sent
04/21/2009 - Clarification Sent
07/22/2009 - Tentative Disclosure set for July 27, 2009
07/22/2009 - Requested CVE
07/22/2009 - Sun delays disclosures
07/28/2009 - Tentative Disclosure set for August 3rd, 2009
08/04/2009 - Coordinated public disclosure
This vulnerability was reported to iDefense by regenrecht.
Get paid for vulnerability research
Free tools, research and upcoming events
Copyright © 2009 Verisign, Inc.
Permission is granted for the redistribution of this alert electronically. It may not be edited in any way without the express written consent of iDefense. If you wish to reprint the whole or any part of this alert in any other medium other than electronically, please e-mail customer service for permission.
Disclaimer: The information in the advisory is believed to be accurate at the time of publishing based on currently available information. Use of the information constitutes acceptance for use in an AS IS condition. There are no warranties with regard to this information. Neither the author nor the publisher accepts any liability for any direct, indirect, or consequential loss or damage arising from use of, or reliance on, this information.