OWASP CLASP turvallisten web sovellusten takaajana Antti Laulajainen Nixu Oy & OWASP Helsinki 1.10.2008 Public 1
Agenda Mikä ihmeen OWASP? CLASP taustat Rakenne Käyttöönottomalleja Yhteenveto 1.10.2008 Public 2
OWASP esittely Open Web Application Security Project, OWASP, on avoin riippumaton kansainvälinen sovellustietoturva yhteisö, http://www.owasp.org Keskittyy auttamaan organisaatioita hankkimaan, kehittämään ja ylläpitämään turvallisia sovelluksia. Käytännön toiminta on työkalujen, dokumentaation ja keskustelukanavien kehittäminen sekä paikallisten jaostojen toiminta. Helsingin paikallisjaosto pyrkii kokoontumaan säännöllisesti, kokoukset julkaistaan wiki-sivuilla http://www.owasp.org/index.php/helsinki 1.10.2008 Public 3
CLASP taustat 1.10.2008 Public 4
CLASP taustat CLASP, Comprehensive Lightweight Application Security Process OWASP projekti Tavoitteena toteuttaa sovellustietoturva säännönmukaisena, toistettavana ja mitattavana prosessina Pyrkii olemaan ymmärrettävä ja asteittain käyttöönotettava prosessi Sovellettavissa nykyisiin organisaation prosesseihin 1.10.2008 Public 5
CLASP taustat Toteutuksen perusideana on eri roolit ja näille määritellyt tietoturva-aktiviteetit sekä aktiviteetteja tukevat resurssit Hyödyntää osaamistietokantoja, prosessin mukana tulee muutamia CLASP Haavoittuvuusluokittelu Parhaat käytännöt Määritellyt tietoturvapalvelut Korostaa automaattisten työkalujen tai prosessien käyttöä 1.10.2008 Public 6
CLASP parhaat käytännöt Luo tietoisuusohjelma Arvioi sovelluksen tietoturvaa Tunnista tietoturvavaatimukset Ota käyttöön turvallinen sovelluskehitysprosessi Rakenna haavoittuvuuksien hallintakäytännöt Määrittele ja seuraa mittareita Määrittele ja julkaise turvallisen ylläpidon ohjeet 1.10.2008 Public 7
CLASP tietoturvapalvelut Keskeiset tietoturvatavoitteet jotka pitää saavuttaa jokaisessa järjestelmän resurssissa Valtuutus Todennus Luottamuksellisuus Eheys Saatavuus Seurattavuus Kiistämättömyys 1.10.2008 Public 8
CLASP rakenne 1.10.2008 Public 9
CLASP rakenne CLASP prosessi voidaan esittää eri tasoisina näkyminä jotka linkittyvät toisiinsa. Consepts View tarjoaa yleisnäkymän koko prosessiin Role-Based View määrittelee tarvittavat roolit prosessissa Activity-Assessment View arvioi tietoturva-aktiviteetteja joita kehityksen aika tarvitaan Activity-Implementation View ottaa käyttöön tietoturva-aktiviteetit jotka on arvioitu sopiviksi prosessille Vulnerability View luokittelee haavoittuvuudet järjestelmällisesti eri luokkien perusteella Lisäksi tukidokumentaatiot 1.10.2008 Public 10
CLASP roolit ja tehtäviä (Role-Based view) CLASP toimii roolien ja näiden tehtävien avulla Rooli-näkymä määrittelee roolit ja näiden tehtävät Tietoturva-aktiviteetit liitetään rooleihin, ei sovelluksen elinkaaren vaiheeseen Prosessin toimivuuden kannalta olennaista, että roolit tunnetaan ja näiden tehtävät Yksittäinen henkilö voi olla useassa roolissa 1.10.2008 Public 11
CLASP roolit ja tehtäviä (Role-Based view) Projektipäällikkö Moottori prosessin toteutuksen takana Huolehtii tietoisuuskoulutuksista Seuraa mittareita Määrittelijä Määrittelee tietoturvavaatimukset Luo väärinkäyttötapaukset Arkkitehti Tunnistaa ja dokumentoi valittujen teknologioiden tietoturvavaatimukset Auttaa muita ymmärtämään kuinka resurssit kommunikoivat keskenään 1.10.2008 Public 12
CLASP roolit ja tehtäviä (Role-Based view) Suunnittelija Tärkeimpiä rooleja tietoturvan kannalta Valitsee teknologiat jotka täyttävät tietoturvavaatimukset Päättää kuinka havaitut haavoittuvuudet käsitellään Kehittäjä Noudattaa määriteltyjä turvallisen kehityksen vaatimuksia, menettelytapoja ja standardeja Osallistuu tietoturvatietoisuuskoulutukseen Raportoi mahdolliset havainnot tietoturvapuutteista 1.10.2008 Public 13
CLASP roolit ja tehtäviä (Role-Based view) Testaaja Tietoturvatestaus osana muuta testausta Tietoturva on osa laadunvarmistusta! Tietoturvakatselmoija Päättelee tietoturvavaatimusten riittävyyden ja kattavuuden Analysoi suunnitelman riskit Etsii haavoittuvuudet toteutuksesta perustuen poikkeamiin määrityksistä tai vaatimuksista 1.10.2008 Public 14
Tietoturva-aktiviteettien arviointi (Activity-Assessment view) CLASP määrittelee 24 erilaista tietoturvaaktiviteettia joita voidaan sisällyttää kehitysprosessiin Arvioinnilla voidaan tunnistaa projektikohtaisesti mitä aktiviteettejä on tarpeen toteuttaa Arvioinnin apuna ovat valmiit lomakkeet Lomakkeilla voi arvioida aktiviteettien: Tarpeellisuutta Riskejä jos aktiviteettia ei toteuteta Käyttöönoton kustannuksia Roolit jotka toteuttavat aktiviteetit 1.10.2008 Public 15
Esimerkit arviointilomakkeista CLASP Activity Institute security awareness program Monitor security metrics Specify operational environment Identify global security policy Identify resources and trust boundaries Identify user roles and resource capabilities Document security-relevant requirements Detail misuse cases Identify attack surface Apply security principles to design Research and assess security posture of technology solutions Annotate class designs with security properties Specify database security configuration Related Project Role Project Manager Project Manager Owner: Requirements Specifier Key Contributor: Architect Requirements Specifier Owner: Architect Key Contributor: Requirements Speci-fier Owner: Architect Key Contributor: Requirements Speci-fier Owner: Requirements Specifier Key Contributor: Architect Owner: Requirements Specifier Key Contributor: Stakeholder Designer Designer Owner: Designer Key Contributor: Component Vendor Designer Database Designer Institute security awareness program Purpose: Ensure project members consider security to be an important project goal through training and account-ability. Owner: Key contributors: Applicability: Relative impact: Risks in omission: Activity frequency: Approximate man hours: Ensure project members have enough exposure to security to deal with it effectively. Project Manager All projects Very high Ongoing Other activities promoting more secure software are less likely to be applied effectively. Accountability for mistakes is not reasonable. 160 hours for instituting programs. 4 hours up-front per person. 1 hour per month per person for maintenance. 1.10.2008 Public 16
Aktiviteettien käyttöönotto (Activity-Implementation view) Määrittelee tietoturva-aktiviteeteille tavoitteen ja tarkentaa tavoitteita, esimerkiksi: Kouluta kaikki projektin jäsenet Nimitä projektille tietoturvavastaava Kuvaa yksityiskohtaisesti kuinka tehtävät tulisi suorittaa tai miten saavuttaa asetetut tavoitteet Tarkentaa kuinka hyödyntää resursseja kuten esimerkiksi: Haavoittuvuuskirjastoa arvioimaan kehitysprosessin turvallisuutta Tietoturvapalveluja resursseja uhkia analysoimaan (uhkamallinnus) 1.10.2008 Public 17
Aktiviteettien käyttöönotto, esimerkki Perform security analysis of system requirements and design (threat modeling) Develop an understanding of the system Determine and validate securityrelevant assumptions Review non-security requirements Assess completeness of security requirements Identify threats on assets/capabilities Determine level of risk Identify compensating controls Evaluate findings 1.10.2008 Public 18
Haavoittuvuuksien luokittelu ja hallinta (Vulnerability view) Pyrkii luokittelemaan havaitut ongelmat, virheet järjestelmällisesti Lähdekoodin ongelmat eivät välttämättä itse muodosta tietoturvahaavoittuvuutta; usein kyseessä on yhdistelmä eri ongelmista jotka aiheuttavat haavoittuvuuksia Luokittelun avulla voidaan tunnistaa ongelmat ja näiden vaikutukset eli johtaa ne mahdollisiksi haavoittuvuuksiksi Luokittelun apuna on tietokanta jossa mukana 104 erilaista ongelmaa 1.10.2008 Public 19
Haavoittuvuuksien luokittelu Ongelmatyypit: Perussyyt ongelmiin Esimerkiksi puskuriylivuoto Luokat: Skaala ja tyyppivirheet Ympäristötekijöiden ongelmat Synkronointi ja ajoitusongelmat Protokollavirheet Yleiset logiikkavirheet Altistumisaika Sovelluksen elinkaaren vaihe Seuraukset Perustietoturvapalvelu jota haavoittuvuus koskee Alusta Käyttöjärjestelmä, ohjelmointikieli Hyökkäyksen resurssit Riskin arviointi Vakavuus Todennäköisyys Välttäminen & pienennys Lisätiedot 1.10.2008 Public 20
Haavoittuvuuskäyttötapaukset Kuvaa esimerkkien avulla miten sovellus voi olla haavoittuvainen Yhdistää yleisnäkymän haavoittuvuusluokitteluun 1.10.2008 Public 21
CLASP resurssidokumentaatiot Sovellustietoturvan pääperiaatteet ja esimerkit Keskeiset tietoturvapalvelut Esimerkit koodausperiaatteista lomakkeina Järjestelmäarviointilomake pohjia Esimerkit CLASPin käyttöönotosta Prosessien kehityssuunnitelman tukidokumentti Prosessikehitysryhmän kokoamisen tukidokumentti Tietoturvasanasto 1.10.2008 Public 22
CLASP Käyttöönottomalleja 1.10.2008 Public 23
CLASPin osien käyttöesimerkki 1.10.2008 Public 24
Perinteinen käyttöönottomalli Pieni vaikutus käynnissä oleviin projekteihin tai toimintatapoihin 12 kohdan ohjelma Mukana vain keskeiset tietoturva- aktiviteetit Avainkohdat: Tietoisuudenkohotus Turvallisuuden arviointi (uhka-analyysi) Lähdekoodin analyysi 1.10.2008 Public 25
Perinteinen käyttöönottomalli 1.10.2008 Public 26
Puhtaalta pöydältä - malli Suositus uuden sovelluksen kehitykseen ja iteratiivisiin menetelmiin Pyrkii holistiseen lähestymiseen sovellustietoturvassa 20 kohdan ohjelma Avainkohdat: Tietoisuusohjelma Mittarit Tietoturvaan liittyvät suunnittelu Tietoturvaperiaatteet Uhkamallinnus Lähdekoodin analyysi Tietoturvan arviointi 1.10.2008 Public 27
Puhtaalta pöydältä - malli 1.10.2008 Public 28
Yhteenveto 1.10.2008 Public 29
CLASP yhteenveto CLASP on roolipohjainen prosessi turvalliseen ohjelmistokehitykseen joka voidaan ottaa käyttöön iteratiivisesti CLASP ei ole oikotie onneen Dokumentaatio on ilmaista Käyttöönotto vaatii kuitenkin panostuksia; aikaa ja rahaa Panostus palkitaan kuitenkin laadukkaammilla sovelluksilla joita käyttö on turvallista ja haluttua 1.10.2008 Public 30
Lisätietoja OWASP Linkit http://www.owasp.org/index.php/category:owasp_clas P_Project http://www.owasp.org http://www.owasp.org/index.php/helsinki Sovellustietoturva http://blogs.msdn.com/sdl/default.aspx http://www.ibm.com/developerworks/spaces/appsec https://buildsecurityin.us-cert.gov/daisy/bsi/home.html 1.10.2008 Public 31