CVE-2012-4505: Buffer Overflow
An insufficient input validation flaw, leading to a heap-based buffer overflow was found in libproxy 0.3.x in the pxpacreload() function. libproxy allocates a memory to store downloaded proxy.pac proxy auto-configuration file content using the Content-Length size from the remote server's HTTP response header. Allocation size is content length + 1. A malicious host hosting proxy.pac, or a man in the middle attacker, could use this flaw to make libproxy allocate insufficient amount of memory and subsequently overflow a heap-based buffer.
http://code.google.com/p/libproxy/source/browse/tags/libproxy-0.3.1/src/lib/pac.c#165
165 self->cache = pxmalloc0(contentlength+1); 166 for (int recvd=0 ; recvd != contentlength ; ) 167 recvd += recv(sock, self->cache + recvd, contentlength - recvd, 0);
This issue was confirmed with libproxy 0.3.x. Earlier 0.2.x versions seems to be affected too. It does not affect 0.4.x versions, where fixed size buffer is used.
Other sources
Heap-based buffer overflow in the pxpacreload function in lib/pac.c in libproxy 0.2.x and 0.3.x allows remote servers to have an unspecified impact via a crafted Content-Length size in an HTTP response header for a proxy.pac file request, a different vulnerability than CVE-2012-4504.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2012-4505?
CVE-2012-4505 is classified as a high-severity vulnerability due to its potential to cause a heap-based buffer overflow.
How do I fix CVE-2012-4505?
To fix CVE-2012-4505, upgrade libproxy to version 0.4 or higher as older versions are vulnerable.
What versions of libproxy are affected by CVE-2012-4505?
CVE-2012-4505 affects libproxy versions 0.2.3, 0.3.0, 0.3.1, and any version below 0.4.
What type of vulnerability is CVE-2012-4505?
CVE-2012-4505 is an insufficient input validation vulnerability that leads to a heap-based buffer overflow.
Can CVE-2012-4505 be exploited remotely?
Yes, CVE-2012-4505 can potentially be exploited remotely, allowing attackers to execute arbitrary code.