Jak sprawdzić, czy Twój system WordPress jest zabezpieczony przed atakami XSS?

Opublikowany: 2016-07-09

Na całym świecie prawie 48 procent wszystkich witryn internetowych jest podatnych na ataki typu cross-site scripting (XSS). Na całym świecie prawie dokładnie 25 procent wszystkich stron internetowych korzysta z platformy WordPress.

Wynika z tego, że na diagramie Venna witryn podatnych na XSS i witryn korzystających z platformy WordPress nakładanie się musi być dość duże.

To nie jest stukanie w samą platformę. Zespół WordPressa uczynił bezpieczeństwo integralną częścią swojej misji i agresywnie łata luki, gdy tylko zostaną ujawnione. Nie powstrzymuje to jednak ludzi przed kodowaniem niezabezpieczonych motywów lub instalowaniem niezabezpieczonych wtyczek. Te problemy to dwa główne sposoby ataków XSS na witryny WordPress, a w tym artykule omówimy, jak je powstrzymać.

Wprowadzenie do skryptów cross-site

Najpierw omówmy, jak przeprowadzane są ataki XSS. Istnieje więcej niż jeden rodzaj ataku XSS, więc zacznę od uproszczonej definicji. Ogólnie rzecz biorąc, ataki XSS rozpoczynają się od nieoczyszczonych danych wejściowych — formularzy komentarzy, pól komentarzy, pasków wyszukiwania itp. Ataki te różnią się znacznie poziomem zaawansowania. W rzeczywistości użytkownicy WordPressa codziennie widzą najprostszą formę ataku XSS: komentarz spamowy. Wiesz, o czym mówię: „ Dzięki za doskonały artykuł. Przy okazji, oto moja strona, na której zarabiam 5000 dolarów tygodniowo pracując w domu: www.only-an-idiot-would-click-this-link.co.uk.

W pewnym sensie komentarze spamowe są doskonałym przykładem ataku XSS. Złośliwy podmiot niszczy infrastrukturę Twojej witryny (pole komentarza), aby umieścić swoją zawartość (złośliwy link) w Twojej witrynie. Chociaż jest to dobry przykład ilustracyjny, bardziej realistyczny atak XSS będzie znacznie subtelniejszy. Utworzenie komentarza będącego spamem zajmuje komuś około pięciu sekund. Atak XSS to coś, nad czym porządny haker spędzi trochę więcej czasu.

spam as visitor comments

Prawdziwy czarny kapelusz spróbuje wykorzystać wszystkie aspekty Twojej witryny, które przesyłają dane na serwer, zasadniczo używając ich jako miniaturowego edytora tekstu. Jeśli twoje dane wejściowe są niebronione, oznacza to, że mogą dosłownie wziąć swój kod i zmusić twoją aplikację do uruchomienia go i renderowania w przeglądarce użytkownika (a to może obejmować twoją przeglądarkę). W przeciwieństwie do komentarzy spamowych, tylko szczegółowe zbadanie zmodyfikowanego kodu witryny lub przeczesanie interakcji z witryną może ujawnić naruszenie. Jak można sobie wyobrazić, nie ma końca ilości nieprzyjemnych rzeczy, które mogą wyniknąć z takiego naruszenia.

Zwykły wandalizm jest stosunkowo częstym skutkiem ataków XSS, w wyniku którego w miejscu Twoich treści wyświetlane są groteskowe obrazy lub propaganda polityczna. Marketerzy mający niewiele planów długoterminowych lub obaw etycznych wykorzystają je do reklamowania się ludziom wbrew ich woli. Bardziej zniuansowany i subtelny atak może ukraść dane logowania użytkowników. Jeśli jeden z nich ma uprawnienia administratora, wszelkie dane osobowe, które przechowujesz w swojej witrynie, mogą być dostępne do zdobycia. Alternatywnie mogą użyć początkowego ataku XSS jako dźwigni do podważenia Twojej witryny i zainstalowania jeszcze bardziej zaawansowanego złośliwego oprogramowania.

Zatrzymywanie ataków

Jeśli dobrze znasz się na kodowaniu i jesteś jedynym właścicielem stosunkowo niewielkiej witryny opartej na WordPressie, bezpieczne praktyki kodowania będą prawdopodobnie najlepszym sposobem na zablokowanie witryny przed atakami typu cross-site scripting. Uwzględniam to zastrzeżenie, ponieważ jeśli jesteś częścią większej organizacji, w której działa bardziej złożona aplikacja, znalezienie każdego obszaru, w którym złośliwy atakujący może wstrzyknąć kod, może nie być dla ciebie możliwe. Nowoczesne witryny internetowe mogą mieć ogromną skalę i może być konieczne zatrudnienie doświadczonego profesjonalisty i poświęcenie czasu na inne zadania, aby Twoja witryna była jeszcze lepsza dla czytelników.

Innym ostrzeżeniem jest to, że jeśli nie znasz się szczególnie na kodowaniu i chcesz, aby ktoś inny utworzył dla Ciebie witrynę, nie zakładaj, że użył on bezpiecznych praktyk kodowania. Nawet najbardziej doświadczeni programiści są znani z tego, że pozostawiają zabezpieczenia na boku lub popełniają drobne błędy bez konieczności sprawdzania ich pracy przez kogoś innego. Inni programiści mogą po prostu nie wiedzieć, co robią w zakresie bezpieczeństwa, a inni nadal pomijają zabezpieczenia, aby zaoszczędzić czas dla siebie (pomimo braku profesjonalizmu w tym zakresie). Podsumowując, upewnij się, że zatrudniasz uznanego profesjonalistę, który nie idzie na skróty, jeśli chodzi o rozwój i ochronę Twojej witryny.

Wyrażając tę ​​obawę, jedną z pierwszych i najłatwiejszych rzeczy, które można zrobić, aby zapobiec wykonywaniu skryptów między witrynami, jest sprawdzanie poprawności danych użytkownika.

Załóżmy, że masz w swojej witrynie formularz rejestracyjny, który prosi użytkownika o wpisanie swojego imienia i nazwiska. Złośliwy użytkownik może zamiast tego wpisać coś takiego:

[xhtml]
<script>CoughUpYourPreciousData();</script>
[/xhtml]

Może to na przykład spowodować, że następna osoba odwiedzająca tę stronę wyśle ​​kopię swoich plików cookie do atakującego.

Możesz zobaczyć, że w tym przykładzie powyższy ciąg kodu w niczym nie przypomina czyjegoś imienia. Twój serwer o tym nie wie, ale używając kilku ustawionych parametrów, możesz tego nauczyć. Na przykład możesz powiedzieć temu polu, aby odrzucało znaki specjalne, takie jak <>, () i ; (nie są one szczególnie potrzebne w sekcji komentarzy). Możesz powiedzieć temu polu, że nazwisko osoby prawdopodobnie nie zawiera cyfr. Jeśli chcesz być trochę drakoński, możesz powiedzieć temu polu, aby odrzucało dane wejściowe, które mają więcej niż piętnaście znaków (lub możesz zmienić wartości, jak chcesz). Podjęcie tych kroków drastycznie ograniczy ilość obrażeń, jakie atakujący może zadać na określonym polu.

Stopping Attacks

Nawet w przypadku sprawdzania poprawności danych mogą istnieć formularze lub pola, w których nie można realistycznie ograniczyć rodzaju używanych znaków, na przykład w formularzu kontaktowym lub polu komentarza. To, co możesz zrobić, to oczyścić dane. Proces ten uniemożliwia wykonanie kodu HTML w danym polu, konwertując wszystko, co może być rozpoznawalne jako fragment kodu wykonywalnego, na znaki niekodujące. Na przykład hiperłącze nie pojawi się tam, gdzie może istnieć.

Wreszcie, istnieją przypadki, w których Twoja witryna może wyświetlać dane, które są niebezpieczne dla użytkowników. Załóżmy, że ktoś napisał złośliwy komentarz na jednej z Twoich stron, który jest następnie indeksowany przez funkcję wyszukiwania w Twojej witrynie. Za każdym razem, gdy jeden z użytkowników przeprowadza wyszukiwanie, ten złośliwy kod jest wykonywany, gdy jego przeglądarka ładuje wyniki wyszukiwania. Można temu zapobiec dzięki unikaniu danych, które zapewnia, że ​​gdy witryna dostarcza dane użytkownikowi, jedynym uruchamianym kodem jest ten, który chcesz uruchomić.

Aby uzyskać więcej informacji na temat sprawdzania poprawności danych, oczyszczania danych i unikania danych, WordPress Codex ma doskonałe źródło. Wyjaśni szczegółowo powyższe koncepcje, a także poda więcej przykładów, które można zastosować uniwersalnie.

Inne metody

Duże firmy mają większe strony internetowe; to jest fakt. Może tysiące osób dziennie korzysta z Twojej witryny. Może zamiast standardowych formularzy i pól są też animacje, różne portale, części napisane w Javie i tak dalej. Nawet jeśli będziesz to wszystko śledzić, być może w jednej z twoich aplikacji jest dzień zerowy i nie masz jak się bronić.

W takiej sytuacji, jeśli masz na to wpływy i środki budżetowe, polecam zainwestować w zaporę aplikacji sieci Web (WAF). Dobry plik WAF będzie miał reguły korelacji, które automatycznie identyfikują i blokują ciągi HTML, które są najczęściej kojarzone z atakami polegającym na wstrzykiwaniu kodu. Mogą również powiadamiać Cię, gdy aplikacje zaczną eksfiltrować dane, gdy nie powinny lub robią to w nietypowej ilości, pomagając w ten sposób chronić się przed atakami typu zero-day i innymi zaawansowanymi zagrożeniami. WAF nie jest srebrną kulą, ale jest nieocenionym narzędziem dla specjalistów ds. bezpieczeństwa i właścicieli witryn, którzy chcą chronić złożone aplikacje.

Istnieje również wiele wtyczek, które rzekomo mają chronić przed atakami XSS. Właściwie nie polecam tych. Zamiast zmniejszać ryzyko, wiele z tych wtyczek stanowi po prostu kolejną powierzchnię ataku, którą może wykorzystać haker. Nawet jedna z najbardziej znanych i powszechnie używanych wtyczek bezpieczeństwa, Akismet, okazała się podatna na ataki XSS w zeszłym roku. Jeśli chodzi o odpieranie ataków XSS, nie polegaj na półśrodkach. Rozwijaj niezbędne umiejętności i korzystaj z odpowiedniego zestawu narzędzi, aby Twoja witryna była bezpieczna.

Inne praktyczne zastosowania

Ta informacja może być nieco skomplikowana dla niewtajemniczonych, ale nie chciałbym, aby ludzie byli zniechęceni potencjalną złożonością tych informacji. Jeśli dojdzie do ataku XSS, możesz być pewien, że posprzątanie po takim zdarzeniu będzie znacznie bardziej skomplikowane niż wprowadzanie zmian w witrynie. Usunięcie kosztów reputacji Twojej witryny (zwykli czytelnicy dość łatwo uciekną z Twojej witryny) będzie dodatkowym problemem, o który nie chcesz się martwić.

Nawet jeśli zatrudniasz kogoś innego, aby zajął się rozwojem i bezpieczeństwem Twojej witryny, zrób co możesz, aby przynajmniej zareagować w sytuacji awaryjnej i wiedzieć, gdzie są Twoje słabe punkty. Umiejętność sprawdzania systemu będzie kluczową umiejętnością na dłuższą metę i będzie podstawą dla innych tematów dotyczących bezpieczeństwa i projektów rozwoju witryn internetowych. Wszystko jest ze sobą połączone online i chociaż ataki XSS mogą być kwestią ostatnich lat (choć jest to mało prawdopodobne), wiedza, że ​​tajniki Twojej witryny nigdy nie będą przestarzałe.

Końcowe przemyślenia

Krajobraz bezpieczeństwa w Internecie nieustannie się zmienia. Nigdy nie możesz być całkowicie pewien, jak może pojawić się atak XSS lub jak może zostać wykorzystany przeciwko tobie, ale jesteś to winien sobie i swoim czytelnikom, aby upewnić się, że robisz wszystko, co w twojej mocy, aby ich powstrzymać. Informuj się o tym zagrożeniu i sprawdzaj regularnie (zalecam co najmniej raz w miesiącu) wszelkie istotne zmiany w świecie cyberbezpieczeństwa.

Nie oznacza to również, że możesz ignorować inne zagrożenia. Dostęp do sieci publicznej nadal wymaga korzystania z VPN, aby był bezpieczny. Nie możesz zaniedbać bezpieczeństwa żadnego komputera, z którego korzystasz, aby uzyskać dostęp do swojej witryny. Informacje logowania nadal muszą być często zmieniane i być zabezpieczone przed atakami typu brute force. Ataki XSS są brutalne, ale nie są jedynym zagrożeniem, na które należy uważać.

Może być również konieczne udostępnienie tych informacji (lub nawet tego artykułu) swoim kolegom i zainteresowanym stronom w celu szerzenia oporu przeciwko tego typu atakom. Chociaż możesz nie być w stanie zrobić zbyt wiele sam, jeśli wystarczająco dużo osób będzie się odpowiednio chronić, możemy zauważyć ogólny spadek tego typu ataków, ponieważ hakerzy próbują znaleźć inny sposób na czerpanie korzyści z biednych użytkowników Internetu.

Czy sam zastanawiasz się, jak sprawdzać ataki XSS i jak się przed nimi bronić w przyszłości? Czy są jakieś inne strategie wykrywania i usuwania, których sam używasz do walki z tym zagrożeniem? Czy są jakieś narzędzia, które poleciłbyś innym czytelnikom? Jeśli tak, zostaw komentarz poniżej i kontynuuj tę ważną rozmowę z innymi czytelnikami.