CVE-2012-0039: High severity glib vulnerability

Published Jan 9, 2012
·
Updated

DISPUTED GLib 2.31.8 and earlier, when the gstrhash function is used, computes hash values without restricting the ability to trigger hash collisions predictably, which allows context-dependent attackers to cause a denial of service (CPU consumption) via crafted input to an application that maintains a hash table. NOTE: this issue may be disputed by the vendor; the existence of the gstrhash function is not a vulnerability in the library, because callers of ghashtablenew and ghashtablenewfull can specify an arbitrary hash function that is appropriate for the application.

Other sources

It was reported [1] (and the original report [2]) that glib2 also suffers from algorithmic complexity attacks as described in oCERT-2011-003. While this was originally reported to upstream in 2003, it does not look as though anything was done to correct the problem. According to the Debian report, current glib2 is still vulnerable.

Doing a lookup on other gstrhash() functions, the following packages may also be vulnerable if they copied code from glib2:

arts-1.5.10/flow/gsl/gslglib.c:172: guint gstrhash (gconstpointer key) gettext-0.17/gettext-tools/gnulib-lib/glib/gstring.c:97: gstrhash (gconstpointer v) pkg-config-0.23/glib-1.2.10/gstring.c:72: gstrhash (gconstpointer key)

In addition to the above, the following are also in Red Hat Enterprise Linux 4:

glib-2.12.9/glib/gstring.c:91: gstrhash (gconstpointer v) (in frysk) glib-2.12.3/glib/gstring.c:91: gstrhash (gconstpointer v) (in evolution28-glib2)

And Fedora has a lot more:

glib-1.2.10/gstring.c:72: gstrhash (gconstpointer key) gnucash-2.4.7/src/libqof/qof/qofutil.c:275: static guint gstrhashKEY(gconstpointer v) libspectrum-1.0.0/myglib/ghash.c:253: gstrhash (gconstpointer v mono-2.10.5/eglib/src/ghashtable.c:598: gstrhash (gconstpointer v1) gettext-0.17/gettext-tools/gnulib-lib/glib/gstring.c:97: gstrhash (gconstpointer v) (in mingw32-gettext) gettext-0.17/gnulib-local/lib/glib/gstring.c:97: gstrhash (gconstpointer v) (in mingw32-gettext) glib-2.28.6/glib/gstring.c:137: gstrhash (gconstpointer v) (in mingw32-glib) nntpgrab-0.7.0/glue/gluejson.c:493: ngstrhash (gconstpointer v) Pacemaker-1-1-Pacemaker-1.1.6/lib/common/utils.c:2627: gstrhashtraditional(gconstpointer v) pacemaker-cloud-0.4.1/src/pcmkpe.c:133: gstrhashtraditionalcopy(gconstpointer v) qof-0.7.5/qof/qofutil.c:363: gstrhashKEY (gconstpointer v) tucnak2-2.31/src/error.c:246: void dbgstrhash(GHashTable hash){

Some of these may be nothing, (just doing a search for functions with the string gstrhash), but they probably need to be looked at to rule them out.

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=655044 [2] http://mail.gnome.org/archives/gtk-devel-list/2003-May/msg00111.html

Red Hat

Affected Software

257 affected components
Gnome GLib<=2.31.8
Gnome GLib=1.1.12
Gnome GLib=1.1.12-1
Gnome GLib=1.1.15
Gnome GLib=1.2.0
Gnome GLib=1.2.1
Gnome GLib=1.2.2
Gnome GLib=1.2.3
Gnome GLib=1.2.4
Gnome GLib=1.2.5
Gnome GLib=1.2.6
Gnome GLib=1.2.7
Gnome GLib=1.2.8
Gnome GLib=1.2.9
Gnome GLib=1.2.10
Gnome GLib=1.3.9
Gnome GLib=1.3.10
Gnome GLib=1.3.11
Gnome GLib=1.3.12
Gnome GLib=1.3.13
Gnome GLib=1.3.14
Gnome GLib=1.3.15
Gnome GLib=2.0
Gnome GLib=2.0.0
Gnome GLib=2.0.1
Gnome GLib=2.0.2
Gnome GLib=2.0.3
Gnome GLib=2.0.4
Gnome GLib=2.0.5
Gnome GLib=2.0.6
Gnome GLib=2.0.7
Gnome GLib=2.1.0
Gnome GLib=2.1.1
Gnome GLib=2.1.2
Gnome GLib=2.1.3
Gnome GLib=2.1.4
Gnome GLib=2.1.5
Gnome GLib=2.2.0
Gnome GLib=2.2.1
Gnome GLib=2.2.2
Gnome GLib=2.2.3
Gnome GLib=2.3.0
Gnome GLib=2.3.1
Gnome GLib=2.3.2
Gnome GLib=2.3.3
Gnome GLib=2.3.4
Gnome GLib=2.3.5
Gnome GLib=2.3.6
Gnome GLib=2.4.0
Gnome GLib=2.4.1
Gnome GLib=2.4.2
Gnome GLib=2.4.3
Gnome GLib=2.4.4
Gnome GLib=2.4.5
Gnome GLib=2.4.6
Gnome GLib=2.4.7
Gnome GLib=2.4.8
Gnome GLib=2.5.0
Gnome GLib=2.5.1
Gnome GLib=2.5.2
Gnome GLib=2.5.3
Gnome GLib=2.5.4
Gnome GLib=2.5.5
Gnome GLib=2.5.6
Gnome GLib=2.5.7
Gnome GLib=2.6.0
Gnome GLib=2.6.1
Gnome GLib=2.6.2
Gnome GLib=2.6.3
Gnome GLib=2.6.4
Gnome GLib=2.6.5
Gnome GLib=2.6.6
Gnome GLib=2.7.0
Gnome GLib=2.7.1
Gnome GLib=2.7.2
Gnome GLib=2.7.3
Gnome GLib=2.7.4
Gnome GLib=2.7.5
Gnome GLib=2.7.6
Gnome GLib=2.7.7
Gnome GLib=2.8.0
Gnome GLib=2.8.1
Gnome GLib=2.8.2
Gnome GLib=2.8.3
Gnome GLib=2.8.4
Gnome GLib=2.8.5
Gnome GLib=2.8.6
Gnome GLib=2.9.0
Gnome GLib=2.9.1
Gnome GLib=2.9.2
Gnome GLib=2.9.3
Gnome GLib=2.9.4
Gnome GLib=2.9.5
Gnome GLib=2.9.6
Gnome GLib=2.10.0
Gnome GLib=2.10.1
Gnome GLib=2.10.2
Gnome GLib=2.10.3
Gnome GLib=2.11.0
Gnome GLib=2.11.1
Gnome GLib=2.11.2
Gnome GLib=2.11.3
Gnome GLib=2.11.4
Gnome GLib=2.12.0
Gnome GLib=2.12.1
Gnome GLib=2.12.2
Gnome GLib=2.12.3
Gnome GLib=2.12.4
Gnome GLib=2.12.5
Gnome GLib=2.12.6
Gnome GLib=2.12.7
Gnome GLib=2.12.8
Gnome GLib=2.12.9
Gnome GLib=2.12.10
Gnome GLib=2.12.11
Gnome GLib=2.12.12
Gnome GLib=2.12.13
Gnome GLib=2.13.0
Gnome GLib=2.13.1
Gnome GLib=2.13.2
Gnome GLib=2.13.3
Gnome GLib=2.13.4
Gnome GLib=2.13.5
Gnome GLib=2.13.6
Gnome GLib=2.13.7
Gnome GLib=2.14.0
Gnome GLib=2.14.1
Gnome GLib=2.14.2
Gnome GLib=2.14.3
Gnome GLib=2.14.4
Gnome GLib=2.14.5
Gnome GLib=2.14.6
Gnome GLib=2.15.0
Gnome GLib=2.15.1
Gnome GLib=2.15.2
Gnome GLib=2.15.3
Gnome GLib=2.15.4
Gnome GLib=2.15.5
Gnome GLib=2.15.6
Gnome GLib=2.16.0
Gnome GLib=2.16.1
Gnome GLib=2.16.2
Gnome GLib=2.16.3
Gnome GLib=2.16.4
Gnome GLib=2.16.5
Gnome GLib=2.16.6
Gnome GLib=2.17.0
Gnome GLib=2.17.1
Gnome GLib=2.17.2
Gnome GLib=2.17.3
Gnome GLib=2.17.4
Gnome GLib=2.17.5
Gnome GLib=2.17.6
Gnome GLib=2.17.7
Gnome GLib=2.18.0
Gnome GLib=2.18.1
Gnome GLib=2.18.2
Gnome GLib=2.18.3
Gnome GLib=2.18.4
Gnome GLib=2.19.0
Gnome GLib=2.19.1
Gnome GLib=2.19.2
Gnome GLib=2.19.3
Gnome GLib=2.19.4
Gnome GLib=2.19.5
Gnome GLib=2.19.6
Gnome GLib=2.19.7
Gnome GLib=2.19.8
Gnome GLib=2.19.9
Gnome GLib=2.19.10
Gnome GLib=2.20.0
Gnome GLib=2.20.1
Gnome GLib=2.20.2
Gnome GLib=2.20.3
Gnome GLib=2.20.4
Gnome GLib=2.20.5
Gnome GLib=2.21.0
Gnome GLib=2.21.1
Gnome GLib=2.21.2
Gnome GLib=2.21.3
Gnome GLib=2.21.4
Gnome GLib=2.21.5
Gnome GLib=2.21.6
Gnome GLib=2.22.0
Gnome GLib=2.22.1
Gnome GLib=2.22.2
Gnome GLib=2.22.3
Gnome GLib=2.22.4
Gnome GLib=2.22.5
Gnome GLib=2.23.0
Gnome GLib=2.23.1
Gnome GLib=2.23.2
Gnome GLib=2.23.3
Gnome GLib=2.23.4
Gnome GLib=2.23.5
Gnome GLib=2.23.6
Gnome GLib=2.24.0
Gnome GLib=2.24.1
Gnome GLib=2.24.2
Gnome GLib=2.25.0
Gnome GLib=2.25.1
Gnome GLib=2.25.2
Gnome GLib=2.25.3
Gnome GLib=2.25.4
Gnome GLib=2.25.5
Gnome GLib=2.25.6
Gnome GLib=2.25.7
Gnome GLib=2.25.8
Gnome GLib=2.25.9
Gnome GLib=2.25.10
Gnome GLib=2.25.11
Gnome GLib=2.25.12
Gnome GLib=2.25.13
Gnome GLib=2.25.14
Gnome GLib=2.25.15
Gnome GLib=2.25.16
Gnome GLib=2.25.17
Gnome GLib=2.26.0
Gnome GLib=2.26.1
Gnome GLib=2.27.0
Gnome GLib=2.27.1
Gnome GLib=2.27.2
Gnome GLib=2.27.3
Gnome GLib=2.27.4
Gnome GLib=2.27.5
Gnome GLib=2.27.90
Gnome GLib=2.27.91
Gnome GLib=2.27.92
Gnome GLib=2.27.93
Gnome GLib=2.28
Gnome GLib=2.28.0
Gnome GLib=2.28.1
Gnome GLib=2.28.2
Gnome GLib=2.28.3
Gnome GLib=2.28.4
Gnome GLib=2.28.5
Gnome GLib=2.28.6
Gnome GLib=2.28.7
Gnome GLib=2.28.8
Gnome GLib=2.29.2
Gnome GLib=2.29.4
Gnome GLib=2.29.6
Gnome GLib=2.29.8
Gnome GLib=2.29.10
Gnome GLib=2.29.12
Gnome GLib=2.29.14
Gnome GLib=2.29.16
Gnome GLib=2.29.18
Gnome GLib=2.29.90
Gnome GLib=2.29.92
Gnome GLib=2.30.0
Gnome GLib=2.30.1
Gnome GLib=2.30.2
Gnome GLib=2.31.0
Gnome GLib=2.31.2
Gnome GLib=2.31.4
Gnome GLib=2.31.6

Event History

Jan 9, 2012
Data Sourced
via Red Hat·07:08 PM
DescriptionSeverityAffected Software
Jan 14, 2012
CVE Published
via MITRE·05:00 PM
Data Sourced
via MITRE·05:00 PM
Description
Disputed
05:55 PM

Frequently Asked Questions

1

What is the severity of CVE-2012-0039?

CVE-2012-0039 has a medium severity rating as it allows attackers to exploit hash collisions to cause denial of service by overwhelming CPU consumption.

2

How do I fix CVE-2012-0039?

To fix CVE-2012-0039, ensure you update to GLib version 2.31.9 or later where the issue has been addressed.

3

What versions of GLib are affected by CVE-2012-0039?

CVE-2012-0039 affects GLib versions 2.31.8 and earlier, as well as several earlier versions including 1.x series.

4

How can CVE-2012-0039 be exploited?

CVE-2012-0039 can be exploited by sending crafted input to applications that use the g_str_hash function, leading to predictable hash collisions.

5

Is CVE-2012-0039 a critical vulnerability?

CVE-2012-0039 is not a critical vulnerability but can lead to significant performance issues due to CPU consumption in affected applications.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203