Public Vulnerability Reports

Multiple Vendor libchm Page Block Length Memory Corruption Vulnerability



CHMlib is an open source library used to read Microsoft CHM, compressed HTML, files. CHM files were originally designed for use by Microsoft as help files, but are now commonly used to store e-books. The 'xchm' program uses CHMlib to display CHM files. More information can be found on the package's website:


CHM files contain various tables and objects stored in "pages." When parsing a page of objects, CHMlib passes an unsanitized value from the file to the alloca() function. This allows an attacker to shift the stack pointer to point to arbitrary locations in memory. Consequently it is possible to write arbitrary data from the file to arbitrary memory locations.


Successful exploitation of this vulnerability allows an attacker to execute arbitrary code with the permissions of the user viewing the file. An attacker would have to first convince the user to view the CHM file through some type of social engineering.


iDefense has confirmed the existence of this vulnerability in CHMlib version 0.38.


iDefense is currently unaware of any workarounds for this issue.


The CHMlib maintainer has addressed this issue in version 0.39.


A Mitre Corp. Common Vulnerabilities and Exposures (CVE) number has not been assigned yet.


01/24/2007 Initial vendor notification
01/24/2007 Initial vendor response
01/26/2007 Coordinated public disclosure


Sean Larsson (iDefense Labs) is credited with the discovery of this vulnerability.

Get paid for vulnerability research

Free tools, research and upcoming events


Copyright © 2006 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.