CVE-2024-2464: Enumeracja użytkowników aplikacji CDeX
Podatność wykryta przeze mnie w oprogramowaniu CDeX oferowanym przez firmę o tej samej nazwie. Podatność ta występuje podczas odzyskiwania hasła, gdzie różnica w komunikatach może pozwolić atakującemu na ustalenie, czy użytkownik jest prawidłowy, co umożliwia przeprowadzenie ataku siłowego na prawidłowych użytkownikach.
Ogólny zarys
Na stronie producenta oprogramowania możemy przeczytać następujący opis produktu: „CDeX (Cyber Defense eXercise Platform) to wirtualna platforma szkoleniowa zaprojektowana do zwiększania umiejętności w zakresie obrony cybernetycznej i rozwijania technologii cyberbezpieczeństwa. Nasza zaawansowana oferta cybernetyczna zapewnia w pełni skalowalne, zautomatyzowane i hiperrealistyczne środowisko szkoleniowe, które pozwala członkom zespołu rozwijać kompetencje w dziedzinie obrony cybernetycznej.”
Vulnerability description
Dostęp do platformy jest możliwy poprzez logowanie się za pomocą SSO (Single Sign-On) lub przez wykorzystanie danych logowania, w tym nazwy użytkownika i hasła. Gdy użytkownik zapomni swojego hasła, może skorzystać z opcji jego odzyskiwania. Atakujący, wykorzystując mechanizm odzyskiwania hasła i analizując różnice w otrzymywanych odpowiedziach, może skutecznie zidentyfikować użytkowników aplikacji.
Scenariusz wykorzystania
Przykład wykorzystania luki prezentuje poniższy film:
Oś czasu
Data | Akcja |
---|---|
1 luty 2024 | Raport wysłany do CDeX |
15 luty 2024 | Raport wysłany do CERT Polska |
23 luty 2024 | CDeX potwierdza istnienie podatności |
11 marzec 2024 | CDeX wydaje poprawkę oprogramowania |
15 marzec 2024 | CERT Polska nadaje CVE-2024-2464 dla tej podatności |
21 marzec 2024 | CERT Polska publikuje podatność |
Jak zapobiegać podobnym podatnością w swojej aplikacji
Znacznie łatwiej jest atakującemu złamać mechanizmy uwierzytelniania, jeśli ujawnisz, że użytkownik istnieje w systemie. Istnieją nawet pewne sytuacje, w których, ze względu na charakter strony internetowej, samo posiadanie konta przez konkretną osobę jest wrażliwą informacją.
Bez względu na to, czy próba użycia nazwy użytkownika jest ważna, ważne jest używanie identycznych, ogólnych komunikatów o błędach i upewnienie się, że są one naprawdę identyczne. Zawsze powinieneś zwracać ten sam kod statusu HTTP przy każdej próbie logowania i, ostatecznie, sprawić, aby czasy odpowiedzi w różnych scenariuszach były jak najbardziej nierozróżnialne.