Trywialny w użyciu i bardzo niebezpieczny błąd w Bugzilli

dodał 18 września 2015 o 10:20 w kategorii Błędy  z tagami:
Trywialny w użyciu i bardzo niebezpieczny błąd w Bugzilli

Systemy zbierające informacje o jeszcze niezałatanych błędach takie jak Bugzilla powinny zapewniać ich odpowiednią ochronę. Niestety nie zawsze tak jest, a czasem błędy w nich odkrywane są tak proste, że aż śmieszne.

Po niedawnym wycieku błędów typu 0day z repozytorioum informacji o błędach Mozilli badacze postanowili bliżej przyjrzeć się narzędziu Bugzilla, które służy do zarządzania informacjami o błędach. Znaleźli w nim niezwykle trywialny, lecz bardzo niebezpieczny błąd.

Email jak podstawa autoryzacji

Bugzilla ma ciekawy model autoryzacji dostępu. Może ona udostępniać konkretne zasoby na podstawie domeny, w której znajduje się adres email użytkownika. Ma to swoje częściowe uzasadnienie w małych organizacjach, gdzie sama przynależność do organizacji oznacza dostęp do pełnej informacji o błędach. Np. osoby posiadające skrzynki pocztowe w domenie mozilla.org mogą przeglądać większość zawartości repozytorium.

W procesie rejestracji nowego konta użytkownik najpierw podaje swój adres email. Bugzilla konta nie zakłada od razu, ponieważ aby zapewnić, że osoba podająca się za posiadacza danej skrzynki faktycznie nią dysponuje, wysyła na ten adres linka aktywującego konto i zawierającego specjalny token. Dopiero po kliknięciu w linka system tworzy konto użytkownika w oparciu o podany wcześniej adres email.

Taki długi adres

Testerzy firmy PerimeterX postanowili przyjrzeć się procesowi zakładania konta, słusznie identyfikując go jako kluczowy dla bezpieczeństwa danych. To, co odkryli, jest bardzo ciekawym przykładem możliwości wykorzystania prostych ograniczeń aplikacji do przeprowadzenia skutecznego ataku.

W momencie rejestracji nowego użytkownika jego adres email jest zapisywany przez aplikację w bazie danych w kolumnie o ograniczeniu rozmiaru zapisywanego ciągu do 255 bajtów. Co zatem stanie się, gdy użyjemy adresu dłuższego? Baza odpowiednio go przytnie do 255. Jaki będzie skutek dla aplikacji?

Jeśli podamy w formularzu rejestracji adres email w formie

aaa[...]aaa@mozilla.com.naszadomena.pl

gdzie ciąg do .com ma dokłądnie 255 znaków, to do bazy zostanie zapisywany adres aaa[…]aaa@mozilla.com, dający automatycznie wysokie uprawnienia dla użytkownika. Z kolei email z prośbą o potwierdzenie zostanie wysłany na pełen adres podany w trakcie rejestracji, na serwer przez nas kontrolowany. W ten sposób badacze z PerimeterX założyli sobie konto na mozillowej Bugzilli. Dostalo ono następujące uprawnienia:

Zdobyte uprawnienia

Zdobyte uprawnienia

Mozilla została o błędzie poinformowana, Bugzilla została załatana, aktualizujcie jeśli korzystacie. I sprawdźcie, czy Wasze aplikacje nie umożliwiają podobnej sztuczki.