Yleiset tietoturvaongelmat ohjelmissa

  • Virheet itse ohjelmassa
  • Ohjelman väärinkäyttö
  • Yhteensopivuus ongelmat
    • Yhteensopiva minkä kanssa?
    • Yhteensopiva millä ehdoilla?
    • Eri versioiden yhteensopivuus
  • Voidaanko luottaa että ohjelman tekijä on rehellinen?
    • Avoin lähdekoodi vs. suljettu ratkaisu

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

  • 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ä
  • 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ä

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

  • Itsenäisiä ohjelmia
  • Kopioivat itseään verkon yli muihin koneisiin ja näin levittäytyvät joka puolelle
    • Hyödyntävät leviämisessä tunnettuja aukkoja eri ohjelmistoissa
  • Robert Morrisin mato vuonna 1988 kaatoi 6000 konetta (10% internetissä silloin olleista koneista)
  • Madot kuljettavat usein mukanaan myös viruksia
  • Sähköpostimadot hyödyntävät ihmisten heikkouksia
    • Sähköpostin liitetiedostona
    • Ihmisten hyväuskoisuus ja uteliaisuus kohteena
      • ILOVEYOU, Kournikova, PrettyPark…
    • Ajettaessa etsivät yleensä koneelta sähköposti osoitteita, joihin lähettävät itsensä ja mahdollisesti jotain tiedostoja koneelta
    • Usein sisältävät oman SMTP koodin

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
    • 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. “war-dialer”
    • Luvaton etähallintaohjelmisto
    • Verkkoselain, joka turvattua yhteyttä varten tarkoituksella generoi huonon yhteysavaimen

Rootkit

  • Järjestelmään ytimeen piilotettu joukko ohjelmia, joiden avulla hyökkääjä pitää itsellään oikeuksia
    • Keräävät tietoa kaikesta järjestelmän toiminnasta
    • Muokkaavat järjestelmän ja ohjelmien toimintaa.
  • Vaikeita havaita
  • Poistaminen vaatii usein uudelleen asetuksen
    • Mihinkään järjestelmässä ei voi oikein luottaa
  • Tulevaisuudessa yleistyvät?

Muut

  • 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
    • 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
    • Nykyään lähes kaikki haittaohjelmat yhdistelevät eri ominaisuuksia

Antivirus ohjelmat

  • 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.

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ä
    • 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
    • Muokataan keksin tietoja, esiinnytään jonain toisena.
  • Selaimissa on erilaisia keksien hallintamekanismeja
  • Automaattiset päivitykset
    • Voivat siirtää tietoa päivityspalvelimelle päivitys operaation helpottamiseksi
      • Laitekokoonpano
      • ohjelmisto versio
      • Kulkeeko tietoa muualle?
      • Käytetäänkö tietoa muuhun tarkoitukseen
    • Millä varmistutaan että päivitys tulee oikeasta osoitteesta?
      • Onko riski suurempi kuin jos käyttäjä itse tekee päivityksen?
  • Tekstinkäsittelyohjelmien aiheuttamat vuodot
    • Dokumenttien tunnistetietojen lisäys
    • Muutoshistoria…
    • Tilapäistiedostot
  • Vakoojaohjelmat, Spyware
    • Nousseet vakavaksi ongelmaksi viimevuosina
    • Keräävät mahdollisimman paljon tietoa käytäjistä…. jota hyödynnetään usein mainostuksesta (adware)
    • Asentuvat usein hyödyllisten ohjelmien osana
    • Mainitaan ohjelman käyttölisenssissä ikävällä lakitekstillä
    • Voivat hyödyntää rookittejä piilottaakseen itsensä

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.
  • 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ä

Mobiilikoodi

  • Siirrettävä koodi, verkkoselaimen ajama koodi
  • Onko saatu ohjelma turvallinen?
    • Voiko lähteeseen luottaa
    • Mitä jos ohjelma onkin ilkeämileinen, kuinka reagoida?

Selaimessa ajettava koodi

  • 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öä
  • 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?
  • Crossite scripting (XSS)
    • Saadaan palvelin ajamaan muualta ladattavaa koodia käyttäjn huomaamatta
    • Hyödyntää käyttäjän luottamusta palveluun tai sähköpostiviestiin.
    • Käyttäjän ohjelma saadaan suorittamaan muualta tulevaa koodia
      • Käytetään esimerkiksi haittaohjelmien levityksessä
    • Hyödynnetään esim
      • Phishingissä (tietojen khalastelussa)
      • Haittaohjelmien levityksessä
  • Cross-zone scripting
    • Tapa kiertää ohjelmallisia rajoituksia
    • Alue (Zone) määrittää mitä oikeuksia ohjelmalla on
      • Ohjelman alkuperä /sijainti määrittää mille alueelle ohjelma kuuluu
    • Hyödyntää XSS:ää, verkkoselaimen haavoittuvuuksia tai
  • Java appletit
    • Ohjelmien toiminta rajoitettu tietylle alueelle (oma hiekkalaatikko), joka on totetutettu 3:lla mekanismilla

1. Byte code verifier

  • Tarkistaa java koodin ennen ajoa
  • 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.

Helppokäyttöisyyden tuomat ongelmat

  • 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.
      • Kännykkävirukset
  • Ubiquitous computing tuo mukanaan uusia riskejä

Palvelinohjelmistoon kohdistuvat uhat

  • Palvelimen kaataminen
    • DoS
  • Palvelimen tukkiminen
    • DDos
  • 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
  • Syötteenä ajettavaa skripti koodia
  • Buffer overflow
  • 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.
  • Kenellä vastuu, kuka korjaa
    • Yleensä ohjelmistot tuottaneen yrityksen tulee korjata virheet.
Last modified: 2013/07/01 14:50