Erst kürzlich war die Glibc-Bibliothek Angriffziel der GHOST-Schwachstelle (wir haben berichtet). Nun ist in der
Bibliothek abermals eine kritische Schwachstelle entdeckt worden. Dadurch ist ein lokaler oder entfernter Angreifer in der Lage Denial-of-Service-Attacken gegen das System durchzuführen. Auch ist es für den Angreifer möglich Befehle mit höheren Rechten auszuführen.
Die Schwachstelle befindet sich in der stdio-common/vfscanf.c-Datei. Hier kann es zu einem Buffer Overflow kommen. In
dieser Datei wird das ADDW-Makro definiert. Dieses entscheided, ob bei einer Speicherallokation die malloc()- oder
alloca()-Funktion verwendet wird. Dabei ist allerdings der malloc()-Fall nicht korrekt implementiert. Hier werden
nämlich statt newsize * sizeof(CHAR_T) lediglich newsize Bytes alloziert. Werden nun allerdings wide-strings verwendet,
so kommt es hier zu einem Overflow des Puffers. Ein Beispiel könnte wie folgt aussehen:
#include <stdlib.h>
#include <wchar.h>
#define SIZE 131072
int
main (void)
{
wchar_t *s = malloc ((SIZE + 1) * sizeof (*s));
if (s == NULL)
abort ();
for (size_t i = 0; i < SIZE; i++)
s[i] = L'0';
s[SIZE] = L'\0';
int i;
if (swscanf (s, L"%d", &i) != 1)
abort ();
if (i != 0)
abort ();
free (s);
return 0;
}
Betroffen sind von dieser Schwachstelle die Versionen vor 2.21.
