CVE-2015-8895: Integer Overflow
A vulnerability of integer overflow and subsequent buffer overflow was found in coders/icon.c. Memory is allocated based on the sum of a user-supplied value and a fixed value. That sum can overflow, causing only a small amount of memory to be allocated, while the program assumes more was allocated.
Vulnerable code:
iconfile.directory[i].offset=ReadBlobLSBLong(image);
On this line, it reads in 4byte value from the image and stores it in iconfile.directory[i].size.
length=iconfile.directory[i].size; png=(unsigned char ) AcquireQuantumMemory(length+16,sizeof(png));
Here the value of length is set to the value stored in iconfile.directory[i].size. At following line, 16 is added to length and allocates that amount of png structures. However, if length+16 overflows (for example, length == 2^32 - 15), it will only allocate memory for a single png. This is a problem, because the following lines assume that at least 16 bytes was allocated:
(void) CopyMagickMemory(png,"\211PNG\r\n\032\n\000\000\000\015",12); png[12]=(unsigned char) iconinfo.planes; png[13]=(unsigned char) (iconinfo.planes >> 8); png[14]=(unsigned char) iconinfo.bitsperpixel; png[15]=(unsigned char) (iconinfo.bitsperpixel >> 8);
And then the following line has a call to ReadBlob, and since length-16 will underflow (and the length is treated as a sizet), it will effectively execute a strcpy with the remaining data in the image file.
count=ReadBlob(image,length-16,png+16);
Detailed stacktrace with reproducer can be found here:
https://bugs.launchpad.net/ubuntu/+source/imagemagick/+bug/1459747
Upstream patch (only the "coders/icon.c" subsection of the commit is relevant):
https://github.com/ImageMagick/ImageMagick/commit/0f6fc2d5bf8f500820c3dbcf0d23ee14f2d9f734
CVE request:
http://seclists.org/oss-sec/2015/q4/45
Other sources
Integer overflow in coders/icon.c in ImageMagick 6.9.1-3 and later allows remote attackers to cause a denial of service (application crash) via a crafted length value, which triggers a buffer overflow.
— MITRE
Affected Software
Remediation
Patch Available
Event History
Frequently Asked Questions
What is the severity of CVE-2015-8895?
CVE-2015-8895 has a high severity rating due to its potential to cause a denial of service through a buffer overflow.
How do I fix CVE-2015-8895?
To fix CVE-2015-8895, you should update to a patched version of ImageMagick beyond 6.9.1-9.
What types of systems are affected by CVE-2015-8895?
CVE-2015-8895 affects multiple versions of ImageMagick including versions from 6.9.1-3 to 7.0.5-0.
What is the impact of CVE-2015-8895 on applications?
The impact of CVE-2015-8895 can lead to application crashes and potential service interruptions.
Can CVE-2015-8895 be exploited remotely?
Yes, CVE-2015-8895 can be exploited remotely by sending specially crafted input to the ImageMagick application.