Haavoittuvuuden taustat: näin syntyy XSS-aukko

Ongelmat aiheuttaa yleensä ohjelmoija
Haavoittuvuuden taustat: näin syntyy XSS-aukko

Mikä on pahin tekninen uhka Internetin tietoturvalle? Jos mieleesi tulee Internet Explorer, Internet Information Server tai puskurin ylivuotohaavoittuvuudet, et ole ajan tasalla. Suosituimpien web-ohjelmistojen turvataso on parantunut merkittävästi, ja vaikka puskurin ylivuoto ei ole ohjelmointivirheenä valitettavasti harvinaistunut, raportoitujen haavoittuvuuksien joukossa se on jäänyt uudenlaisen uhan jalkoihin.

Yhdysvaltain kansallisia etuja puolustavan valtionyhtiö Mitren tietoturvakeskus seuraa ohjelmistohaavoittuvuuksien trendejä. Osoitteesta cwe.mitre.org/documents/vuln-trends/ löytyvässä raportissa ykkösuhaksi on vuosina 2005 ja 2006 noussut www-palvelimia riivaava XSS-haavoittuvuus. Samaan tulokseen on päätynyt web-sovellusten tietoturvaa edistävä OWASP (Open Web Application Security Project, www.owasp.org), joka julkaisee kymmenen pahimman haavoittuvuuden listaa kolmen vuoden välein.

XSS tulee sanoista cross-site scripting, joka on nimityksenä hiukan epähavainnollinen. Periaatteessa kyse on mistä tahansa tilanteesta, jossa web-palvelimen sovellus ottaa ulkoisesta lähteestä vastaan dataa, jonka se voi lähettää käyttäjän selaimelle dynaamisesti koostetulla sivulla validoimatta ensin tämän sisältöä.

Tällä tavalla toimittaessa selain voi käynnistää haitallisen komentosarjan esimerkiksi käyttäjän klikattua sivulla näkyvää linkkiä. Haittaskripti voi sitten vakoilla käyttäjää, kaapata istunnon, ohjata sen kalastelusivustolle, syöttää haittaohjelmia koneelle tai tehdä jotain muuta yhtä kauheaa.

Läheistä sukua XSS:lle ja usein sen kanssa yhteistyössä toimiva haavoittuvuus on tilastoissa toistaiseksi harvinaisempi CSRF (Cross Site Request Forgery). Siinä web-sivusto saa käyttäjän selaimelta pyynnön, jonka sisältö on muuta kuin käyttäjä on kuvitellut. Sivusto ei validoi pyyntöä, koska se luottaa käyttäjään, jonka se on jo tunnistanut.

Suljettu oli turvassa

XSS-ongelmien aiheuttajaksi voidaan yleensä osoittaa sivuston ohjelmoija, joka on laiminlyönyt tietoturvallisen sovelluskehityksen periaatteet. Usein vähintään osasyyllinen on myös valittu ohjelmointiväline, joka altistaa käyttäjänsä omille tyyppivirheilleen. Välineiden pitäisikin tarkastaa käsittelemiään tietoja nykyistä perusteellisemmin ja useammin.

Ongelma oli kaikesta huolimatta hallinnassa vuosikausia. Perinteinen web-sivusto on suljettu kokonaisuus, joka pitää käyttäjänsä pääosin yrityksen omien järjestelmien piirissä. Ulkoiset yhteydet, kuten verkkopankin kautta hoidettavat maksutapahtumat, on selvästi erotettu muusta kokonaisuudesta. Tällainen sivusto on suhteellisen helposti turvattavissa.

Myös web-selaimet tarjoavat perusturvan XSS:ää vastaan tarkastamalla, että esimerkiksi Javascript-koodi on lähtöisin samalta palvelimelta kuin muukin käsiteltävänä oleva sivu. Apuvälineenä voi myös käyttää web-sivustojen testausohjelmia, jotka käyvät läpi kaikki linkit etsien ohjelmointivirheitä ja -heikkouksia.

Web 2.0 korottaa panoksia

XSS on noussut kuumaksi puheenaiheeksi vasta web-sivustojen ohjelmointitapojen muuttuessa. Web 2.0:n nimellä tunnettu ilmiö on teknisessä mielessä kokoelma osittain uusia ohjelmointitekniikoita kuten AJAX (Asynchronous Javascript and XML), Flash, JSON (Javascript Object Notation), SOAP (Simple Object Access Protocol), REST (Representational State Transfer) ja RSS (Really Simple Syndication). Ne pyrkivät tekemään web-sivustoilla liikkumisen yhtä joustavaksi ja vuorovaikutteiseksi kuin paikallisten sovellusten käytön.

Sosiaalisessa mielessä web 2.0 aktivoi sivustojen käyttäjän luomaan ja tallentamaan omaa sisältöään muiden käyttäjien nautittavaksi ja kommentoitavaksi. Wikit, blogit ja Youtubet ovat jo vakuuttavasti osoittaneet konseptin voiman.

Useimmiten käyttäjien "oma sisältö" rajoittuu kuitenkin kommentteihin varsinaisen asian tullessa muilta sivustoilta lainattuna ja dynaamisesti linkitettynä. Staattisten sivustojen sijasta rakennetaan jatkuvasti muuttuvia mashupeja.

Vanhakantainen tietohallinto on web 2.0:n edessä kuin vieraalla maalla. Oman sovelluksen ja julkisen webin rajapinta hämärtyy, kun hakukoneita ja muita ulkoisia palveluita linkitetään yrityksen sivustolle. Uudet ohjelmointimenetelmät mahdollistavat tietojen siirtämisen sivustojen välillä piilottaen turhat välivaiheet käyttäjän silmiltä. Valitettavasti myös tietoturvauhat jäävät pimentoon.

Vahvasti web 2.0:aan panostaneet yritykset ovatkin kärsineet muita enemmän uuden tyyppisistä tietoturvaongelmista. Myspace-palvelussa vuonna 2005 levinnyt Samy-mato pystyi saastuttamaan miljoona konetta yhdessä ainoassa päivässä. Google on saanut paikkailla niin Gmailia, Documentsia, Bloggeria kuin Desktopiaan tietoturvaongelmien takia.

Syntipukkina AJAX

Jos vieraista blogeista, rss-syötteistä ja hakukoneista tulevaa sisältöä ei tarkasteta samalla ankaruudella kuin selaimen suoraan sivustolta itseltään saamaa tietoa, mahdollisuudet XSS-haavoittuvuuksiin ja niiden hyväksikäyttöön kasvavat. Erityisesti ovat viime aikoina olleet tapetilla AJAX-tekniikkaan liittyvät ongelmat.

AJAXissa työnjako palvelimen taustasovelluksen ja selaimen välillä ei ole enää yhtä selkeä kuin web 1.0:n aikaan, koska Javascriptiä käytetään nyt myös datan siirtoon pelkkien ohjaustietojen välittämisen lisäksi. Tiedot voivat olla peräisin eri lähteistä, ja skriptien alkuperä jää ohjelmoijalta helposti tarkistamatta. Pahinta on, että palvelun palvelin- ja selainosuudet voidaan kirjoittaa eri välineillä ja jopa eri ohjelmointikielillä.

Tietoturvayhtiö Finjan kiinnitti viime vuonna ensimmäisten joukossa huomiota AJAXin haavoittuvuuteen tässä suhteessa. Tänä vuonna Fortify Software -yhtiö laajensi Finjanin löydöstä paljon huomiota saaneella Javascript Hijacking-raportillaan, jossa se myös esitti keinoja välttää haavoittuvuus.

Fortifyn tutkijat analysoivat kaksitoista AJAX-sovelluskehitintä ja totesivat niistä vain yhden (tutkimusvaiheessa vasta beetavaiheessa olleen) tarjoavan suojaa löytämäänsä haavoittuvuuteen JSON-kutsujen käsittelyssä.

Jäävuori nousee pinnalle

Web 2.0:n bugien paljastamisesta on tullut jo kansanhuvi. Vuonna 2006 Mitre listasi 1282 XSS:ään liittyvää tietoturvaongelmaa. Tämä oli melkein viidesosa kaikista yhtiön tilastoimista uusista haavoittuvuuksista.

Esimerkkejä XSS-haavoittuvuuksista ja niiden hyväksikäytöstä ei ole viime vuosilta vaikea löytää. Googlen ja Myspacen ohella muun muassa Mozilla, Yahoo, GM, CBS, Warner Bros ja the New York Times ovat joutuneet korjailemaan sivustojaan. Vanhakin sivusto muuttuu helposti haavoittuvaksi, kun se päivitetään web 2.0-maailmaan.

Tietoturvayhtiö Whitehat Securityn perustanut Jeremiah Grossman on arvioinut, että 70 prosenttia kaikista web-sivustoista on haavoittuvia XSS-väärinkäytöksille. Hakkeripiireissä esitetään vielä korkeampia arvioita, ja keskustelusivustoa sla.ckers.org ylläpitävä nimimerkki Rsnake uskoo pystyvänsä löytämään jonkinlaisen XSS-haavoittuvuuden yrityksen kuin yrityksen sivustolta.

On sinänsä luonnollista, että XSS on noussut uhkatilastoissa puskurin ylivuotojen ohi. Jälkimmäiset koskevat yleensä keskeisten sovellusten tai käyttöjärjestelmien ohjelmakoodia, edelliset web-sivustojen toteutusta. Netcraft-yhtiön arvion mukaan web-sivustoja on maailmassa noin sata miljoonaa, ja niiden toteuttamisessa on käytetty perusohjelmistojen ohella mitä kirjavimpia välineitä sovelluskehittimistä skriptauskieliin.

Vanhat konstit eivät riitä

Uusien välineiden ja menetelmien imussa on jälleen kerran rynnätty suoraan sovelluskehitykseen tietoturvan tullessa jälkijunassa. Web 2.0 -sovellusten ohjelmoijille ja työkalujen kehittäjille riittääkin työtä uusien tietoturva-aukkojen etsimisessä, arvioinnissa ja tukkimisessa.

Web-sovellusten analysointiohjelmia kehittävät yhtiöt ovat myös kovan paikan edessä, kun vanhat keinot jatkuvasti löytyvien uudenlaisten haavoittuvuuksien etsimiseen eivät enää pure. Web 2.0 -sivuston kaikkia mahdollisia polkuja ei ole mahdollista kahlata läpi, koska polut muuttuvat eri lähteistä tulevan datan mukaan.

Kun pää on saatu auki, uudenlaisia haavoittuvuuksia löydetään varmasti lisää. Netti on jo nyt väärällään erilaisia web 2.0 -haavoittuvuuksien kymmenen kärjessä -listoja. Ehkä on kuitenkin lohdullista muistaa, että toistaiseksi hyväksikäyttöjä on tilastoitu häviävän pieni määrä vanhoihin kunnon Activex-haavoittuvuuksiin verrattuna.

Kirjoitus on julkaistu Tietokone-lehden numeron 9/2007 Kytkentöjä-palstalla.

Haavoittuvuuden taustat: näin syntyy XSS-aukko
Tagit: Haavoittuvuus, Xss
Lähetä Tulosta Tilaa RSS-syöte
Takaisin ylös Takaisin ylös
Takaisin ylös
RSS

Uutiset

Avoimien ohjelmistojen käyttö - Katso tapahtuman videoidut esitykset
Pieni kirjapuoti
Takaisin ylös