Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Generowałeś automatycznie hasło w menadżerze haseł od Kasperskiego? Lepiej je zmień…
Menedżer haseł od rosyjskiej firmy Kaspersky jest stosunkowo intuicyjny i jak większość podobnych produktów pozwala przechowywać, synchronizować i generować hasła do aplikacji. Jeden z badaczy odkrył prosty, ale poważny błąd w ostatniej z wymienionych funkcji i zgłosił go za pośrednictwem HackerOne.
Generowanie hasła odbywało się z wykorzystaniem aktualnego czasu w sekundach. Fragment kodu odpowiedzialny za wygenerowanie był następujący:
std::string pwlib::generatePassword(pwdlib::Policy policy)
{
return generatePassword(policy, time(0));
}
W związku z tym można było wygenerować maksymalnie 232 (czyli 4294967296) haseł dla danego zestawu znaków (domyślnie: duże litery + małe litery + cyfry + znaki specjalne, długość 12). Jako ciekawostkę można dodać, że jeśli dwie osoby uruchomią generator w tej samej sekundzie, otrzymają to samo hasło. Atakujący mógłby wygenerować na tej podstawie swój zestaw i użyć go do zautomatyzowanych ataków. Istnieją gotowe i sprawdzone narzędzia do odzyskiwania haseł typu hashcat, John the Ripper, Hydra czy skrypt ssh_login w Metasploit. Podaje się w nich konkretny cel, np. SSH. Do osobnych plików zapisujemy wygenerowane hasła i użytkowników (zwykle root, admin, user). Są również gotowe zestawy z najczęściej używanymi nazwami. Użycie Hydry jest proste: hydra -L uzytkownicy.txt -P hasla.txt ssh://[host].
Przykładowy scenariusz ataku na organizację:
- ustalenie, czy używane jest oprogramowanie Kaspersky Total Security (samego menedżera haseł raczej się nie instaluje):
- socjotechnika (podajemy się za pracownika Kaspersky lub firmowy IT i prosimy np. o sprawdzenie licencji)
- prezentacja (w obecnych czasach wiele firm ustala różne kwestie z klientami online, również z użyciem udostępniania ekranu)
- jeśli tak, można przystąpić do ataku:
- zewnętrzny rekonesans infrastruktury (SSH, RDP, VPN, poczta)
- wybranie celu i atak
Prawdopodobnie hasło z KPM zostało gdzieś użyte. Szczególnie interesująca wydaje się poczta. W przypadku zwykłych użytkowników atak jest znacznie prostszy:
It is quite common that Web sites or forums display the creation time of accounts. Knowing the creation date of an account, an attacker can try to bruteforce the account password with a small range of passwords (~100) and gain access to it.
Dlaczego błąd został wykryty dopiero w 2019 roku? Według badacza powodem jest animacja generowania hasła. Trwa dłużej niż sekundę, więc w tym czasie nie można nacisnąć kilkakrotnie przycisku „Generate”.
Podatność CVE-2020-27020 została załatana. Dotyczyła kluczowych systemów: Windows, Android i iOS. Warto też zauważyć, że producent wymusił w październiku 2020 roku zmianę niektórych haseł.
–Michał Giza
Problem menadżera haseł Kaspersky jest taki, że to aplikacja z zamkniętym kodem źródłowym i jest trudno zweryfikować cokolwiek bez Inżynierii odwrotnej. Takie rzeczy potem wychodzą przypadkiem, o ile producent oprogramowania sam się wcześniej nie zorientuje i nie naprawi błędu.
Z ciekawości sprawdziłem otwarto źródłowy KeepassXC, tam do generowania losowego hasła używany jest „libgcrypt”, czyli biblioteka bazująca na kodzie GnuPG.
W gałęzi „develop” zmieniono to na „nowocześniejszą” bibliotekę „Botan”. Każdy, kto choć trochę ogarnia programowanie może zaglądnąć do kodu i zweryfikować, czy nie ma podobnych banalnych błędów.
W kwestii bezpieczeństwa moim zdaniem oprogramowanie open source jest nieco dynamiczniejsze, choć i tutaj bywa, że wychodzą błędy, które tkwiły lata w kodzie i nie zostały wcześniej zauważone.
Pytanie czy można opierać się na etyce producenta z Federacji Rosyjskiej infiltrowanego przez FSB?
BTW:
Czy hasła prominentnych klientów WP Poczty nie były generowane tym softem? Nie wymagałoby to zbyt dużej determinacji „3 literowców”