Mitä on Content Security Policy?

Kirjoitettu: 4.3.2019 Päivitetty: 4.3.2019

Tietoturva on monesti kilpajuoksua verkkorikollisia vastaan. Ns. script kiddiet ja ammattimaisemmat toimijat skannaavat tauotta läpi internetiä bottiarmeijat aseinaan löytääkseen haavoittuvaisia kohteita: reitittimiä, tulostimia, www-palvelimia ja jääkaappeja. Kohteen tyypillä ei ole väliä, kaikki kelpaa. Kun bottiverkko löytää sopivan kohteen, on vuorossa automatisoitu tietoturva-aukkojen etsintä: kohdejärjestelmille lähetään erilaisia syötteitä ja yritetään saada järjestelmä palauttamaan sensitiivistä tietoa, tai muuttamaan toimintaansa hyökkääjän toiveiden mukaiseksi.

WordPress -sivustojen osalta hyökkääjät yleensä keskittyvät kaivamaan esiin heikkoja salasanoja sekä haavoittuvaisia lisäosia. Yksi yleisimmistä haavoittuvuustyypeistä on Cross-Site Scripting, eli XSS. Käytännössä kyseessä on tilanne, jossa käyttäjä onnistuu syöttämään sivulle omavalintaista koodia, esimerkiksi sivustolle upotetun yhteydenottolomakkeen avulla. Haavoittuvuustyyppi on mukana mm. OWASP TOP10 -listauksessa, joka on ajantasainen listaus vakavimmista verkkopalveluita koskevista uhkaluokista.

Pieni virhe sivuston koodissa voikin johtaa sivuston kaappaamiseen. Mikä siis avuksi? Yksi keino on Content Security Policy (CSP), tietoturvastandardi ja -tekniikka, jossa sivusto kertoo vierailijan verkkoselaimelle, mitkä ovat sallittuja resursseja kyseisellä sivustolla, sekä toisaalta voidaan pyytää selainta raportoimaan tietoturvapoikkeamista sivustolle upotetuissa sisällöissä. CSP:n tavoitteena on rajoittaa vieraan koodin ja muiden komponenttien sisällyttämistä sivustolle ja näin ehkäistä muun muassa cross-site-scripting ja ClickJacking -tyyppisiä hyökkäyksiä. Edellytyksenä CSP:n käytölle on, että kävijällä on käytössään moderni verkkoselain (Chrome 25+ ,Edge 14+, Firefox 23+, IE 10+, Opera 15+, Safari 7+).

Tieto sallituista resursseista välitetään palvelimelta selaimelle HTTP-otsakkeena Content-Security-Policy. Sen avulla voidaan määritellä sallitut lähteet esimerkiksi skripteille, tyylitiedostoille, upotetuille fonteille, kehyksille ja muille sisältötyypeille. CSP-säännöllä voidaan sallia joko yksittäisiä tiedostoja, tai kokonaisia verkkotunnuksia tai protokollia. Kokonainen HTTP-otsake voi näyttää esimerkiksi seuraavalta (esimerkin sisältö on muotoiltu helpommin luettavaksi, tarkempi tekninen kuvaus löytyy Mozillan kehittäjädokumentaatiosta):

content-security-policy:
default-src 'self';
script-src 'self' https://www.google-analytics.com https://code.jquery.com https://www.gstatic.com https://www.google.com/recaptcha/api.js https://v2.zopim.com https://platform.twitter.com https://cdn.syndication.twimg.com https://www.googletagmanager.com;
  style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:;
font-src 'self' data: https://fonts.gstatic.com https://use.fontawesome.com https://v2.zopim.com/widget/fonts/zopim.ttf https://*.bootstrapcdn.com;
frame-src https://www.slideshare.net https://www.google.com https://platform.twitter.com https://syndication.twitter.com https://www.youtube.com;
connect-src 'self' wss://*.zopim.com;
upgrade-insecure-requests;
report-uri https://seravo-cspreports.seravo.fi/receive.php;

Yksinkertaistetusti ilmaistuna CSP-otsakkeen avulla verkkopalvelu käytännössä kertoo käyttäjän selaimelle, että ”skriptejä voit lukea ainoastaan palvelimilta A ja B, tyylisivuja palvelimilta A ja C, sekä kuvia palvelimilta A, B, D”. Selain ei suostu avamaan mitään muita resursseja, jolloin esimerkiksi hyökkääjän sivustolle injektoima JavaScript -haittakoodi ei käynnistykään. Mikäli sivusto yrittää tarjota muita resursseja, selain osaa raportoida asiasta sivuston ylläpitäjälle, joka voi välittömästi ryhtyä toimenpiteisiin hyökkääjää vastaan.

CSP:n käyttöönotto on monivaiheinen prosessi, jossa on tärkeää huolehtia siitä, että koko kehitystyössä otetaan huomioon tekniikan vaikutukset mm. uusien ominaisuuksien käyttöönottoon. Toiminnon tuottamia raportteja on tärkeää seurata aktiivisesti, jotta mahdolliset poikkeamat voidaan havaita. Virheellinen toteutus voi helposti tarkoittaa rikkinäistä verkkosivustoa. Lisähaasteen tekniikan käyttöönottoon tuo WordPress, jonka ytimessä on vielä tällä hetkellä muutamia tiedossa olevia CSP-tekniikan kanssa yhteensopivuutta heikentäviä tekijöitä.

Oikein käytettynä CSP tuo kuitenkin huomattavan lisäsuojan hyökkäysyrityksiä vastaan ja voi toimia pelastavana tekijänä murtoyrityksen osuessa omalle kohdalle. Mikäli tekniikan käyttöönotto kiinnostaa, hyvä tapa päästä aiheessa eteenpäin on tutustua Firefox -selainta kehittävän Mozilla-säätiön kehittäjädokumentaatioon aiheesta.

Kommentoi

Ville Korhonen

Hae WP-palvelu.fi:stä

Kategoriat

Lue myös

Kehityskeskiviikko oli jälleen menestys

22.5.2019

Seravon asiakkaat ja yhteistyökumppanit kokoontuivat jälleen toukokuun puolivälissä Seravon toimistolle Tampereelle kehittämään WP-palvelua. Saimme arvokasta palautetta toimintamme kehittämiseksi ja pääsimme […]

WordPress 5.2 ”Jaco” on ulkona

10.5.2019

WordPress 5.2 on jo toinen isompi päivitys kuluvana vuonna. Se tuo tullessaan uudet työkalut sivuston eheyden tarkasteluun, päivitetyt minimivaatimukset PHP-versiolle, […]

Ilmoittaudu Kehityskeskiviikkoon 2019!

24.4.2019

Mielipiteesi on meille tärkeä! Järjestämme kumppaneillemme ja asiakkaillemme jo perinteisen Kehityskeskiviikon 15.5.2019 klo 12 alkaen. Tapahtuman tarkoituksena on kerätä arvokasta […]