Vulnerabilità in Kerberos 1.5-21

di Davide Denicolo

scritto il

Kerberos 5 il protocollo di autenticazione implementato dal MIT è ancora affetto da vulnerabilità. Lo rendono noto Wei Wang (McAfee Avert Labs) e iDefense Labs in un advisory pubblicato qualche giorno fa.

Tale vulnerabilità consentirebbe a un malintenzionato di generare un buffer overflow nel codice sovrascrivendo l’area di memoria, potendo così eseguire codice arbitrario con privilegi di sistema vicini a quelli di root.

Il codice qui riportato contiene alla riga 575 un’istruzione di concatenazione di stringhe che se formattate opportunamente, permettono di generare il buffer overflow:

542 generic_ret *
543 rename_principal_2_svc(rprinc_arg *arg, struct svc_req *rqstp)
544 {
545 static generic_ret ret;
546 char *prime_arg1,
547 *prime_arg2;
548 char prime_arg[BUFSIZ];
...
570 if (krb5_unparse_name(handle->context, arg->src, &prime_arg1) ||
571 krb5_unparse_name(handle->context, arg->dest, &prime_arg2)) {
572 ret.code = KADM5_BAD_PRINCIPAL;
573 goto exit_func;
574 }
575 sprintf(prime_arg, "%s to %s", prime_arg1, prime_arg2);

Fortunatamente il MIT ha già rilasciato le patch MITKRB5-SA-2007-004 e MITKRB5-SA-2007-005 che verrano inserite ufficialmente nelle versioni 1.6.2 e 1.5.4 di Kerberos 5.

Per quanti non ne fossero a conoscenza, Kerberos è un sistema di autenticazione utilizzato su reti non protette e fa uso di un algoritmo di cifratura a chiave simmetrica.

Il sistema richiede però la presenza di una terza entità affidabile e certificatrice che gestisca le chiavi di sessione (ticket) e che permetta a ciascuna parte di dialogare con le restanti, avendo come fonte autoritativa lo stesso Autentication Server.