Ohjelmien käytön turvanäkökulmia

On ilmeistä, että joidenkin ohjelmien ajaminen on vaarallista. Peruskysymyksenä on, uskalletaanko ajaa ollenkaan. Näkökulmia tähän ilmiöön on monia. Pitää selvittää/ymmärtää,

  • mitä kautta ohjelma on asennettu. Sen on voinut asentaa hyökkääjäkin saatuaan koneen aiemmin haltuunsa. Normaalit tavat turvattomimmasta alkaen ovat:
    • julkisen verkon välityksellä -- joko automaattisesti tai "käsin";
    • sisäverkosta ylläpidon etätoimenpiteenä;
    • itse tai ylläpitäjän toimesta paikan päällä fyysiseltä tallenteelta.
  • ajetaanko sellaista koodia, jota ei ole tarkoitus ajaa -- joko niin, ettei huomata, että ohjelma käynnistyy tai käynnistetään väärä ohjelma;
  • mitä ohjelman versiota, missä kunnossa olevaa ohjelmaa ajetaan, millaisin asetuksin;
  • millaisessa ympäristössä ajetaan, erityisesti onko vuorovaikutusta myös lähiverkon tiedostojärjestelmän tai julkisen verkon kanssa;
  • millaista on ohjelmien välinen vuorovaikutus -- sopivatko ne yhteen niin kuin on tarkoitus; lisäksi käynnistääkö yksi jonkin toisen, josta ei tiedetä riittävästi.

Ohjelmat ovat olemassa, jotta niitä ajettaisiin. Pahoja ohjelmia ei pidä ajaa eli ne pitää vain hävittää, jos sellaisia sattuu saamaan. Jos ohjelmaa ajetaan tarkoituksellisesti, sen kirjoittajaa ei siis pidetä pahantahtoisena. Koodin alkuperän ja eheyden varmistamiseen voi käyttää tavalliseen tapaan tiivisteitä ja allekirjoituksia. Niiden avulla ohjelman joltakulta toiselta hankkiva osapuoli voi kasvattaa luottamustaan siihen, että ohjelma toimii oikein. Ainakin hän voi uskoa, että ohjelman tekijätaho on valmis ottamaan edes moraalista vastuuta tuotoksestaan. Ohjelman alkuperästä ja eheydestä vakuuttavia järjestelmiä ovat esimerkiksi Netscapen Object Signing ja Microsoftin Authenticode. (Niissäkin käytetään X.509-sertifikaatteja, joita tähän palveluun tarjoaa VeriSign , vrt. vaikkapa Object Signing FAQ ; ks. myös kuuluisa epäonnistuminen). Ohjelman oikeasta toiminnasta ei voine viime kädessä vakuuttua kuin kirjoittamalla ohjelmansa itse ja silloinkin on yhteensopivuusongelma jäljellä.

Monet ohjelmat sisältävät haavoittuvuuksia, joista kukaan ei tiedä. Lisäksi on mahdotonta tietää, tietääkö joku pahantahtoinen jonkin haavoittuvuuden, jota muut eivät tiedä. Sen vuoksi aukottomaksi pelkästään luultua ohjelmaa ei voi pitää sellaisena, vaan pitää suhtautua epäluuloisesti ja varautua ohjelman mahdollisiin pahoihin vaikutuksiin.

Jos sitten on selviytynyt ohjelmiston kanssa ilman turvaloukkauksia, tulee aika päivittää se uudeksi versioksi. Kysymys on siitä, miten voi luottaa uuden version turvallisuuteen -- onko siinä jotain eroa siihen, että asennettaisiin aivan uusi ohjelma. Eroja on:

  • Ohjelman lähde on yleensä sama kuin aiemman version, ja siis yhtä luotettava. Luottamuksen "ulottamisen" teknisenä perusteena voidaan käyttää yhteistä salaista avainta, jolla eheys tarkistetaan -- erityisesti, jos päivitys ladataan verkosta.
  • Ohjelman ympäristö on jo valmiina -- eikä sitä kautta ole niin todennäköistä syntyä turvattomia konfiguraatioita ym. -- kunhan päivityksen vaatimat muutokset otetaan huomioon.

Monet päivitykset ovat vain paikkauksia ('patch') virheiden ja erityisesti tietoturva-aukkojen korjaamiseksi. Sellaiset voivat tuottaa uusia virheitä ehkä helpommin kuin muut päivitykset, koska ne on laadittu nopeasti, vain ongelmaan keskittyen, puutteellisesti testaten. Jos niiden korjaama tietoturva-aukko ei aiheuta riskiä omassa tietojärjestelmässä, voi olla jopa turvallisempaa olla tekemättä päivitystä. Yleensä kuitenkin yksi ohjelman käyttäjän huolista on päinvastainen -- eli ovatko tuoreimmat paikkaukset varmasti asennettuina. Kriittisissä järjestelmissä taas kaikenlaisten päivitysten toimivuus on varmistettava huolellisesti ennen tuotantokäyttöön ottamista.

-- JukkaKoskinen?

SivuTiedotLaajennettu edit

Vaativuus Perus
Valmius Valmis
Tyyppi Ydin
Luokitus Atk
Mitä Useita
Miltä Useita
Missä Järjestelmä
Kuka Tite-maallikko
Milloin Päivittäin
Miksi Hyvä tapa
Print version |  PDF  | History: r3 < r2 < r1 | 
Topic revision: r3 - 22 Apr 2010 - 11:25:27 - MaijuLehtonen?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback