010627000 Tietoturvan Perusteet: Ohjelmistoturvallisuus Pekka Jäppinen 7. marraskuuta 2002 Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002
Yleiset tietoturva ongelmat ohjelmissa Virheet itse ohjelmassa Ohjelman väärinkäyttö Yhteensopivuus ongelmat Yhteensopiva minkä kanssa? Yhteensopiva millä ehdoilla? Voidaanko luottaa että ohjelman tekijä on rehellinen? Avoin lähdekoodi Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 1
Ilkeämieliset ohjelmat (malicious software, malware) Itsenäisiä ohjelmia tai ohjelmanosia Koostuvat yleensä kahdesta osiosta 1. Leviämiskoodi Varmistaa että ohjelma siirtyy koneelta toiselle 2. Toimintakoodi Ylimääräinen viesti ruudulle Jakaa tietoa salaa muille Tuhoaa tietoa Käytännössä kaikkea mitä käyttäjäkin voi ohjelmallisesti tehdä. Virukset Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 2
Tarttuu toisiin ohjelmiin ja muokkaa niiden toimintaa Lisää oman koodin terveeseen ohjelmaan Pitää aktivoida ajamalla ennenkuin alkaa toimia Levyllä oleva virus ei itsestään tee mitään Leviää tartuttamiensa ohjelmien välityksellä Leviäminen geometrisella vauhdilla Jako toimintapaikan mukaan 1. Hetkellinen virus (transient virus) Toimii vain ohjelman ajon aikana 2. Asuva virus (resident virus) Siirtää itsensä koneen muistiin ja toimii sieltä käsin Ohjelmistovirukset 1. Liitetyt viruksen (appended virus) Liittää itsensä isäntäohjelmaan Yksinkertaisimmillaan vain kopioi itsensä toisen ohjelman alkuun ennen ensimmäsitä suoritettavaa käskyä Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 3
Ajettaessa ohjelma käynnistyy ensin virus ja vasta sitten itse ohjelma Ei tarvita tietoa itse isäntäohjelmasta Isäntäohjelma toimii vain kantajana Tartunta tunnistettavissa isäntäohjelman pituuden kasvamisesta 2. Ympäröivät virukset Toimivat ennen ohjelman alkua ja uudestaan ohjelman päättyessä Voivat piilottaa jälkensä 3. Sopeutuneet virukset Ovat mukautuneet osaksi isäntäohjelmaa Isäntäohjelman rakenne pitää tuntea 4. Vaihdokki virukset Siirtävät itsensä toisen ohjelman tilalle Muut virukset 1. Boot-sektori virukset Asettuvat koneen bootsketorille ja näin ollen aktivoituvat koneen käynnistyessä Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 4
2. Muisti-asukki virukset (memory resident viruses) Asettuvat muistiin jäävän ns. TSR koodiin, esimerkiksi näppäimistön painallusten tunnistus koodi 3. Kirjastovirukset Sijaitsevat jaetuissa ohjelma kirjastoissa, joita useat ohjelmat käyttävät 4. Makrovirukset Asettuvat ajettaviin makroihin Ominaisuuksia Vaikea havaita Vaikea tuhota ja deaktivoida Leviää laajalti Helppo luoda Voi uudelleen tartuttaa Laite ja käyttöjärjestelmä riippumaton Madot Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 5
Itsenäisiä ohjelmia Kopioivat itseään verkon yli muihin koneisiin ja näin levittäytyvät joka puolelle Robert Morrisin mato vuonna 1988 kaatoi 6000 konetta (10% internetissä silloin olleista koneista) Sähköposti madot yleisimpiä Sähköpostin liitetiedostona Käyttävät yleensä hyväkseen ihmisten hyväuskoisuutta ja uteliaisuuta ILOVEYOU, Kournikova, PrettyPark... Ajettaessa etsivät yleensä koneelta sähköposti osoitteita, joihin lähettävät itsensä ja mahdollisesti jotain tiedostoja koneelta Troijalaiset, Troijan hevoset (Trojan Horses) Idea sama kuin alkuperäisessä Kreikkalaisten tekemässä hevosessa Ohjelma, joka tekee normaalin toimintansa lisäksi jotain muuta josta ei kerro käyttäjälle Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 6
Esimerkiksi login skripti, joka toimii normaalin sisäänkirjautumis ohjelman tapaan, mutta samalla kerää käyttäjien tunnukset ja salasanat ja postittaa ne skriptin tekijälle Java ohjelma, joka katkaisee modeemi yhteyden ja ottaa uuden yhteyden moldovassa olevaan palvelimeen. Verkkoselain, joka turvattua yhteyttä varten tarkoituksella generoi huonon yhteysavaimen Salamihyökkäys Vetää pieniä siivuja välistä esim rahan siirrossa Esim pyöristys huijaus. Salaovi Dokumentoimaton ominaisuus, jonka kautta ohjelmantekijä voi saada ylimääräisiä oikeuksia Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 7
Joskus tarkoituksella jätetty esimerkiksi huoltotöitä varten Looginen pommi Kuten troijalainen, mutta joku muu asentaa ohjelman koneellesi, kun troijalaisessa asetat itse ohjelman koneeseesi, luullen sen tekevän jotain hyvää. Aktivoituu jostain tietystä tapahtumasta Esim. työntekijän erottamisen jälkeen Aikapommi aktivoituu tiettynä aikana Usein osa virusta Yhdistelmät Yhdistävät eri tekniikoita maksimi tuhon saamiseksi Antivirus ohjelmat Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 8
Etsivät virusten, matojen yms. sormenjälkiä Uusia viruksia päivitetään tietokantaan aktiivisesti Ohjelman virustietokantaa tulee päivittää aktiivisesti Uusi virus tunnistetaan vasta, kun ohjelman tekijät sen tapaavat ja lisäävät sen sormenjäljet 10 miljoonaa tartuntaa tunneissa -> Päivitys voi tulla myöhässä Ennakointi vaikeaa, usein mahdotonta Hyvä lisäturva, ei pidä kuitenkaan tuudittautua turvallisuuden tunteeseen. Käyttäjää helpottavia toimintoja voidaan käyttää väärin Käytettävyys vs turvallisuus Makrot helpottavat toimintaa, mutta samalla niiden avulla voidaan rakentaa viruksia Oheislaitteiden ohjelmoitavuutta voidaan käyttää väärin. Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 9
Tietoa vuotavat ohjelmat Lähettävät tietoa käyttäjästä muualle Voivat myös olla hyödyllisiä Rajanveto vaikeaa, mikä sallitaan mikä ei Keksit, evästeet (cookies) HTTP palvelin ei tunnista käyttäjää napsautuksesta toiseen Mahdollistavat tilallisen verkkoselauksen Oikealle käyttäjälle oikea ostoskärry Palvelin antaa selaimelle keksin, joka pitää sisällään tietoa käyttäjästä Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 10
Palvelin kysyy keksin olemassa oloa ennenkuin lähettää verkkosivun, muokaten sivun käyttäjä kohtaiseksi Hyödyllisiä Elin-ikä voidaan määritellä Eivät voi kerätä tietoa koneelta, ajaa ohjelmia tai muuta aktiivista tuhoa Voidaan käyttää tiedon keräämiseen ja henkilötietokantojen luomiseen Doubleclick maksaa mainostilasta eri verkkosivuille. Keksien avulla se seuraa käyttäjän liikkumista sivuilla, joissa sen laittamia mainoksia on ja sen mukaan määrittelee mitä mainoksia antaa. Jos kerrot sähköpostiosoitteesi tai muuta tietoa jollekin sivulle, jossa on DC:n asettamia mainoksia, voi kyseinen paikka myydä DC:lle sähköposti osoitteesi Sähköpostin liitteenä voi olla keksi joka pitää sisällään sähköposti osoitteen. (mikäli sähköpostiohjelma tukee html viestejä) Myöhemmin suratessa voidaan suraaja, ja osoite liittää yhteen. Keksin myrkyttäminen Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 11
Muokataan keksin tietoja, esiinnytään jonain toisena. Selaimissa on erilaisia keksien hallintamekanismeja Automaattiset päivitykset Ilmoittavat tietoa käyttäjän laitekokoonpanosta päivityksen helpottamiseksi Kulkeeko tietoa muualle? Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 12
Modulaariset ohjelmat Ohjelmat koostuvat monesta erilaiset moduulista Dynaamiset kirjastot, plug-init, Onko moduuleissa virheitä? Onko moduulia käytetty oikein toteutetussa ohjelmassa? Mitä tapahtuu kun eri moduuleja käytetään yhdessä Kuinka hyvin mikäkin moduuli on testattu Kaikkien moduulien yhteistoimintaa on vaikea testata. Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 13
Mitä tapahtuu ohjelman toiminnalle, kun moduli vaihdetaan uuteen? Voiko vanha ja uusi versio moduulista olla käytössä yhtäaikaa? Automaattinen päivitys Sekä luottamus että yhteys muodostetaan oikeaan paikkaan ja päivitettävät moduulit ovat ehjiä Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 14
Mobiilikoodi Siirrettävä koodi, verkkoselaimen ajama koodi Onko saatu ohjelma turvallinen? Voiko lähteeseen luottaa Mitä jos ohjelma onkin ilkeämileinen, kuinka reagoida? JavaScript Netscapen kehittämä skripti kieli Ei voi suoraan tehdä tuhoa (javaskriptin bugit korjattua) Voidaan käyttää aiheuttamaan harmia (miljoonia aukeavia ikkunoita) Voidaan käyttää huijaamaan käyttäjä tekemään jotain hölmöä Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 15
ActiveX Kaikessa koodissa allekirjoitus, jonka verkkoselain näyttää kysyessään käyttäjältä ajetaanko ohjelma. Mikäli käyttäjä hyväksyy koodin ajon, voi ohjelma tehdä mitä haluaa. Ohjelman tekijän tietäminen laiha lohtu jos levyllä ollut arvokas tieto on formatoitu. Ketä syyttää jos kaksi activex pluginia tekee tuhoa ollessaan aktiivisina yhtäaikaa? Java appletit Ohjelmien toiminta rajoitettu tietylle alueelle (oma hiekkalaatikko), joka on totetutettu 3:lla mekanismilla 1. Byte code verier Tarkistaa java koodin ennen ajoa Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 16
Varmistaa että koodi on oikeaa eikä siinä ole tunnettuja virheitä 2. Class loader Päättää kuinka ja milloin komponentti saa liittää itsensä java ympäristöön Varmistaa ettei appletti korvaa mitään tärkeää toimintoa, joka on jo käytössä 3. Security manager Toimii konsulttina, joka päättää mitä eri appletit saavat tehdä (verkosta ladatulla appletilla on vähemmän oikeuksia kuin itse java paketin mukana tulleilla Plug-In PDF lukija, FLASH pätkien näyttäjä Luotetaan automaattisesti Ei mitään turvamekanismeja, asennettaessa on luotettava, että ohjelma tekee mitä sanoo. Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 17
Palvelinohjelmistoon kohdistuvat uhat Palvelimen kaataminen DoS Seitti skriptit (web scripts, palvelimen skriptit) Palvelimella olevat ohjelmat jotka tekevät erilaisia toimintoja käyttäjän syötteen mukaan. Syötteet kulkevat ohjelmille CGI:n (Common Gateway Interface) kautta CGI skripti on potentiaalinen turvallisuusaukko Virheitä skripteissä on käytetty paljon hyväkseen Serveriltä on ladattu tiedostoja, katseltu tietokantoja, luettu koneen logeja, myyty toisen osakkeita Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 18
Syötteenä ajettavaa skripti koodia Buer overow Ohjelmiston sisäisiä cgi-skriptille lähettimiä muuttujia muokkamalla voi muuttaa kaupan olevien tuotteiden hintaa Usein kirjoitettu nopeasti Jaetaan tutuille ja tuntemattomille Palvelin ei kontrolloi skriptien toimintaa Kolmannen osapuolen ohjelmistojen viat Tietokantaohjelmisto, kauppakärry jne. Ohjelmistot tuottaneen yrityksen tulee korjata virheet Pekka Jäppinen, Lappeenranta University of Technology: 7. marraskuuta 2002 19