Elementor Pro w wersjach 4.2.1 i starszych może zostać zainfekowany poprzez lukę umożliwiającą zdalne wykonanie kodu (RCE) bez uwierzytelnienia w polu przesyłania plików widżetu Forms; problem został naprawiony w wersji 4.2.2, dlatego witryny korzystające ze starszego kodu powinny niezwłocznie dokonać aktualizacji.

Na czym polega błąd

Luka posiada ocenę CVSS 9.0, co oznacza, że napastnik mający dostęp do podatnej witryny może wykonać dowolny kod PHP na serwerze bez konieczności logowania się lub podawania jakichkolwiek danych uwierzytelniających. Problem tkwi w sposobie, w jaki Elementor Pro przetwarza przesyłanie plików w widżecie Forms. Wtyczka uruchamia dwie oddzielne pętle: jedną, która waliduje każdy przesłany plik, oraz drugą, która zapisuje plik w katalogu przesyłania dostępnym przez sieć.

Napastnik może przygotować pojedyncze żądanie zawierające dwa pliki. Pierwszemu plikowi nadano pustą nazwę, co powoduje pominięcie jego sprawdzenia przez pętlę walidacji. Drugi plik, będący złośliwym skryptem PHP, przechodzi przez drugą pętlę i zostaje zapisany w publicznym folderze. Ponieważ Elementor Pro nadaje przesłanym plikom nazwy przy użyciu znacznika czasu, napastnik może przewidzieć nazwę pliku, a następnie bezpośrednio go wywołać, aby uruchomić kod.

Jak powstała ta luka

Projekt oparty na dwóch pętlach miał na celu uniezależnienie walidacji od przechowywania danych, jednak brak wspólnego mechanizmu sprawdzającego (sanity check) pozwolił na wykorzystanie sztuczki z pustą nazwą. Błąd dotyczy każdej instalacji korzystającej z pola przesyłania plików w widżecie Forms, niezależnie od tego, czy właściciel witryny włączył tę funkcję dla odwiedzających.

Kto jest zagrożony

Zagrożone są wszystkie witryny WordPress, na których zainstalowano Elementor Pro w wersji 4.2.1 lub starszej. Ponieważ exploit nie wymaga uwierzytelnienia, podatne są nawet witryny, które ograniczają dostęp do panelu administracyjnego. Skuteczne wykorzystanie luki daje napastnikowi pełną kontrolę nad środowiskiem hostingowym, co otwiera drogę do kradzieży danych, defacementu strony lub zainstalowania oprogramowania ransomware.

Co należy zrobić teraz

  • Zweryfikuj zainstalowaną wersję za pomocą polecenia WordPress CLI:

    wp plugin list --name=elementor-pro --field=version
    
  • Jeśli wynik wskazuje na wersję 4.2.1 lub niższą, natychmiast zaktualizuj do wersji 4.2.2 lub nowszej. Aktualizacja zastępuje wadliwą logikę przesyłania pojedynczą, atomową procedurą walidacji i zapisu, która blokuje obejście za pomocą pustej nazwy.

  • Po aktualizacji sprawdź katalog przesyłania plików pod kątem plików PHP, które pasują do wzorca znacznika czasu używanego przez wtyczkę, i usuń je.

  • Rozważ wyłączenie pola przesyłania plików w publicznych formularzach do czasu zastosowania poprawki, szczególnie na witrynach o dużym natężeniu ruchu.

Kontrargument

Niektórzy programiści twierdzą, że ryzyko jest ograniczone, ponieważ exploit wymaga skonfigurowania widżetu Forms z polem przesyłania plików, które jest publicznie dostępne. Jednak wiele witryn opartych na Elementorze udostępnia takie formularze do kontaktu, aplikacji o pracę lub treści generowanych przez użytkowników, co sprawia, że warunek ten jest na tyle powszechny, iż lukę uznaje się za krytyczną.

Na co zwrócić uwagę w przyszłości

Badacze bezpieczeństwa spodziewają się pojawienia kolejnych komunikatów ostrzegawczych, gdy więcej witryn zgłosi próby wykorzystania luki. Należy śledzić oficjalne komunikaty Elementor oraz renomowane bazy danych podatności w poszukiwaniu kolejnych poprawek lub metod łagodzenia skutków.

Podsumowując: Luka RCE w Elementor Pro 4.2.1 i starszych to wektor ataku o wysokim stopniu dotkliwości, niewymagający logowania. Aktualizacja do wersji 4.2.2 jest jedyną niezawodną obroną; zwlekanie naraża serwer i dane na poważne ryzyko.