Oracle ja tietoturva PDF Tulosta Sähköposti
Kirjoittanut Lea   
Olin viime viikon Lontoossa SANS-instituutin järjestämällä Oracle-tietokantaohjelmiston tietoturvakurssilla. Vaikka tiesin, että SANSin kurssit ovat erinomaisia ja antavat paitsi tietoa, myös käytännön tarkistuslistoja ja työkaluvinkkejä, mietin mielessäni että mitenköhän asiaa riittää jopa kuuden (6) päivän kurssiksi asti. Eihän se tietokannan turvallisuus nyt voi olla NIIN hankala juttu, eihän?

Mutta täytyy sanoa, että asiaa riitti ja nyt ymmärrän huomattavasti paremmin, miksi David Litchfield levitti huolestuneena uutista, että Internetissä on puolisen miljoonaa kaiken kansan saavutettavaa tietokantapalvelinta (ks. http://www.tietokone.fi/uutta/uutinen.asp?news_id=31964), joista runsaat 120 000 oli Oracle-pohjaisia. Yleisesti nettiyhteisön ja blogosfäärin reaktio tähän uutiseen on ollut varsin vähättelevä ("eihän sen portin takana tarvitse oikeasti olla tietokantaa", "no sen tietokannan pääsyoikeudet on hoidettu erikseen" ja sitä rataa). Mutta viime viikon jälkeen ymmärrän, että erityisesti Oraclen osalta tilanne on vakava.

Miksi erityisesti Oracle on ongelma, miksei esim. MySQL? Tietoturvattomuuden ydin piilee kahdessa seikassa. Ensinnäkin siinä, että Oracle on paljon muutakin kuin SQL-tietokanta. Se on ohjelmointialusta, analyysityökalu ja ties mitä. Oraclen tietokannan mukana tulee varsin paljon erilaisia paketteja, lisäkkeitä ja liitännäisiä. Tietokannassa oleviin tietoihin pääsee myös käsiksi ties kuinka montaa eri kautta (SQL*Plus, iSQLPlus, PL/SQL, Java-rajapinnat jne). Oraclesta voi myös päästä käsiksi käyttöjärjestelmätasolle. Kaikki tämä aiheuttaa sen, että Oraclen tietoturvasta huolehtiminen merkitsee jokaisen osakomponentin tietoturvasta huolehtimista, mikä taas ei ole kovinkaan yksinkertaista eikä helppoa. Se näitä asioita opettava kurssi tosiaan kesti kuusi päivää.

Toinen avainseikka riskien suhteen on se, että Oraclen oletusasennus on perinteisesti ollut hyvin turvaton. Ensinnäkin portissa 1521 oleva Oracle listener-prosessi ottaa oletusarvoisesti yhteyksiä vastaan kaikkialta. Toiseksi tietokantaan luodaan asennusvaiheessa PALJON eri komponenttien oletustunnuksia oletussalasanoilla. Nämä oletussalasanat ovat totta kai hyökkääjien tiedossa. Tämä kombinaatio on jo sinänsä vaarallinen. Lisäksi osa palveluista on kaikkien tunnusten käytettävissä, eli PUBLIC-roolilla on ollut hyvinkin paljon mahdollisuuksia päästä käsiksi erilaisiin osiin ja paketteihin. Tämä taas on tarkoittanut sitä, että jos jossain Oraclen liitännäisosassa on tietoturvahaavoittuvuus, on hyvin mahdollista että siihen on ulkopuolelta päässyt helposti käsiksi ja päässyt esim. luomaan omia käyttäjätunnuksia tai saamaan tietokantaylläpitäjän oikeudet. Tai kirjoittamaan käyttöjärjestelmään. Eli purkista onkin tullut 0wned.

Vaikka Oraclen tietoturvatilanne paranee koko ajan (esim. 10gR2 oli tietoturvamielessä parempi kuin aiemmat versiot ja 11g on vieläkin parempi), ongelma ei tule poistumaan kokonaan. Osa tietoturvapiirteistä on sellaisia, että niitä ei voi ottaa käyttöön jos pitää olla taaksepäin yhteensopiva aikaisempien tietokantaversioiden kanssa esim siksi että jokin tietokantaa käyttävä sovellus ei toimikaan uuden kanssa. Lisäksi tietokannan päivittäminen isosta versiosta toiseen ei olekaan ihan pieni operaatio, yhdessä tuntemassani tapauksessa siihen meni usean henkilötyökuukauden projekti, josta generoitui myös asioita muutettaviksi tietokantaa käyttävissä sovelluksissa.

Mutta jos Oraclen tietoturvatilanne on näin huono ja netissä kuitenkin on toista sataa tuhatta avointa Oracle-kantaa, miksi emme ole nähneet Oracle-matoa, Oracle-rootkittejä emmekä leegiota Oracle-aukkoja hyväksi käyttäviä murtautujia? Luulen, että kyse on yksinkertaisesti siitä, että Oracle ei ole vapaasti saatavissa ja se maksaa liikaa satunnaiselle hyökkääjälle. Hyökkääjällä tai exploitin tekijällä on oltava todella hyvä kohdeympäristön tuntemus, eikä sitä saada muutaman tunnin tutustumisella johonkin demoon. Harvalla on kymppitonneja upottaa tietokantalisenssiin vain siksi jotta voisi löytää jonkun uuden reiän. Ja niillä, joilla on pääsy Oracle-kantaan ja sen dokumentteihin, on yleensä jo työpaikka ja näin ollen muuta puuhaa. Mutta se on oikeasti vain ajan kysymys milloin joku warez-palvelimelta Oraclen hakenut alkaa ymmärtää Oraclea niin paljon että alkaa tehtailla exploitteja.

Mikä sitten neuvoksi? Viime viikon suurin opetus oli se, että niinkuin kaikessa muussakin, tietokannan tietoturva on suunniteltava jo alusta lähtien ennen kuin se otetaan käyttöön. Oraclea ei voi jättää oletusasetuksiin, vaan heti asennuksen jälkeen on tehtävä joukko turvallisuuden varmistavia konfigurointeja. Pitkästä listasta voi esimerkikkeinä mainita turhien pakettien ja liitännäisten poisto, käyttämättömien tunnusten lukitus sekä se, että mahdollisuus kirjoittaa käyttöjärjestelmätasolle tai avata HTTP/SMTP-yhteys on poistettava. Näiden itsestään selvältä tuntuvien temppujen lisäksi on yleensä varsin paljon tehtävää esimerkiksi sovelluksen käyttäjien oikeuksien perkaamisessa oikealle tasolle. Esimerkiksi kuka saa luoda Oraclen näkymiä ja synonyymejä, vaikkapa oman näkymän siihen, mitä käyttäjätunnuksia järjestelmässä on. Ei kuulosta kovin vakavalta kunnes muistaa, että rootkitin yksi perusominaisuuksista on sen kyky pimittää murtautujan tekemiä käyttäjätunnuksia...

Jos haluat tarkistuttaa Oracle-tietokantasi turvallisuuden tai haluat apua sen turvaamiseksi, ota yhteys.

Viimeksi päivitetty 05.12.2007 18:07