Mitä on Content Security Policy?

Kirjoitettu: 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ä

Lue myös

WordPress 5.4 on julkaistu

1.4.2020

Maaliskuun 31. toi meille uuden WordPress-version 5.4. On tapana, että WordPress-versiot nimetään legendaaristen jazz-muusikoiden mukaan. Tällä kerralla kunnian saa trumpetisti […]

WordPressin haku nopeaksi MariaDB:llä

24.3.2020

WordPressin sisäänrakennettua hakutoimintoa ei voi aina kehua nopeaksi. Se hidastelee helposti varsinkin suurilla sivustoilla, kun tietokannassa on paljon sisältöä. Tätä […]

WooCommerce 4.0 on ulkona

13.3.2020

On olemassa monia hyviä syitä miksi kannattaa valita WooCommerce verkkokaupan alustaksi. Ei ole sattumaa, että se on maailman suosituin verkkokauppa-alusta, […]