O konieczności regularnego aktualizowania używanych wtyczek i motywów piszę przy każdej możliwej okazji. Tym razem okazja jest szczególna, bowiem ofiarą złośliwego skryptu nazwanego SoakSoak (od adresu jednej ze stron, na które są przekierowywane osoby odwiedzające zainfekowane serwisy) padło (szacunkowo) ponad 100 tysięcy stron korzystających z popularnej wtyczki Slider Revolution (znanej również pod skróconą nazwą RevSlider). Sprawę opisano szczegółowo na blogu Sucuri, ale niestety w mojej ocenie firma ta jest współodpowiedzialna za zaistniałą sytuację.
Jak działa SoakSoak?
Złośliwy skrypt wykorzystuje luki we wtyczce RevSlider w wersji 4.1.4 lub starszej (podatne są wszystkie wersje wydane przed 25 lutego 2014). Pobiera plik wp-config.php
(w którym są dane do logowania do bazy danych), przesyła na serwer ofiary dwa backdoory, a następnie modyfikuje dwa pliki (swfobject.js
i template-loader.php
), dzięku czemu jest w stanie przekierowywać osoby odwiedzające zainfekowaną stronę do innych serwisów.
Jak pozbyć się SoakSoak?
Aby pozbyć się złośliwego kodu ze strony należy zaktualizować wtyczkę RevSlider do najnowszej wersji (a co najmniej do wersji 4.2). Nie wystarczy podmienić tylko dwóch wspomnianych plików!
Nie tylko RevSlider
Drugą wtyczką zawierającą dokładnie taki sam błąd był znacznie mniej popularny Showbiz Pro, pochodzący od tego samego autora.
Dlaczego Sucuri powinno czuć się współodpowiedzialne?
Po raz pierwszy o poważnej luce bezpieczeństwa we wtyczce RevSlider ekipa Sucuri pisała na początku września 2014. Wpis powstał po informacji otrzymanej od pracownika firmy hostingowej Dreamhost, który na pewno miał dobre chęci, ale nie raczył nawet zorientować się w sytuacji. Pracownicy Sucuri również nie zadali sobie trudu i nie zbadali tematu. A może zbadali i doszli do wniosku, że prędzej czy później ktoś wykorzysta wspomnianą lukę, a wtedy wpadnie im trochę klientów z zainfekowanymi stronami? Wątpię, ale kto wie…
Problem w tym, że tak naprawdę wspomniany błąd został wykryty już pod koniec lutego 2014 (czyli ponad pół roku wcześniej) i natychmiast poprawiony przez autora wtyczki. Ponieważ RevSlider jest płatną wtyczką dystrybuowaną za pośrednictwem serwisu CodeCanyon, posiada on własny mechanizm automatycznych aktualizacji, który do działania wymaga podania klucza otrzymanego przy zakupie. Autorzy motywów sprzedawanych w serwisie ThemeForest często dołączają tę wtyczkę do swoich produktów, a w takim przypadku kupujący nie otrzymują wspomnianego klucza, przez co są pozbawieni automatycznych aktualizacji (nie są nawet powiadamiani o ich dostępności). Co więcej, nabywcy motywu nie mają możliwości samodzielnego pobrania nowych wersji dołączonych do niego wtyczek – mogą tylko liczyć na dobrą wolę autora szablonu, który aby dostarczyć swoim klientom nową wersję wtyczki musi ją samodzielnie pobrać i opublikować nową wersję motywu z dołączoną aktualizacją (jedni robią to regularnie, inni nie). Proces ten jest uciążliwy dla użytkowników szablonu, ale tak się niestety kończą próby zaoszczędzenia kilkunastu dolarów („kupię ten motyw, bo do niego są dołączone fajne płatne wtyczki”).
Liczba zagrożonych stron jest trudna do oszacowania. Do 25 lutego 2014 (czyli do momentu załatania luki) wtyczkę nabyło ponad 21 tysięcy osób, do których należy jeszcze dodać wszystkie osoby, które zakupiły jeden z motywów z dołączonym RevSliderem.
Firma Envato (właściciel m. in. serwisów CodeCanyon i ThemeForest) zaraz po opisaniu problemu przez Sucuri rozpoczęła intensywną kampanię, mającą na celu poinformowanie jak największej liczby użytkowników wtyczki o konieczności jej uaktualnienia. Opublikowano nawet listę motywów, do których dołączono RevSlider, a także szczegółową instrukcję aktualizacji. Jestem przekonany, że akcja ta przyniosła bardzo dobre efekty i jestem jak najbardziej za publikowaniem tego typu informacji. Problem w tym, że została ona wymuszona przez felerny wpis na blogu Sucuri, a nie sam błąd we wtyczce (który – przypominam – był już od ponad pół roku poprawiony).
ThemePunch, autor wtyczki RevSlider, był (i wciąż jest) świadomy opisanych wyżej problemów z aktualizacjami. W wątku, który powstał na forum serwisu ThemeForest zaraz po publikacji Sucuri, pisze o tym, kiedy tak naprawdę odkryto błąd i kiedy go usunięto. Wspomina również, że firmy zajmujące się bezpieczeństwem poradziły niepublikować informacji o błędzie, a w szczególności o sposobie jego wykorzystania, tak aby w Sieci nie pojawiły się instrukcje „hackowania” wtyczki. Mając na uwadze opisane wyżej problemy z uaktualnieniami i dobro użytkowników, takie działanie wydaje się sensowne.
Tymczasem ekipa Sucuri, również świadoma wszystkich tych problemów, w swoim wpisie opisała sposób wykorzystania błędu we wtyczce RevSlider. Oczywiście, informacje te trafiły do Sieci już wcześniej (na przykład tutaj), ale rozpowszechnianie ich dalej przez blog o dość dużym zasięgu (a takim jest blog Sucuri) nie mogło doprowadzić do niczego dobrego. Moim zdaniem było to niepotrzebne i na pewno nie pomogło użytkownikom dziurawych wersji wtyczki.
Nie tak sobie wyobrażam działalność bloga poświęconego bezpieczeństwu serwisów internetowych.