Bezpieczeństwo

Jeden link i nowe konto administratora. Pilna aktualizacja Elementora do wersji 4.3.2

Zespół CookieBanerPro4 min czytania

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

  1. 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.
  2. Zaktualizuj do 4.3.2 lub nowszej. Przed aktualizacją zrób kopię zapasową, jeśli nie masz aktualnej.
  3. 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.
  4. 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.
  5. 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