Jeden link i nowe konto administratora. Pilna aktualizacja Elementora do wersji 4.3.2
Elementor to jeden z najpopularniejszych kreatorów stron dla WordPressa. Jeśli Twoja strona z niego korzysta, odłóż na chwilę inne sprawy i sprawdź, którą wersję masz zainstalowaną. W wersjach 4.3.0 i 4.3.1 wykryto poważną lukę typu CSRF, ocenioną na 8.8 w skali CVSS. Błąd pozwala atakującemu założyć na stronie nowe konto z uprawnieniami administratora. Warunek jest jeden: zalogowany użytkownik z odpowiednimi uprawnieniami musi kliknąć w przygotowany link.
Sprawę opisał Sekurak, powołując się na analizę firmy Patchstack. W chwili publikacji luka nie miała jeszcze nadanego identyfikatora CVE.
Co to jest CSRF, w prostych słowach
CSRF (Cross-Site Request Forgery) to atak, w którym przestępca wykorzystuje to, że jesteś zalogowany. Twoja przeglądarka ma aktywną sesję w panelu WordPressa, więc każde żądanie wysłane z niej do strony jest traktowane jak Twoje. Jeśli strona nie sprawdzi, czy żądanie naprawdę pochodzi od Ciebie, atakujący może wykonać operację w Twoim imieniu.
Standardową ochroną jest specjalny token, który strona dołącza do formularzy i żądań. Bez poprawnego tokenu żądanie powinno zostać odrzucone. W tym przypadku zabezpieczenie dało się ominąć.
Gdzie popełniono błąd
Problem znalazł się w module Editor Events, który odpowiada za wysyłanie danych telemetrycznych. Twórcy wyłączyli w nim sprawdzanie tokenu CSRF dla żądań do interfejsu REST API, jeśli w adresie pojawiał się ciąg elementor/v1/events/. Prawdopodobnie założyli, że ten punkt służy tylko do zbierania statystyk i niczego na stronie nie zmienia.
Kłopot w tym, że warunek sprawdzał cały adres żądania, razem z parametrami, które może ustawić atakujący. Wystarczyło więc dopisać ten ciąg do dowolnego żądania REST API, by ominąć ochronę.
Dodatkowo WordPress pozwala zmienić metodę żądania parametrem _method. Dzięki temu zwykłe otwarcie linku, czyli żądanie GET, może zostać potraktowane jak wysłanie formularza (POST). Atakujący nie potrzebuje własnej strony ani skryptów. Cały atak mieści się w jednym adresie URL, który wystarczy podsunąć administratorowi, na przykład w mailu lub wiadomości.
Jeśli masz Elementora w wersji 4.3.0 lub 4.3.1, zaktualizuj go do 4.3.2 i sprawdź listę użytkowników w panelu WordPressa. Starsze wersje, bez modułu Editor Events, nie są podatne.
Skala problemu
Według informacji przytoczonych przez Sekuraka podatne wersje mogą działać na ponad 2 mln stron, spośród ponad 10 mln korzystających z Elementora. To ogromna liczba potencjalnych celów, a sam atak jest tani: nie wymaga przełamywania haseł, tylko jednego nieuważnego kliknięcia.
Błąd naprawiono w wersji 4.3.2. Nowy mechanizm sprawdza tylko właściwą ścieżkę żądania, bez parametrów z adresu, wymaga, by ciąg elementor/v1/events/ był na jej początku, i weryfikuje typ przekazanej wartości.
W tej historii jest też ogólniejsza lekcja. Wyjątek od zabezpieczenia dodano dla funkcji pobocznej, która tylko wysyłała dane o korzystaniu z edytora. Ktoś uznał, że skoro to „tylko statystyki”, ochrona nie jest potrzebna. Taki skrót okazał się furtką do całego interfejsu REST API strony. Dla właściciela strony wniosek jest prosty: nie da się samodzielnie ocenić jakości kodu każdej wtyczki, ale da się szybko reagować na ostrzeżenia i nie zostawiać aktualizacji na później. Im krócej strona działa na podatnej wersji, tym mniejsza szansa, że ktoś zdąży to wykorzystać.
Co zrobić teraz, krok po kroku
- Sprawdź wersję Elementora. W panelu WordPressa wejdź w Wtyczki i odszukaj Elementor Website Builder. Jeśli widzisz 4.3.0 lub 4.3.1, aktualizuj od razu.
- Zaktualizuj do 4.3.2 lub nowszej. Przed aktualizacją zrób kopię zapasową, jeśli nie masz aktualnej.
- Przejrzyj listę użytkowników. W zakładce Użytkownicy sprawdź, czy nie ma kont, których nie rozpoznajesz, szczególnie z rolą administratora. Zwróć uwagę na daty rejestracji.
- Jeśli znajdziesz obce konto, nie ograniczaj się do jego usunięcia. Zmień hasła administratorów, sprawdź, czy nie pojawiły się nowe wtyczki lub zmodyfikowane pliki, i rozważ pomoc specjalisty. Przejęcie konta administratora może oznaczać dostęp do danych klientów, a wtedy trzeba ocenić, czy doszło do naruszenia ochrony danych w rozumieniu RODO.
- Włącz automatyczne aktualizacje dla wtyczek, którym ufasz, albo ustal stały termin ręcznych przeglądów.
Nawyki, które chronią przed podobnymi atakami
Ta luka pokazuje, że nawet popularna i rozwijana wtyczka może mieć poważny błąd. Kilka prostych zasad zmniejsza ryzyko na przyszłość:
- Nie pracuj na koncie administratora na co dzień. Do pisania wpisów i obsługi zamówień wystarczy rola redaktora lub menedżera sklepu. Atak CSRF działa z uprawnieniami osoby, która kliknęła.
- Wylogowuj się z panelu, gdy skończysz pracę, zwłaszcza zanim zaczniesz czytać pocztę i klikać w linki.
- Ogranicz liczbę administratorów do niezbędnego minimum i usuwaj konta osób, które już nie pracują przy stronie.
- Uważaj na linki prowadzące do Twojej własnej strony, które przychodzą od nieznanych nadawców. Adres wyglądający znajomo może zawierać złośliwe parametry.
- Śledź komunikaty o bezpieczeństwie wtyczek, z których korzystasz.
Przy okazji przeglądu warto też przyjrzeć się innym dodatkom na stronie, w tym tym, które ładują skrypty firm trzecich. Mniej zbędnych wtyczek to mniej miejsc, w których może kryć się kolejna luka.
Źródło: Sekurak
WordPressElementorCSRFpodatnośćaktualizacje