Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Krytyczna luka w Fortra MFT GoAnywhere. Bez uwierzytelnienia można otrzymać uprawnienia admin.
W marcu ubiegłego roku informowaliśmy o możliwości wykonania kodu bez uwierzytelnienia (unauth RCE) w aplikacji GoAnywhere MFT. Aby móc skutecznie wyeksploitować podatność, atakujący musiał mieć dostęp do portalu administracyjnego, który w większości przypadków dostępny będzie tylko w sieci wewnętrznej (wystawienie takiego panelu do Internetu nie jest dobrą praktyką). Wtedy podatność ta była szeroko wykorzystywana przez ransmoware Clop.
Jak opisuje Fortra, GoAnywhere Managed File Transfer to rozwiązanie mające na celu umożliwić prostą i bezpieczną wymianę danych między i wewnątrz organizacji. Ma to pomóc dostosować się do regulacji prawnych takich jak GDPR (czyli RODO), HIPAA, PCI DSS i tym podobnych.
W poniedziałek, Fortra opublikowała informację, że nowa podatność oznaczona identyfikatorem CVE-2024-0204 pozwala na obejście procesu uwierzytelniania (authentication bypass). Szczegóły podatności zostały opisane na blogu horizon3.ai. Producent, jako sposób na tymczasowe załatanie podatności, podaje usunięcie pliku InitialAccountSetup.xhtml oraz restart usługi.
Badaczom udało się sprawdzić (co w przypadku Javy nie wymaga żmudnej inżynierii wstecznej), że plik ten jest powiązany z klasą com.linoma.ga.ui.admin.users.InitialAccountSetupForm
, która jest implementowana w GoAnywhere/lib/gamft-7.4.0.jar
.
Podczas instalacji oprogramowanie pozwala na stworzenie pierwszego użytkownika z uprawnieniami administratora:
Jednak gdy taki użytkownik istnieje już w systemie, to zapytanie jest filtrowane przez metodę doFilter(), przez którą przechodzą wszystkie zapytania kierowane do aplikacji.
Obejście tych sprawdzeń okazało się niemożliwe. Jednak sprawdzając często spotykane błędy w aplikacjach uruchomionych na serwerze Apache Tomcat, odnaleziono powód występowania podatności. Problem leży w procesie normalizacji ścieżki w przypadku wystąpienia sekwencji /..;/. Jeśli zapytanie zawiera taki ciąg, to nie jest odpowiednio odfiltrowywanie, a to pozwala na dotarcie do formularza dodawania użytkownika:
https://192.168.1.1:8001/goanywhere/images/..;/wizard/InitialAccountSetup.xhtml
PoC został opublikowany na portalu GitHub. Według producenta podatne są wersje Fortra GoAnywhere MFT 6.x od 6.0.1 oraz Fortra GoAnywhere MFT 7.x przed 7.4.1.
Użytkownikom jak zwykle zalecamy aktualizację, a także zadbanie o to, aby nie wystawiać do sieci paneli takich jak ten. Jeśli jest to zupełnie konieczne, dostęp powinien być realizowany z użyciem VPN-ów.
Luka ma potencjał na bycie wykorzystywaną przez automaty. Administratorom zalecamy sprawdzić, czy nie ma nowych uprzywilejowanych użytkowników w systemie (przez Users -> Admin Users). Informacje o potencjalnym ataku można też wyciągnąć z logów transakcji bazy danych (\GoAnywhere\userdata\database\goanywhere\log\*.log
).
~fc