Eine Sicherheitslücke in der Bibliothek Libdbus hat zur Folge, dass ein lokaler Angreifer das System zum Absturz bringen kann. Anfällig für diese Schwachstelle sind nur Systeme der Architektur x86_64.
Der Programmierfehler befindet sich in der Funktion “_dbus_printf_string_upper_bound()”. Dort kommt es zu Problemen beim Verarbeiten einer “va_list”. Der “va_list”-Mechanismus kommt immer dann zum Einsatz, wenn Funktionen mit verschiedenen Parametern benötigt werden. So kann man beispielsweise eine eigene “printf()”-Funktion wie folgt implementieren:
void my_printf(const char *fmt, ...)
{ va_list l; va_start(l, fmt); vprintf(fmt, l); flush(stdout); va_end(l);
}
Die Funktion “_dbus_printf_string_upper_bound()” verwendet “va_list” mehr als ein Mal, was nicht portabel ist. Beispielsweise funktioniert dies unter x86-Linux, aber nicht unter Linux auf x86_64.
Diese Schwachstelle wurde nun korrigiert indem man einfach eine Kopie der “va_list”-Variablen angelegt hat:
va_list args_copy; DBUS_VA_COPY (args_copy, args); len = vsnprintf (static_buf, bufsize, format, args_copy); va_end(args_copy);
Damit ist der Fehler korrigiert und die Attacke nicht mehr möglich.
Betroffen sind die Versionen 1.4.16 bis 1.4.26 und 1.5.8 bis 1.6.12.

