Właściwa weryfikacja dostępu do domeny jest jednym z podstawowych czynników pozwalających na zachowanie bezpieczeństwa oferowanego przez publiczne certyfikaty TLS. Jednak jak w każdym oprogramowaniu, także w aplikacjach urzędów certyfikacji zdarzają się błędy.
W tym wpisie znajdziecie opis ciekawego błędu, który mógł doprowadzić do nieuprawionego wydania certyfikatu TLS typu Domain Validation.
Weryfikacja dostępu do domeny
Najprostszy typ certyfikatu TLS to certyfikat typu Domain Validation (DV). Certyfikat taki zawiera jedynie nazwę domeny i w celu jego uzyskania wymagane jest potwierdzenie, że posiada się nad nią kontrolę. Istnieje co najmniej kilka metod pozwalających na potwierdzenie dostępu do domeny. Wśród najczęściej stosowanych przez urzędy certyfikacji wymienić można:
- modyfikację rekordu DNS,
- umieszczenie pliku na serwerze,
- odpowiedź na maila wysłanego na jeden z pięciu predefiniowanych adresów (admin@example.com, administrator@example.com, webmaster@example.com, hostmaster@example.com, postmaster@example.com).
Oprócz powyższych, istnieje jeszcze kilka innych dozwolonych sposobów potwierdzania dostępu do domeny. Wśród nich jest metoda, która korzysta z danych zapisanych w rekordach WHOIS danej domeny. Pozwala ona na weryfikację poprzez kontakt z osobą zamawiającą certyfikat z wykorzystaniem adresu mailowego zapisanego w rekordach registrant, technical lub administrative bazy WHOIS. I to właśnie błąd popełniony przez Symanteca w sposobie walidacji adresów email zapisanych w bazie WHOIS mógł doprowadzić do wydania certyfikatu TLS dla danej domeny osobie, która nie posiadała nad nią kontroli.
Pominięte znaki specjalne
Jak informuje na swoim blogu odkrywca podatności Andrew Ayer błąd wynikał z braku poprawnej obsługi znaków specjalnych, które mogą występować w części lokalnej (przed znakiem @) adresu email, takich jak + i =. Jeżeli adres email zawierał któryś z tych znaków aplikacja Symanteca traktowała dopiero część znajdującą się po nim jako prawidłowy adres. Błąd choć trywialny mógł mieć stanowić poważne zagrożenie. Znak + jest powszechnie wykorzystywany do tworzenia aliasów pocztowych – taki sposób ich generowania oferuje np. Gmail.
Jak zatem można było wykorzystać ten błąd do zdobycia certyfikatu TLS dla nieswojej domeny? Wystarczyło w bazie WHOIS odnaleźć domenę, która posiadała przypisany adres mailowy ze znakiem + lub = w nazwie np. tech+whois@example.com
. Wtedy Symantec za prawidłowy adres do kontaktu technicznego domeny example.com
uznałby whois@example.com
(zamiast właściwego tech+whois@example.com
) i to właśnie na ten adres wysłałby wiadomość z prośbą o weryfikację domeny co pozwoliłoby na uzyskanie certyfikatu TLS. Przekładając to na bardziej praktyczny przykład: gdyby to Google dla domeny gmail.com
wpisało do bazy WHOIS np. adres tech+whois@gmail.com
to do uzyskania certyfikatu TLS dla tej popularnej domeny wystarczyłoby założyć konto whois@gmail.com
i z jego pomocą potwierdzić dostęp.
Błąd został usunięty przez Symanteca po kilku dniach od zgłoszenia. Zweryfikowano także, że nie został on wykorzystany do nieuprawnionego uzyskania certyfikatu TLS.