Eine Sicherheitslücke in OpenSSL hat zur Folge, dass ein entfernter Angreifer Denial-of-Service-Attacken gegen OpenSSL durchführen kann.
Das Problem tritt beim Verarbeiten spezieller S/MIME-Header auf. Ursache dafür ist ein Null-Zeiger-Dereferenzfehler in dem Parser für ASN.1. Der Programmierfehler findet sich in der Datei “openssl/crypto/asn1/asn_mime.c”. Die darin enthaltene Funktion “mime_hdr_cmp()” vergleicht die “name”-Einträge der Struktur “MIME_HEADER”, die sie als Zeiger übergeben bekommt:
static int mime_hdr_cmp(const MIME_HEADER * const *a, const MIME_HEADER * const *b)
{ return(strcmp((*a)->name, (*b)->name));
}
In dieser sehr einfach anmutenden Funktion hat sich eine Schwachstelle versteckt. Wenn a oder b Nullzeiger sind, kommt es zur Nullzeiger-Dereferenzierung, was zum Absturz des Programms führt. Der Fix für diese Sicherheitslücke besteht einfach darin, sicherzustellen, dass a und b keine Nullzeiger sind:
static int mime_hdr_cmp(const MIME_HEADER * const *a, const MIME_HEADER * const *b)
{ if ((*a)->name == NULL || (*b)->name == NULL) return (*a)->name - (*b)->name < 0 ? -1 : (*a)->name - (*b)->name > 0 ? 1 : 0; return(strcmp((*a)->name, (*b)->name));
}
Betroffen ist die Version 0.9.7i.

