Kuinka tarkistaa, onko WordPress-järjestelmäsi suojattu XSS-hyökkäyksiltä
Maailmanlaajuisesti lähes 48 prosenttia kaikista verkkosivustoista on alttiina cross-site scripting (XSS) -skriptille. Maailmanlaajuisesti lähes täsmälleen 25 prosenttia kaikista verkkosivustoista käyttää WordPress-alustaa.
Tästä seuraa, että Venn-kaaviossa XSS:lle alttiista verkkosivustoista ja WordPress-alustaa käyttävistä verkkosivustoista päällekkäisyyden on oltava melko suuri.
Tämä ei ole koputus itse alustalle. WordPress-tiimi on tehnyt tietoturvasta olennaisen osan tehtäväänsä ja korjaa aggressiivisesti haavoittuvuuksia aina, kun ne tulevat tunnetuksi. Tämä ei kuitenkaan estä ihmisiä koodaamasta turvattomia teemoja tai asentamasta suojaamattomia laajennuksia. Nämä ongelmat ovat kaksi ensisijaista sisäänkäyntiä WordPress-sivustoihin kohdistuville XSS-hyökkäyksille, ja tässä artikkelissa käsitellään niiden pysäyttämistä.
Johdatus sivustojen väliseen komentosarjaan
Ensin keskustellaan siitä, kuinka XSS-hyökkäykset suoritetaan. XSS-hyökkäystyyppejä on useampi kuin yksi, joten aloitan yksinkertaistetulla määritelmällä. Yleensä XSS-hyökkäykset alkavat puhdistamattomilla syötteillä – kommenttilomakkeilla, kommenttikentillä, hakupalkkeilla jne. Nämä hyökkäykset vaihtelevat suuresti. WordPressin käyttäjät näkevät itse asiassa yksinkertaisimman XSS-hyökkäyksen muodon päivittäin: roskapostikommentin. Tiedät mistä puhun: ”Kiitos erinomaisesta artikkelista. Muuten, tässä on sivustoni, jossa ansaitsen 5 000 dollaria viikossa työskentelemällä kotoa käsin: www.only-an-idiot-would-click-this-link.co.uk.”
Roskapostikommentit ovat jollain tapaa täydellinen esimerkki XSS-hyökkäyksestä. Haitallinen taho horjuttaa sivustosi infrastruktuuria (kommenttikenttä) sijoittaakseen sisältönsä (haitallinen linkki) sivustollesi. Vaikka tämä on hyvä havainnollistava esimerkki, realistisempi XSS-hyökkäys on paljon hienovaraisempi. Roskapostikommentin luominen vie noin viisi sekuntia. XSS-hyökkäys on asia, johon oikea hakkeri viettää enemmän aikaa.
Todellinen musta hattu yrittää hyödyntää kaikkia sivustosi ominaisuuksia, jotka lähettävät tietoja palvelimelle, ja käyttävät niitä pääasiassa pienoistekstineditorina. Jos syötteesi ovat puolustamattomia, se tarkoittaa, että ne voivat kirjaimellisesti ottaa koodinsa ja pakottaa sovelluksesi suorittamaan sen ja renderöimään käyttäjän selaimessa (ja se voi sisältää selaimesi). Toisin kuin roskapostikommentit, vain sivustosi muokatun koodin yksityiskohtainen tarkastelu tai verkkosivuston vuorovaikutuksen selaaminen saattaa paljastaa rikkomuksen. Kuten voisi kuvitella, tällaisen rikkomuksen aiheuttamien epämiellyttävien asioiden määrälle ei ole loppua.
Yksinkertainen ilkivalta on suhteellisen yleinen seuraus XSS-hyökkäyksistä, jolloin käyttäjillesi näytetään groteskeja kuvia tai poliittista propagandaa sisältösi tilalla. Markkinoijat, joilla on vähän pitkän aikavälin suunnitelmia tai eettisiä huolenaiheita, käyttävät niitä mainostaakseen ihmisiä vastoin heidän tahtoaan. Vivahteikas ja hienovaraisempi hyökkäys saattaa varastaa käyttäjiesi kirjautumistiedot. Jos jollakin heistä on järjestelmänvalvojan oikeudet, kaikki sivustollesi tallennetut henkilökohtaiset tiedot voivat olla napattavissa. Vaihtoehtoisesti he voivat käyttää alkuperäistä XSS-hyökkäystä vipuna sivustosi avaamiseen ja entistä kehittyneempien haittaohjelmien asentamiseen.
Hyökkäysten lopettaminen
Jos olet kohtuullisen kooditaitoinen henkilö ja olet suhteellisen pienen WordPress-sivuston ainoa omistaja, suojatut koodauskäytännöt ovat luultavasti paras tapa lukita sivustosi sivustojen välisiltä komentosarjahyökkäyksiltä. Lisään tämän varoituksen, koska jos olet osa suurempaa organisaatiota, joka käyttää monimutkaisempaa sovellusta, et ehkä ole inhimillisesti mahdollista löytää kaikkia alueita, joille haitallinen hyökkääjä saattaa syöttää koodia. Nykyaikaiset verkkosivustot voivat olla valtavia, ja sinun kannattaa palkata kokenut ammattilainen ja käyttää aikaasi muihin harrastuksiin, jotta verkkosivustosi olisi entistä parempi lukijoillesi.
Toinen varoitus on, että jos et ole erityisen kooditaitoinen ja annat jonkun muun rakentaa sivustosi puolestasi, älä oleta, että he ovat käyttäneet turvallisia koodauskäytäntöjä. Jopa kokeneimpien kehittäjien on tiedetty jättävän tietoturvan sivuun tai tekevän pieniä virheitä ilman, että joku muu on tarkistanut työnsä. Toiset kehittäjät eivät ehkä yksinkertaisesti tiedä, mitä he tekevät tietoturvan suhteen, ja toiset pitävät turvallisuuden huomioimatta säästääkseen aikaa itselleen (huolimatta ammattimaisuuden puutteesta). Yhteenvetona, varmista, että palkkaat arvostetun ammattilaisen, joka ei tee kulmia verkkosivustosi kehittämisessä ja suojaamisessa.
Kun tämä huolenaihe on ilmaistu, yksi ensimmäisistä ja helpoimmista asioista, jonka voit tehdä estääksesi sivustojen välisen komentosarjan, on käyttäjätietojen validointi.
Oletetaan, että sivustollasi on rekisteröitymislomake, joka pyytää käyttäjää lisäämään nimensä. Haitallinen käyttäjä saattaa sen sijaan kirjoittaa jotain tällaista:
Tämä voi esimerkiksi saada seuraavan sivulla vierailevan henkilön lähettämään kopion evästeistään hyökkääjälle.
Voit nähdä, että tässä esimerkissä yllä oleva koodimerkkijono ei näytä millään tavalla jonkun nimeltä. Palvelimesi ei tiedä tätä, mutta voit opettaa sen käyttämällä muutamia asetettuja parametreja. Voit esimerkiksi käskeä kentän hylkäämään erikoismerkit, kuten ,() ja ; (niitä ei erityisesti tarvita kommenttiosiossa). Voit kertoa kenttään, että henkilön nimessä ei todennäköisesti ole numeroita. Jos haluat olla hieman ankara, voit käskeä kentän hylkäämään syötteet, jotka ovat yli viisitoista merkkiä pitkät (tai voit muuttaa arvoja haluamallasi tavalla). Näiden vaiheiden suorittaminen rajoittaa huomattavasti vahingon määrää, jonka hyökkääjä voi tehdä tietylle kentällä.
Jopa tietojen validoinnissa voi olla lomakkeita tai kenttiä, joissa et voi realistisesti rajoittaa käytettävien merkkien tyyppiä, kuten yhteydenottolomakkeessa tai kommenttikentässä. Mitä voit tehdä, on desinfioida tiedot. Tämä prosessi tekee mahdottomaksi HTML-koodin suorittamisen tietyssä kentässä ja muuntaa kaiken, mikä saattaa olla tunnistettavissa suoritettavan koodin osana, ei-koodaaviksi merkeiksi. Esimerkiksi hyperlinkki ei näy siellä, missä se muuten voisi olla.
Lopuksi on tapauksia, joissa sivustosi saattaa päätyä näyttämään tietoja, jotka eivät ole turvallisia käyttäjille. Oletetaan, että joku kirjoittaa haitallisen kommentin yhdelle sivustasi, jonka sivustosi hakutoiminto indeksoi myöhemmin. Aina kun joku käyttäjistäsi tekee haun, tämä haitallinen koodi suoritetaan, kun heidän selaimensa lataa hakutulokset. Tämä estetään pakottamalla tietoja, mikä varmistaa, että kun sivustosi toimittaa tietoja käyttäjälle, ainoa koodi, joka suoritetaan, on se koodi, jonka haluat suorittaa.
WordPress Codexilla on erinomainen resurssi, jos haluat lisätietoja tietojen validoinnista, desinfioinnista ja tietojen pakenemisesta. Se selittää yllä olevat käsitteet yksityiskohtaisesti sekä antaa lisää esimerkkejä, joita voidaan soveltaa yleisesti.
Muut menetelmät
Suurilla yrityksillä on suuremmat verkkosivustot; se on fakta. Ehkä tuhannet ihmiset käyttävät sivustoasi päivässä. Ehkä standardilomakkeiden ja kenttien sijaan on myös animaatioita, erilaisia portaaleja, Java-kielellä kirjoitettuja osia ja niin edelleen. Vaikka seuraat kaikkea tätä, yhdessä hakemuksessasi saattaa olla nollapäivä, etkä voi puolustautua.
Tällaisessa tilanteessa, jos sinulla on vaikutusvaltaa ja budjetti dollareita tehdä niin, suosittelen, että investoit Web Application Firewall (WAF). Hyvä WAF sisältää korrelaatiosäännöt, jotka automaattisesti tunnistavat ja estävät HTML-merkkijonot, jotka yleisimmin liittyvät koodinsyöttöhyökkäuksiin. Ne voivat myös ilmoittaa sinulle, kun sovellukset alkavat suodattaa tietoja, kun niiden ei ole tarkoitus tai tekevät sitä epätavallisella määrällä, mikä auttaa puolustautumaan nollapäivähyökkäyksiä ja muita kehittyneitä uhkia vastaan. WAF ei ole hopealuoti, mutta se on korvaamaton työkalu tietoturva-ammattilaisille ja verkkosivustojen omistajille, jotka haluavat suojata monimutkaisia sovelluksia.
On myös useita laajennuksia, joiden tarkoituksena on suojautua XSS-hyökkäyksiä vastaan. En todellakaan suosittele näitä. Riskin vähentämisen sijaan monet näistä liitännäisistä ovat vain yksi hyökkäyspinta hakkerin hyödynnettäväksi. Jopa yksi tunnetuimmista ja laajimmin käytetyistä tietoturvalaajennuksista, Akismet, havaittiin viime vuonna alttiiksi XSS-hyökkäyksille . Kun kyse on XSS-hyökkäysten torjumisesta, älä luota puolitoimiin. Kehitä tarvittavat taidot ja käytä asianmukaisia työkaluja verkkosivustosi turvallisuuden varmistamiseksi.
Muut käytännön sovellukset
Nämä tiedot voivat olla vähän monimutkaisia tietämättömille, mutta inhoan ihmisten lannistuvan tämän tiedon mahdollisesta monimutkaisuudesta. Jos XSS-hyökkäys tapahtuu, voit olla varma, että siivoaminen tällaisen tapahtuman seurauksista on paljon monimutkaisempaa kuin muutosten tekeminen verkkosivustollesi. Mainekustannusten siivoaminen verkkosivustollesi (tavalliset lukijat pakenevat verkkosivustoltasi melko helposti) on lisäongelma, josta sinun ei tarvitse huolehtia.
Vaikka saat jonkun muun hoitamaan verkkosivustosi kehittämisen ja turvallisuuden puolestasi, tee kaikkesi, jotta pystyt ainakin reagoimaan hätätilanteeseen ja tietämään, missä heikkoutesi ovat. Järjestelmän tarkistaminen on pitkällä aikavälillä elintärkeä taito ja perusta muille tietoturva-aiheille ja verkkosivustojen kehitysprojekteille. Kaikki on yhteydessä toisiinsa verkossa, ja vaikka XSS-hyökkäykset saattavat olla menneiden vuosien juttu (vaikka tämä onkin epätodennäköistä), verkkosivustosi läpikotaisin tunteminen ei ole koskaan vanhentunutta.
Lopulliset ajatukset
Internetin tietoturvaympäristö muuttuu jatkuvasti. Et voi koskaan olla täysin varma siitä, miltä XSS-hyökkäys saattaa näyttää tai kuinka sitä voidaan käyttää sinua vastaan, mutta olet sen velkaa itsellesi ja lukijoillesi varmistaaksesi, että teet kaiken voitavasi estääksesi heidät. Pysy ajan tasalla tästä uhasta ja tarkista säännöllisesti (suosittelen vähintään kuukausittain) mahdollisen kyberturvallisuuden kehityksen varalta.
Tämä ei myöskään tarkoita, että voit sivuuttaa muita uhkia. Julkisen verkon käyttö edellyttää silti VPN:n käyttöä, jotta se olisi turvallista. Et voi laiminlyödä verkkosivustollesi pääsyyn käyttämäsi tietokoneen turvallisuutta. Kirjautumistietoja on edelleen vaihdettava usein ja oltava turvassa raa’an voiman hyökkäyksiltä. XSS-hyökkäykset ovat raakoja, mutta ne eivät ole ainoa varottava uhka.
Sinun kannattaa myös jakaa nämä tiedot (tai jopa tämä artikkeli) kollegoidesi ja kiinnostuneiden osapuolten kanssa levittääksesi vastustusta tämäntyyppisiä hyökkäyksiä vastaan. Vaikka et ehkä pysty tekemään liikaa yksin, jos riittävä määrä ihmisiä suojaa itseään kunnolla, saatamme havaita tämäntyyppisten hyökkäysten yleisen vähenemisen, kun hakkerit yrittävät keksiä toisenlaisen tavan hyötyä köyhiltä internetin käyttäjiltä.
Onko sinulla itselläsi ajatuksia siitä, kuinka voit tarkistaa XSS-hyökkäykset ja puolustaa itseäsi niitä vastaan tulevaisuudessa? Onko olemassa muita havaitsemis- ja poistostrategioita, joita käytät itse torjuaksesi tätä uhkaa? Onko olemassa työkaluja, joita voisit suositella lukijoille? Jos näin on, jätä kommentti alle ja jatka tätä tärkeää keskustelua lukijoiden kanssa.