MIT Kerbores: Denial-of-Service-Attacke

In der MIT Kerberos Applikation wurden zwei Sicherheitslücken entdeckt. Diese erlauben es einem entfernten Angreifer Denial-of-Service-Attacken auszuführen.

Das erste Problem kann von einem angemeldeten Angreifer ausgenutzt werden, wenn dieser Rechte besitzt Password-Policies zu setzen. In diesem Fall kann er einen Null-Zeiger-Derefernzfehler in der krb5_ldap_get_password_policy_from_dn()-Funktion ausnutzen, um den Dienst zum Absturz zu bringen. Hierfür anfällig sind Systeme bei denen kadmind LDAP für die KDC-Datenbank verwendet.

Der Patch für diese Schwachstelle fängt den NULL-Zeiger durch eine korrigierte If()-Abfrage ab:

ent=ldap_first_entry(ld, result);
-   if (ent != NULL) {
-     if ((st = populate_policy(context, ld, ent, pol_name, *policy)) != 0)
+           goto cleanup;
+    if (ent == NULL) {
+   st = KRB5_KDB_NOENTRY; + goto cleanup; }
+   st = populate_policy(context, ld, ent, pol_name, *policy); 

Sollte der ent-Zeiger nun NULL sein, so ist sichergestellt, dass die populate_policy()-Funktion nun nicht mehr aufgerufen wird, wodurch die Schwachstelle nicht mehr auftritt. Bei dem zweiten Problem handelt es sich eben um einen NULL-Zeiger-Derferenzfehler. Dieser findet sich in der krb5_add_ber_mem_ldap_mod()-Funktion und kann ebenfalls von einem entfernten, angemeldeten Angreifer ausgenutzt werden, um Denial-of-Service-Attacken durchzuführen.

Nach oben