You are here: TUTWiki>Tietoturva>Sisällysluettelo?>PerussääntöjäOhjelmoijille (revision 1)

Perussääntöjä ohjelmoijille

Ohjelmoijan tietoturvasääntöjä on hyvinkin yksityiskohtaisia? . Otetaan tässä vain esimerkkinä yksi tiivis luettelo, Microsoftin (vuoteen 2005 asti) julkaisema "Suojaa koodisi kymmenen suosituimman suojausvihjeen avulla, jotka jokaisen kehittäjän on tiedettävä". Varsinaiset ohjeet ovat melko yksityiskohtaiset ja perustuvat kieliin C++, C# ja SQL. Tähän on kopioitu vain otsikot ja tulkittu niitä tiiviisti. Vaikka sivusto löytyykin enää arkistoista, ohjeet antavat yhä hyvän käsityksen siitä, mitä erityisesti turvallinen seittiohjelmointi edellyttää.

  1. Käyttäjän syötteeseen luottaminen on turmioksi. Tämä on yleinen muistutus jota seuraavat kaksi valaisevat eri tavoin.
  2. Suojaudu puskurin ylivuotoja vastaan. Koodissa pitää siis yksinkertaisesti tarkistaa, ettei tietyn mittaiseen muistialueeseen kirjoiteta sitä pitempää dataa.
  3. Estä sivuston komentosarjakäyttö. Ajattelemattomasti rakennettu koodi voi mahdollistaa dataksi tarkoitetun syötteen tulemisen ajetuksi. Jos syötteen jostain syystä on tarpeen päästä tällaiseen kontekstiin, se pitää siis suodattaa kontrollimerkeistä yms. (vrt. seittisovellusten top-10 -ongelma #6? )
  4. Älä edellytä järjestelmänvalvojan (system administrator, sa) oikeuksia. Tämä on vähimpien oikeuksien periaatteen sovellus, kuten myös kohta 7.
  5. Jätä salauskoodin tuottaminen ammattilaisille. Ei tarvinne selitystä.
  6. Vähennä hyökkäyskohteita. Turhien ominaisuuksien (esim.palvelujen) karsiminen ja yksinkertaisuus ovat jälleen myös yleinen turvaperiaate. Tässä asiaa sovelletaan siten, että vähän käytetyt piirteet voivat olla mukana, mutta ne pitää erikseen aktivoida.
  7. Käytä pienimpiä tarvittavia käyttöoikeuksia. Tämä ei ole sama asia kuin kohta 4. Vaatimus on hyvin yksityiskohtainen: mikä tahansa oikeus on annettava mahdollisimman pienelle määrälle koodia mahdollisimman lyhyeksi ajaksi.
  8. Kiinnitä huomiota virhetiloihin. Ohjelman pitää käsitellä kaikki virheet, eli tilanteet joissa jonkin funktion, esim. muistinvarauksen, suoritus tuottaa tarkoitetusta tai normaalista poikkeavan tuloksen. Käsittelyn täytyy säilyttää järjestelmä turvallisessa tilassa.
  9. Tekeytyminen ei ole turvallista. Tämä vaikuttaa ensin hyvin spesifiseltä ohjeelta sillä se koskee Microsoft-mekanismia prosessien (tai säikeiden) "tekeytymisestä" eli toimimisesta asiakkaan eikä palvelimen "suojauskontekstissa". Abstraktimmin tarkasteltuna ilmiö on varsin samantapainen kuin Unixin suid- ja sgid-ohjelmissa. 10. Kirjoita sovelluksia, joita pystyvät käyttämään muutkin kuin järjestelmänvalvojat. Käyttäjillä tarkoitetaan tässä ensi sijassa muita ohjelmoijia, jotka kutsuvat sinun tekemiäsi ohjelmia. Jos niitä ei voi käyttää vähemmin valtuuksin, joudutaan rikkomaan sääntöä 4 ja 7. Tässä on siis kolmas sovellus samasta vähimpien oikeuksien yleisestä periaatteesta, joka tunnettiin jo 1970-luvulla . Tämän kohdan voisi ajatella soveltavan myös kyseisten muinaisperiaatteiden viimeistä kohtaa, joka ottaa kantaa siihen miten käyttäjät suhtautuvat (ja tässä joutuvat suhtautumaan) mekanismeihin.

-- JukkaKoskinen?

SivuTiedotLaajennettu edit

Vaativuus Perus
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Tite-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r3 < r2 < r1 | 
Topic revision: r1 - 07 Mar 2010 - 19:13:56 - 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