A security flaw was found in the way strcoll() interface of glibc, the GNU libc libraries, performed failsafe back to alloca() routine when malloc() function call failed previously (due to out of memory [OOM] condition for example). If an application linked against glibc was missing an application-level sanity checks for validity of strcoll() arguments and accepted untrusted input, an attacker could use this flaw to cause the particular application to crash or, potentially, execute arbitrary code with the privileges of the user running the application.
Upstream bug report (including the reproducer): [1] http://sourceware.org/bugzilla/showbug.cgi?id=14552#c0
Issue / part: 1) alloca() stack overflow from [1].
References: [2] http://www.openwall.com/lists/oss-security/2012/09/07/9 [3] http://www.openwall.com/lists/oss-security/2012/09/07/15 [4] http://www.openwall.com/lists/oss-security/2012/09/10/1 [5] http://www.openwall.com/lists/oss-security/2012/09/10/3 [6] http://www.openwall.com/lists/oss-security/2012/09/13/16
It was reported that if a process that called glibc's svcrun() exceeded the limit of opened files for a longer period of time, that accept() in rendezvousrequest()/svcudprecv() would fail with the EMFILE error, which would lead to looping between poll(), accept(), and 'for' loops which would consume a lot of CPU time. This could lead to an unresponsive system that requires human intervention (service restart or system restart) to resolve.
Common Vulnerabilities and Exposures assigned an identifier CVE-2009-4880 to the following vulnerability:
Multiple integer overflows in the strfmon implementation in the GNU C Library (aka glibc or libc6) 2.10.1 and earlier allow context-dependent attackers to cause a denial of service (memory consumption or application crash) via a crafted format string, as demonstrated by a crafted first argument to the moneyformat function in PHP, a related issue to CVE-2008-1391.
References: [1] http://securityreason.com/achievementsecurityalert/67 [2] https://bugzilla.redhat.com/showbug.cgi?id=524671 [3] http://sources.redhat.com/bugzilla/showbug.cgi?id=10600 [4] http://sourceware.org/git/?p=glibc.git;a=commit;h=199eb0de8d673fb23aa127721054b4f1803d61f3 [5] http://www.ubuntu.com/usn/USN-944-1 [6] http://www.securityfocus.com/bid/36443 [7] http://secunia.com/advisories/39900 [8] http://www.vupen.com/english/advisories/2010/1246
Public PoC (from [3]):
[cx@localhost ~]$ php -r 'moneyformat("%.1073741821i",1);' Segmentation fault
Common Vulnerabilities and Exposures assigned an identifier CVE-2009-4881 to the following vulnerability:
Integer overflow in the vstrfmonl function in stdlib/strfmonl.c in the strfmon implementation in the GNU C Library (aka glibc or libc6) before 2.10.1 allows context-dependent attackers to cause a denial of service (application crash) via a crafted format string, as demonstrated by the %99999999999999999999n string, a related issue to CVE-2008-1391.
References: [1] http://sources.redhat.com/bugzilla/showbug.cgi?id=10600 [2] http://sourceware.org/git/?p=glibc.git;a=commit;h=153aa31b93be22e01b236375fb02a9f9b9a0195f [3] http://sources.redhat.com/bugzilla/showbug.cgi?id=10600 [4] http://securityreason.com/achievementsecurityalert/53 [5] http://xorl.wordpress.com/2009/04/11/cve-2008-1391-netbsd-strfmon-integer-overflow/
Public PoC (from [4]):
#include <stdio.h> #include <monetary.h>
int main(int argc, char argv[]){ char buff[51]; char bux=buff; int res;
res=strfmon(bux, 50, argv[1], "0"); return 0; }
cxib# ./pln %99999999999999999999n
The Sun RPC functionality in multiple libc implementations does not provide a time-out mechanism when reading data from TCP connections, which allows remote attackers to cause a denial of service (hang).