Bezpieczeństwo stron opartych na WordPressie zależy od wielu czynników, a jednym z nich jest jakość używanych wtyczek. Teoretycznie rozszerzenia instalowane z oficjalnego repozytorium powinny być bezpieczne, ponieważ nad ich kodem czuwa ekipa moderatorów, którzy sprawdzają go pod kątem bezpieczeństwa. Niestety, jest to tylko częściowo prawda, ponieważ cały czas we wtyczkach wykrywane są nowe błędy, których większość jest wprawdzie usuwana przez autorów, ale nigdy nie wiadomo gdzie jeszcze czają się potencjalnie groźne dla nas luki. Jak mówią doświadczeni programiści, nie ma oprogramowania bez błędów – jest tylko oprogramowanie, w którym błędów jeszcze nie wykryto.
Plugin Inspector to darmowe narzędzie, które pomoże nam w wykryciu potencjalnie niebezpiecznych wtyczek lub w upewnieniu się, że rozszerzenia, których używamy, nie stanowią zagrożenia dla naszej strony.
Analogicznym narzędziem przeznaczonym do sprawdzania motywów jest wtyczka Theme Check.
Które wtyczki mogą być niebezpieczne?
Zacznijmy od początku. Dostępne wtyczki dla WordPressa można z grubsza podzielić na cztery grupy:
- Wtyczki dostępne w oficjalnym repozytorium
Nie powinno być z nimi problemów, a w razie wykrycia luk związanych z bezpieczeństwem autorzy najczęściej szybko usuwają błędy. Wtyczki zawierające krytyczne błędy są usuwane z repozytorium, ale ich użytkownicy nie są o tym w żaden sposób powiadamiani. - Wtyczki niedostępne w oficjalnym repozytorium
Takie wtyczki z reguły są utrzymywane w serwisach typu GitHub czy BitBucket. Powodów, dla których nie znajdują się one w repozytorium, może być kilka: niezgodność licencji (w repozytorium mogą znajdować się tylko produkty na licencji GPL), wykonywanie niedozwolonych operacji (na przykład przesyłanie jakichś danych do serwera autora, tzw. calling home) czy po prostu zwykłe widzimisię autora. Nikt (poza użytkownikami) nie weryfikuje takich wtyczek, dlatego trzeba do nich podchodzić z ostrożnością. - Wtyczki komercyjne (premium) sprzedawane w serwisach typu CodeCanyon
Wtyczki te przed dopuszczeniem do sprzedaży przechodzą weryfikację, między innymi pod kątem bezpieczeństwa czy zgodności ze standardami. W przypadku wykrycia luki związanej z bezpieczeństwem, wtyczka jest usuwana z katalogu, a jej autor zobligowany jest do jak najszybszego usunięcia błędu. Użytkownicy nie są powiadamiani o problemie, chyba że dotyczy on bardzo popularnej wtyczki (tak jak to miało miejsce w przypadku wtyczki Slider Revolution). - Wtyczki komercyjne (premium) sprzedawane przez autorów we własnym zakresie
Takie wtyczki praktycznie nigdy nie są przez nikogo weryfikowane. Oczywiście autorzy dokładają wszelkich starań, aby odpowiednio szybko usuwać znalezione błędy (to w końcu ich własny biznes i starają się dbać o niego jak najlepiej), ale prawda jest taka, że nigdy nie wiemy, co tak naprawdę potrafi autor danej wtyczki (chyba że jest to osoba znana wśród społeczności skupionej wokół WordPressa) i co umieścił w swoim produkcie. Oczywiście nie należy z góry podejrzewać autorów o jakieś niecne zamiary – zawsze warto jednak (tak na wszelki wypadek) poszukać w internecie opinii na temat danego rozszerzenia.
Z pierwszej grupy wydzieliłbym dodatkowo podgrupę wtyczek, które nie są od dawna aktualizowane. Nie zawsze oznacza to, że wtyczek takich nie należy używać. Przykładem mogą być rozszerzenia, które spełniają tylko jedną drobną funkcję i które po prostu nie wymagają aktualizacji (na przykład wtyczka No Self Pings, która nie była aktualizowana od czerwca 2010 roku).
Które wtyczki warto sprawdzać pod kątem bezpieczeństwa?
Wszystkie – tak na wszelki wypadek. Pisałem kiedyś, jak być na bieżąco z informacjami o lukach w bezpieczeństwie, ale nie każdy ma na to czas i ochotę. Dlatego korzystanie z wtyczki Plugin Inspector może być dobrym pomysłem, bo zwalnia nas z konieczności samodzielnego śledzenia informacji o błędach we wtyczkach.
Jak działa Plugin Inspector?
Po instalacji wtyczki w menu Wtyczki panelu administracyjnego pojawi się nowa sekcja Plugin Inspector. Znajdziemy w niej listę wszystkich zainstalowanych na naszej stronie wtyczek.
Obok każdej z wtyczek znajduje się przycisk Check It, którego kliknięcie uruchamia proces skanowania wtyczki.
Ekran skanowania, poza informacjami o postępie procesu, zawiera dwie sekcje. Pierwsza to lista przeskanowanych plików wraz z ich statusem. Zielony status OK oznacza (co oczywiste), że z danym plikiem wszystko jest w porządku i nie znaleziono w nim żadnych podejrzanych rzeczy. Pozostałe statusy to Unsafe (żółty) i Deprecated (czerwony).
Status Unsafe oznacza, że w danym pliku wykryto co najmniej jeden fragment kodu, który może być potencjalnie niebezpieczny. Nie oznacza to jednak, że taka wtyczka jest niebezpieczna – oznacza to tylko, że wskazanemu fragmentowi kodu należy się nieco bliżej przyjrzeć. Takie ostrzeżenia możemy zignorować w przypadku wtyczek pochodzących od zaufanych autorów, natomiast w każdym innym przypadku warto dojść do tego, co wskazany kod ma na celu.
Widoczny na zrzucie ekranu przykład pokazuje użycie funkcji mcrypt_decrypt()
, z której korzystają również złośliwe skrypty, a także programiści, którzy chcą ukryć jakiś fragment kodu wtyczki (na przykład wyświetlający linki reklamowe) przed użytkownikiem i utrudnić mu jego modyfikację.
Status Deprecated oznacza, że w danym pliku znajduje się wywołanie funkcji WordPressa, która została oznaczona jako przestarzała (deprecated). Przestarzałe funkcje prędzej czy później zostaną usunięte z kodu WordPressa, a co za tym idzie korzystające z nich wtyczki po prostu przestaną działać. Nie należy jednak bezkrytycznie ufać tej informacji – na widocznym na zrzucie ekranu widać, że autor korzysta z przestarzałej funkcji tylko wtedy, gdy nowa funkcja nie istnieje (czyli strona działa na bardzo starej wersji WordPressa). Często jednak można spotkać się z wywołaniami przestarzałych funkcji we wtyczkach, które nie były od dłuższego czasu aktualizowane – w takich przypadkach należy poprosić autora o aktualizację lub rozejrzeć się za alternatywą.
Widoczny obok nazwy pliku przycisk view source otwiera podgląd zawartości pliku, w którym możemy wygodnie przejrzeć cały wskazany fragment kodu. Warto tam zerknąć nawet gdy nie jesteśmy programistami – często z kontekstu można wywnioskować, co dany kod ma na celu i czy naprawdę może być niebezpieczny.
Druga sekcja zawiera pochodzące z bazy WPScan informacje o lukach bezpieczeństwa znalezionych w danej wtyczce. Jeśli zobaczymy taki komunikat, to jak najszybciej należy uaktualnić wtyczkę lub ją usunąć (sama dezaktywacja nie wystarczy!).
Plugin Inspector nie jest oczywiście narzędziem idealnym. Przede wszystkim przydałaby się opcja masowego skanowania wszystkich lub wybranych wtyczek – teraz skanowanie trzeba włączać dla każdej wtyczki osobno. Nie zaszkodziłaby również możliwość cyklicznego, automatycznego uruchamiania skanowania (na przykład raz w tygodniu).