Od wczoraj zgłaszają się do nas klienci, którzy otrzymali nieco podejrzaną wiadomość e-mal. Wiadomość ta pochodzi niby od WordPress.org i informuje o wykrytej nowej podatności oraz jej łatce. Zachęca nawet do rozwiązania problemu. Czy to może być jakieś zagrożenie?

Przyjrzyjmy się dokładniej tej wiadomości

cve-2023-46182 wiadomosc e-mail informująca o podatności

Sama treść na początku nie budzi podejrzeń. Faktycznie Zespołowi WP zdarza się informować użytkowników o krytycznych podatnościach. Tyle, że nie wszystkich użytkowników, bo żeby poinformować, trzeba mieć najpierw adres e-mail użytkownika. Czyli powiadomienia te trafiają do użytkowników JetPacka lub np. WooCommerce.

Uważnemu czytelnikowi wpadnie zapewne w oko, że już w drugim akapicie użyto słowa “Wordpress” (z małym “p”). Ale druga część tego akapitu rzuca się w oczy jeszcze bardziej. Otóż w ramach naprawy podatności, autor wiadomości informuje o wydaniu wtyczki, która tę podatność naprawia.

Podatność to błąd w kodzie. Błędu w kodzie nie poprawia się wydając wtyczkę, tylko poprawiając ów błąd i wydając nową wersję oprogramowania, w którym ten błąd był…

Adres linku pod przyciskiem

Prowadzi prosto do… bit.ly, czyli jest to skrócony link. Możemy go jednak prosto rozszyfrować przy użyciu samego bit.ly i w ten sposób otrzymać link, na który zostaniemy przekierowani po kliknięciu:

Adres linku odkodowany w bit.ly

OK, czyli po kliknięciu w przycisk pobierania trafimy na stronę sugerującą, że ma coś wspólnego z WordPress, ale jednak zupełnie nie.

Na koniec zwróćmy jeszcze uwagę na samego nadawcę wiadomości. Nie została ona wysłana z domeny wordpress.org, a z domeny mail-wordpress.org, która z WordPressem nie ma nic wspólnego.

Jak widać, nie jest to prawdziwa wiadomość o podatności WordPressa, tylko próba ataku poprzez podszycie się pod taką wiadomość.

Otrzymałem taką wiadomość, co zrobić?

Nic. Skasować. W żadnym wypadku nie klikać w linki w tej wiadomości, nie podawać żadnych danych, ani nie pobierać – a już z pewnością nie instalować na stronie wspomnianej wtyczki.

A jak rozpoznać takie wiadomości w przyszłości?

Mniej więcej tak, jak pokazałem to w tym artykule:

  • zawsze sprawdzaj nadawcę wiadomości oraz wszelkie linki, które w niej się znajdują,
  • nigdy nie klikaj w linki skrócone, bo nie wiesz, gdzie mogą prowadzić,
  • nie instaluj też wtyczek, które “poprawiają bezpieczeństwo”, czy “naprawiają podatność”.

Sprawdźmy, co się stanie, gdy wiadomości zaufamy?

Tego w żadnym wypadku nie róbcie – sprawdziliśmy to po to, żebyście wy nie musieli.

Najpierw sprawdziliśmy domenę. Zarejestrowana została 27 dni temu, a w bazie whois oczywiście nie ma żadnych danych o jej właścicielu.

Informacje o domenie w bazie WHOIS

Po kliknięciu w link najpierw będziemy musieli przejść przez captchę. Potem zobaczymy stronę łudząco przypominającą repozytorium wtyczek WP:

Strona udająca repozytorium wtyczek WordPress

Nieźle – 500 tysięcy aktywnych instalacji… Pobierzmy zatem wtyczkę i zobaczmy, jakie ciekawostki zawiera jej kod…

W paczce wtyczki znajdziemy 3 pliki:

  • WordPressPatch.php
  • wpress-security-wordpress.php
  • views/security.php

Plik widoku security.php zawiera jedynie stronę z informacją o tym, że “Wordpress” został zaktualizowany i podatność już nie występuje. Znajduje się tam także zachęta do udostępnienia wtyczki dalej:

security.php - plik widoku informującego o aktualizacji i załataniu podatności

Plik WordPressPatch.php dodaje w menu panelu administracyjnego nową pozycję, pod którą wyświetlana jest informacja omówiona powyżej.

Czyli do sedna – co robi wpress-security-wordpress.php? Początek wygląda niegroźnie – dołączane są pozostałe pliki. Jednak już w 15 linii kodu robi się ciekawiej:

Funkcja InitScan - kod umożliwiający zdalne wywoływanie funkcji

Powyższy kod dodaje obsługę dwóch zapytań, dzięki którym każdy użytkownik internetu może wywołać odpowiednie akcje na naszej stronie.

Funkcja installScanner - pobiera kod ze zdalnego serwera i zapisuje go na naszym serwerze

Powyższa funkcja InstallScanner pobiera zawartość pliku wskazanego przez token. Aby poznać faktyczną nazwę pliku token musimy odkodować. Wtedy dowiemy się, że faktycznie pobierany będzie tekst z adresu zewnętrznego https://wpsys.zip/runscan. Adres ten generuje kilka ekranów zaszyfrowanego kodu, który następnie zostanie zapisany w pliku na naszym serwerze.

Druga funkcja, wbrew pozorom wcale nie skanuje użytkowników, a wręcz przeciwnie – dodaje nowego użytkownika z uprawnieniami administratora:

Funkcja scanAdministrators - kod dodający użytkownika z uprawnieniami administracyjnymi

Uwaga: użytkownika tego nie zobaczysz na liście użytkowników w panelu administracyjnym, bo wtyczka go ukrywa:

Funkcja WP_BD - kod ukrywający użytkowników w panelu administracyjnym

Na koniec “wtyczka” postanawia jeszcze ukryć się na liście wtyczek, żeby przypadkiem nie dało się jej prosto usunąć:

Funkcja WPS_Plugin - kod ukrywający wtyczkę w panelu administracyjnym

A co jeśli niechcący pobrałem już wtyczkę i ją zainstalowałem?

Jak wynika z powyższej analizy, nie będziesz w stanie po prostu jej usunąć. Musisz zatem za pomocą klienta FTP usunąć pliki dodane przez wtyczkę (zarówno pliki samej wtyczki, jak i te, które zostały wgrane już po jej instalacji).

W drugim kroku, z poziomu bazy danych, musisz usunąć użytkowników, których dodała wtyczka.

Jeśli na Twój serwer wgrane zostały dodatkowe pliki, koniecznie będzie trzeba je przejrzeć i przeanalizować umieszczony w nich kod. Kod ten może być różny w zależności od chwili, gdy został pobrany – nie ma więc większego sensu analizować go w tym artykule.