Presentation laddar. Vänta.

Presentation laddar. Vänta.

Mattias Bergling, OWASP Stockholm/Nasdaq

Liknande presentationer


En presentation över ämnet: "Mattias Bergling, OWASP Stockholm/Nasdaq"— Presentationens avskrift:

1 Mattias Bergling, OWASP Stockholm/Nasdaq
OWASP Intro & OWASP Top 10 Mattias Bergling, OWASP Stockholm/Nasdaq

2 Agenda OWASP OWASP Sweden OWASP projekt OWASP Top10

3 Mattias Bergling Jobbat med IT-säkerhet i ~15 år
Största delen av tiden på Inspect it >> 2Secure Numera applikationssäkerhet på Nasdaq Startade OWASP Sweden tillsammans med John Wilander 2008 Var med och anordnade OWASP AppSec EU 2010 För närvarande i ledningsgruppen för OWASP Stockholm

4 OWASP Startades 2001 Global icke vinstdrivande organisation (501(c)(3)) Fokus på att förbättra säkerheten i mjukvara. ~200 lokala chapters i ~100 länder. Årlig konferens per världsdel

5 OWASP Sweden Startades 2008 - https://www.owasp.org/index.php/Sweden
John Wilander & Mattias Bergling Ledningsgrupp 3-6 personer Anordnade AppSec EU 2010 2-6 seminariekvällar per år

6 OWASP Sweden Startades 2008 - https://www.owasp.org/index.php/Sweden
John Wilander & Mattias Bergling Ledningsgrupp 3-6 personer Anordnade AppSec EU 2010 2-6 seminariekvällar per år Göteborg och Linköping startades 2011 respektive 2013 Sweden >> Stockholm Umeå 2015 Anmälan till mailinglista/mailinglistor

7 OWASP Sweden SQL Injection, Web Scarab Samy XSS attack on MySpace
Security in the Open Source Process OWASP AppSec Europe Conference 2010 PCI DSS XSS & CSRF Code Analysis and Review OWASP Top (rc1) The Big Protocols Community Hack Samy XSS attack on MySpace HTTP-säkerhet "Security impact of SVG" + ""ECMA Script 5, a frozen DOM OWASP Sweden SSL Day Web Application Access Control Design Excellence Secure Mashups, IT Sec in Cars, Buffer Overflow Prevention, "How We Won the Deutche Post Security Cup", and Multi-Step, Semi-Blind CSRF JavaScript + RESTful Security

8 OWASP Projekt 141 projekt

9 OWASP Projekt 12 flaggskepp Verktyg Zed Attack Proxy
Web Testing Environment Project OWTF Dependency Check Kod ModSecurity Core Rule Set Project CSRFGuard Project AppSensor Project Dokumentation Application Security Verification Standard Project (ASVS) Software Assurance Maturity Model (SAMM) AppSensor Project Top Ten Project Testing Guide Project 9

10 OWASP Projekt OWASP Testing guide
Version 4 släpptes nyligen Täcker testning av webapplikationer Introduction and Objectives Configuration and Deployment Management Testing Identity Management Testing Authentication Testing Authorization Testing Session Management Testing Input Validation Testing Testing for Error Handling Testing for weak Cryptography Business Logic Testing Client Side Testing OWASP Top 10, som listar de vanligaste förekommande webapplikationsbristerna vägt mot teknisk konsekvens. Uppdateras vanligtvis vartannat år. - OWASP Testing guide, som mer detaljerat går igenom de olika webappliaktionsbristerna med beskrivningar hur man identifierar dem samt åtgärdar dem. Version 4 släpptes precis. - OWASP ZAP, proxy att använda för säkerhetstester av webapplikationer - OWASP Cheat Sheet, samling kortfattade beskrivningar av olika ämnen - både för testare och utvecklare - OWASP Coding Guide, ursprungsprojektet som bidrog till OWASPs framgång. Är dock under uppdatering då den senaste versionen inte var fulltäckande

11 OWASP Testing Guide OWASP Top 10, som listar de vanligaste förekommande webapplikationsbristerna vägt mot teknisk konsekvens. Uppdateras vanligtvis vartannat år. - OWASP Testing guide, som mer detaljerat går igenom de olika webappliaktionsbristerna med beskrivningar hur man identifierar dem samt åtgärdar dem. Version 4 släpptes precis. - OWASP ZAP, proxy att använda för säkerhetstester av webapplikationer - OWASP Cheat Sheet, samling kortfattade beskrivningar av olika ämnen - både för testare och utvecklare - OWASP Coding Guide, ursprungsprojektet som bidrog till OWASPs framgång. Är dock under uppdatering då den senaste versionen inte var fulltäckande 11

12 OWASP Projekt OWASP ZAP Proxy och attack-/testverktyg
Intercepting proxy Spider Fuzzer Active/passive scanner Forced browser WebSockets, REST, Ajax ... OWASP Top 10, som listar de vanligaste förekommande webapplikationsbristerna vägt mot teknisk konsekvens. Uppdateras vanligtvis vartannat år. - OWASP Testing guide, som mer detaljerat går igenom de olika webappliaktionsbristerna med beskrivningar hur man identifierar dem samt åtgärdar dem. Version 4 släpptes precis. - OWASP ZAP, proxy att använda för säkerhetstester av webapplikationer - OWASP Cheat Sheet, samling kortfattade beskrivningar av olika ämnen - både för testare och utvecklare - OWASP Coding Guide, ursprungsprojektet som bidrog till OWASPs framgång. Är dock under uppdatering då den senaste versionen inte var fulltäckande

13 OWASP Projekt OWASP Cheat Sheet
Samling kortfattade beskrivningar av olika ämnen Både för testare och utvecklare OWASP Top 10, som listar de vanligaste förekommande webapplikationsbristerna vägt mot teknisk konsekvens. Uppdateras vanligtvis vartannat år. - OWASP Testing guide, som mer detaljerat går igenom de olika webappliaktionsbristerna med beskrivningar hur man identifierar dem samt åtgärdar dem. Version 4 släpptes precis. - OWASP ZAP, proxy att använda för säkerhetstester av webapplikationer - OWASP Cheat Sheet, samling kortfattade beskrivningar av olika ämnen - både för testare och utvecklare - OWASP Coding Guide, ursprungsprojektet som bidrog till OWASPs framgång. Är dock under uppdatering då den senaste versionen inte var fulltäckande

14 OWASP Cheat Sheet OWASP Top 10, som listar de vanligaste förekommande webapplikationsbristerna vägt mot teknisk konsekvens. Uppdateras vanligtvis vartannat år. - OWASP Testing guide, som mer detaljerat går igenom de olika webappliaktionsbristerna med beskrivningar hur man identifierar dem samt åtgärdar dem. Version 4 släpptes precis. - OWASP ZAP, proxy att använda för säkerhetstester av webapplikationer - OWASP Cheat Sheet, samling kortfattade beskrivningar av olika ämnen - både för testare och utvecklare - OWASP Coding Guide, ursprungsprojektet som bidrog till OWASPs framgång. Är dock under uppdatering då den senaste versionen inte var fulltäckande 14

15 OWASP Projekt OWASP Developer Guide
Ursprungsprojektet som bidrog till OWASPs framgång. Är dock under uppdatering då den senaste versionen inte var fulltäckande. OWASP Top 10, som listar de vanligaste förekommande webapplikationsbristerna vägt mot teknisk konsekvens. Uppdateras vanligtvis vartannat år. - OWASP Testing guide, som mer detaljerat går igenom de olika webappliaktionsbristerna med beskrivningar hur man identifierar dem samt åtgärdar dem. Version 4 släpptes precis. - OWASP ZAP, proxy att använda för säkerhetstester av webapplikationer - OWASP Cheat Sheet, samling kortfattade beskrivningar av olika ämnen - både för testare och utvecklare - OWASP Coding Guide, ursprungsprojektet som bidrog till OWASPs framgång. Är dock under uppdatering då den senaste versionen inte var fulltäckande

16 OWASP Projekt OWASP ASVS (Application Security Verification Standard)
Krav på applikationer för att uppfylla olika säkerhetsnivåer Level 1: Opportunistic Level 2: Standard Level 3: Advanced Kravområden V2. Authentication V3. Session Management V4. Access Control V5. Malicious Input Handling V7. Cryptography at Rest V15. Business Logic V16. File and Resource V17. Mobile V8. Error Handling and Logging V9. Data Protection V10. Communications V11. HTTP V13. Malicious Controls

17 OWASP Projekt ASVS - V5: Malicious Input Handling Verification Requirements

18 OWASP Top 10 Lista över de allvarligaste säkerhetsriskerna kring webapplikationer Varje risk listar Beskrivning Sårbarhetsexempel Angreppsexempel Råd kring att undvika/åtgärda Referenser Uppdateras vart tredje år

19 OWASP Top 10

20 OWASP Top 10

21 OWASP Top 10

22 OWASP Top 10 A1 Injection SQL, OS, LDAP etc A2 Broken Authentication and Session Management Authentication, session management tokens, timeouts tec. A3 Cross-Site Scripting (XSS) Stored, reflected or DOM based A4 Insecure Direct Object References Files, keys, directories exposed A5 Security Misconfiguration Weak or default configurations A6 Sensitive Data Exposure Not protected enough in transit or at rest A7 Missing Function Level Access Control Access to functions not normally available A8 Cross-Site Request Forgery (CSRF) Force user to execute actions A9 Using Components with Known Vulnerabilities Libraries, frameworks, modules etc. A10 Unvalidated Redirects and Forwards Acting without proper validation

23 A1 - Injection

24 A1 - Injection Inträffar när data som skickas via parametrar angriparna kan påverka och tolkas som kommandon istället för data. URL parametrar, HTTP headers, formulär/POST parametrar ... Valideras inte datan innan tolkning kan det medföra att angripare kan utföra egna frågor/kommandon. Kategorin inkluderar attacker mot flertalet tolkar: SQL Kommando LDAP XPATH

25 SQL-injection Vanligaste och mest omtalade injektionsbristen
Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: Vanligaste och mest omtalade injektionsbristen Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: Vanligaste och mest omtalade injektionsbristen Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: Vanligaste och mest omtalade injektionsbristen Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’”

26 SQL-injection Vanligaste och mest omtalade injektionsbristen
Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: Vanligaste och mest omtalade injektionsbristen Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: Vanligaste och mest omtalade injektionsbristen Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: Vanligaste och mest omtalade injektionsbristen Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” Vad händer om användaren heter O’Brian? String sql = “SELECT * FROM app_logins WHERE username=‘O’Brian’ AND password=‘’” Unclosed quotation mark at ...

27 SQL-injection Vanligaste och mest omtalade injektionsbristen
Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: Vanligaste och mest omtalade injektionsbristen Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: Vanligaste och mest omtalade injektionsbristen Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: Vanligaste och mest omtalade injektionsbristen Resultatet av obefintlig indatavalidering/typning vilket resulterar i att data tolkas som SQL syntax: String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” String sql = “SELECT * FROM app_logins WHERE username=‘” + user + “’ AND password=‘” + pass + “’” Vad händer om användaren heter O’Brian? String sql = “SELECT * FROM app_logins WHERE username=‘O’Brian’ AND password=‘’” Unclosed quotation mark at ... Vad händer om användaren heter ’ or ’’=’ eller ’ OR ’1’=’1’—? String sql = “SELECT * FROM app_logins WHERE username=‘’ or ‘’=‘’ AND password=‘’” String sql = “SELECT * FROM app_logins WHERE username=‘’ or ‘1’=‘1’-- AND password=‘’”

28 SQL-injection

29 SQL-injection Källa:

30 SQL-injection Identifiering Detaljerade felmeddelanden
Olikheter i svar (mellan exempelvis ’ och ’’ eller 1 och 1%2b1) Timingfunktioner Waitfor delay, benchmark ...

31 SQL-injection Dataextrahering
Information returnerad i korrekt avslutad fråga UNION Detaljerade felmeddelanden Felaktig konvertering Blind SQL-injection Olikheter mellan svar Side channels Filer, nätverkskommunikation (DNS)

32 SQL-injection Konsekvenser
Databasdumpar, intrång, utpressning, förnedring Utökad funktionalitet Nätverkskommunikation Skriva till filer Länkande databaser

33 SQL-injection Åtgärder Parameteriserade frågor
Separera data och syntax via placeholders - “Bind variables” till Prepared Statements Java EE – use PreparedStatement() with bind variables .NET – use parameterized queries like SqlCommand() or OleDbCommand() with bind variables PHP – use PDO with strongly typed parameterized queries (using bindParam()) Hibernate - use createQuery() with bind variables (called named parameters in Hibernate) SQLite - use sqlite3_prepare() to create a statement object

34 SQL-injection Åtgärder
String query = "SELECT account_balance FROM user_data WHERE user_name = " + request.getParameter("customerName"); try { Statement statement = connection.createStatement( … ); ResultSet results = statement.executeQuery( query ); } String custname = request.getParameter("customerName"); String query = "SELECT account_balance FROM user_data WHERE user_name = ? "; PreparedStatement pstmt = connection.prepareStatement( query ); pstmt.setString( 1, custname); ResultSet results = pstmt.executeQuery( );

35 SQL-injection Åtgärder
Andra åtgärder som ytterligare kan erbjuda “Layered Security” Validera indata mot vit/svartlista Tillämpa “Principle of Least Privilege” Håll mjukvara och bibliotek uppdaterade Stored Procedure kan ha samma effekt som Prepared Statements om de används säkert - mao ingen dynamisk SQL i proceduren = 'Select * from where ShipOrders where ShipOrder= ''' + ''''' //UNSAFE = 'Select * from where ShipOrders where EXECUTE sp_executesql //SAFE

36 SQL-injection Mer information
Sheet heet

37 Command injection Målet är att exekvera egna kommandon på målsystemet genom att injecera tecken som avslutar datadelen och infogar egna kommandon Kommadona exekveras då i ett operativsystemsskal vilket medför åtkomst till underliggande funktionalitet Källa:

38 Command injection Exempel
<?php print("Please specify the name of the file to delete"); print("<p>"); $file=$_GET['filename']; system("rm $file"); ?>

39 Command injection Fråga Svar
Svar Please specify the name of the file to delete uid=33(www-data) gid=33(www-data) groups=33(www-data)

40 Command injection Åtgärder Undvik “farliga” funktioner
Vissa språk stödjer parameterisering Filtrera indata mot en vit/svartlista

41 Command injection Mer information

42 Övriga injektioner LDAP SMTP XPATH ...

43 A2 - Autentisering och sessionshantering

44 A2 - Autentisering och sessionshantering
Inkluderade sårbarhetstyper Svaga skyddsmekaniskmer för autentiseringsinformation Möjligheten att gissa autentiseringsuppgifter Sesionsuppgifter exponeras Sessionsuppgifter återanvänds (Session Fixation) Svagheter i timeout/logout-funktioner

45 Autentisering Vanliga problemområden
Login/password reset/account creation avslöjar om kontot existerar Klartext (A6) - Lösenord sparas i klartext/reverserbart Flashback/Pastebin/... NIST ”Guide to Enterprise Password Management (Draft)” Standardkonton DPL Admin/demo/test/root/edit/administrator/demo1/test1/... <inget lösen>/password/Sommar15/<samma som kontonamn>/secret/ hemligt/abc123/qwerty/qwe123/123qwe/ osv

46 Sessionshantering Vanliga problemområden Sessionsinformation i URL:en
Session fixation/logout/timeout Funktionen för lösenordsbyte kräver inte det gamla lösenordet Funktionen för lösenordsåterställning medger byte på valfritt konto

47 A2 - Autentisering och sessionshantering
Åtgärder Följ kapitel V2 och V3 i OWASP ASVS Använd bibliotek och centrala funktioner för autentisering och sessionshantering Salta och hasha lösenord I databaser Login och all kommunkation som innehåller sessionsinformation ska TLS:as Sessionsidentifierara ska vara unika för sessionen, tillräckligt slumpmässiga och invalideras på serversidan Returnera generiska felmeddelanden

48 A2 - Autentisering och sessionshantering
Mer information Default Password List et

49 A3 – Cross-Site Scripting

50 A3 – Cross-Site Scripting
Inkluderade sårbarhetstyper Reflekterad XSS Lagrad XSS DOM-baserad XSS

51 A3 – Cross-Site Scripting
Introduktion Webbläsare följer Same-origin-principle (S.O.P): En sida som laddas från en domän får inte läsa information från andra domäner Ladda bilder och skript från andra domäner samt posta formulär till andra domäner är ok Sidor laddade i exempelvis iframes kan inte läsa information från huvuddokumentet XSS bryter SOP

52 A3 – Cross-Site Scripting
Vanliga problemområden Alla parametrar som användaren kan påverka som direkt eller indirekt blir del av en resulterande sida. (String) page += "<input name='creditcard' type='TEXT' value='" + request.getParameter("CC") + "'>"; '><script>document.location= ' ?foo='+document.cookie</script>'

53 A3 – Cross-Site Scripting

54 Reflekterad XSS Inträffar när data från angriparen inkluderas i den returnerande sidan till användern, i själva sidan eller felmeddlande, utan att kodas korrekt Scenario En angripare identifierar en sårbar sida och konstruerar en länk som utnyttjar denna sårbarhet Angriparen distribuerar länken till sina offer Exekverar skripten i användarens webbläsare

55 Lagrad XSS Vanligtvis ansedd som den allvarligaste typen av XSS
Data från användaren lagras, exemplevis i en databas, i applikationen och inkluderas i varje gång en användare efterfrågar informationen. Scenario: En angripare kan infoga JavaScript i sitt namn som som lagras på serversidan JavaScriptet exekveras varje gång någon besöker en sida där angriparens namn inkluderas Skulle en administratör besöka en sida där alla användare listas skulle angriparen möjligtvis kunna erhålla dennes behörigheter

56 DOM-baserad XSS Attacken skickas aldrig till servern utan tolkas direkt i webbläsaren Inträffar när klientside JavaScript läser parametrar från sidan och uppdaterar sidan (function(g) { var a=location.href.split(”#!”[1]; if(a){ g.location=g.HBR=a; } } )(window);

57 A3 – Cross-Site Scripting
Konsekvenser Exekvera funktioner i applikationer som den angripne användaren Läsa och skicka information till angriparen Modifiera sidan Automatisera händelser med BeEF

58 A3 – Cross-Site Scripting
Åtgärder Koda all data I enlighet med dess HTML kontext: HTML entity encode (< --> <, " --> ", ' --> ') kommer man långt med .. Men kolla även andra kontexter i XSS Prevention Cheat Sheet Content Security Policy header Manipulera HTML-dom via objekt och attribut, inte konkatenerade strängar element.setAttribute(”value”, insecure_variable) istället för document.write(”<input value=’”+insecure_variable+”’/>”);

59 A3 – Cross-Site Scripting
Mer information ntion_Cheat_Sheet eat_Sheet (V6)

60 A4 – Insecure Direct Object References

61 A4 – Insecure Direct Object References
Sårbarhetstyper De parametrar där användaren blir presenterad med objektets värde istället för en referens. (Direct) De parametrar där användaren blir presenterad med en referens till oblektet, men referensen inte verifieras mot användarens behörigheter (Insecure)

62 A4 – Insecure Direct Object References
Kan en angripare ändra på en parameter i en fråga och få åtkomst till data/funktioner ej avsedd för denne så är den sårbar Hämta information Utföra en operation Hämta filer Presentera funktionalitet

63 A4 – Insecure Direct Object References
Konsekvenser En angripare får åtkomst till all data som refereras av den sårbara parametern - skulle kunna vara: Alla filer I en molntjänst Alla kontouppgifter I en Internetbank Alla användare I en anonymiseringstjänst Alla recept I ett apotek Alla funktioner i en applikation

64 A4 – Insecure Direct Object References
Åtgärder Använd indirekta värden som mappas till resurser på applikationssidan, mappat till användarens session Alternativt signera ala ViewState Kontrollera att användarsessionen har behörighet att efterfråga resursen

65 A4 – Insecure Direct Object References
Mer information (V4)

66 A5 – Security Misconfiguration

67 A5 – Security Misconfiguration
Inkluderade sårbarhetstyper Avsaknas härdning av komponenter i applikationsstacken Uppdateringar Säkerhetsinställningar Standardkonton/-inställningar/-funktioner Felhantering

68 A5 – Security Misconfiguration
Vanliga problemområden Standardkonfigurationer Uppdateringar av mjukvara utöver det som täcks av vanliga uppdateringsfunktioner

69 A5 – Security Misconfiguration

70 A5 – Security Misconfiguration

71 A5 – Security Misconfiguration
Konsekvenser Allt ifrån informationsläckage till totalt ägd applikation

72 A5 – Security Misconfiguration
Åtgärder Använd checklistor och härdningsguider när system deployas Verifiera att inga nya funktioner aktiveras eller konfigureras om när uppdateringar appliceras Använd arkitektur där olika komponenter och funktioner separeras Skanna själv

73 A5 – Security Misconfiguration
Mer information ement (V12) Center for Internet Security (CIS) – 101 härdningsguider DISA STIG:s

74 A5 – Security Misconfiguration

75 A6 – Sensitive Data Exposure

76 A6 – Sensitive Data Exposure
Inkluderade sårbarhetstyper Sparas känslig information i klartext Skickas känslig information i klartext Cashas känslig information hos klienten Accepteras endast starka krypteringsprotokoll/-algoritmer Skyddas nycklar på ett fullgott sätt

77 A6 – Sensitive Data Exposure
Vanliga problemområden SSL/TLS Avsaknden av Svaga algoritmer/förhandlingar – downgrade Delar av siter görs tillgängliga via klartext Kryptering/hashning Databasdumpar Automatisk kryptering för ”Data at rest” Hur skyddas nycklar Vad och vart krypteras

78 A6 – Sensitive Data Exposure
Källa:

79 A6 – Sensitive Data Exposure

80 A6 – Sensitive Data Exposure
Jämförelse av databasdumpar Källa:

81 A6 – Sensitive Data Exposure

82 A6 – Sensitive Data Exposure
Konsekvenser Känslig information exponeras för obehöriga individer. Kan påverka andra siter och andra siters brister kan påverka er

83 A6 – Sensitive Data Exposure
Åtgärder Crypto (V7) Data Prot. (V9) SSL (V10) Kryptera känslig information Salta och hasha lösenord med rekommenderad algoritm Spar endast känslig information i klartext så länge ni absolut måste Acceptera endast godkända algoritmer Överväg att använda HSM (FIPS-140)

84 A6 – Sensitive Data Exposure
Mer information eet t_Sheet Crypto (V7) Data Prot. (V9) SSL (V10)

85 A7 – Missing Function Level Access Control

86 A7 – Missing Function Level Access Control
Inkluderade sårbarhetstyper Horisontell privilege escalation Vertikal privilege escalation Kringgå autentisering

87 A7 – Missing Function Level Access Control
Angripare kan komma åt information eller funktioner de normalt inte skulle ha åtkomst till. Beror på svagheter i accesskontroller Testas genom ”forced browsing” mot en information&funktion/rollmatris

88 A7 – Missing Function Level Access Control
Konsekvenser Horisontell privilege escalation Kan en användare i applikationen komma åt information eller funktioner tillhörande någon annan användare? Vertikal privilege escalation Kan en användare komma åt information eller funktioner endast tillgängliga för exempelvis en administratör? Kringgå autentisering Kan en anonym användare komma åt information eller funktioner som endase inloggade användare ska komma åt?

89 A7 – Missing Function Level Access Control
Åtgärder Använd centraliserad access kontroll (på serversidan;-) Standard ska vara ”Default Deny” Designa access kontroll som ett filter Begränsa åtkomst till administrativa gränssnitt Begränsa åtkomst till filer inte supporterade av applikationen

90 A7 – Missing Function Level Access Control
Mer information (V4)

91 A8 – Cross-Site Request Forgery (CSRF)

92 A8 – Cross-Site Request Forgery (CSRF)
Sårbarheten Möjligheten att tvinga en autentiserad användare att utföra händelser i applikationen. Källa:

93 A8 – Cross-Site Request Forgery (CSRF)
Problemet Applikationen förliter sig endast på sessionsinformationen från en autentiserad användare. Följande exempel är för en transaktion: tinationAccount= Om en angripare inkluderar följande kod på en populär sida – vad händer? <img src=" amount=1500&destinationAccount=attackersAcct#" width="0" height="0" /> Varje gång sidan besöks av en användare som är inloggad i example.com kommer transaktionen genomföras!

94 A8 – Cross-Site Request Forgery (CSRF)
Konsekvenser En angripare kan får en applikationsanvändare att utföra händelser i dennes namn.

95 A8 – Cross-Site Request Forgery (CSRF)
Åtgärder Inkludera ett slumpmässigt värde i varje förfrågan (Synchronizer Token) Värdet bör skickas som ett ”Hidden Field” och inte i URL:en då denna i vissa fall kan avläsas av angriparen. Kontrollera Origin headern (XMLHttpRequest) Signera content ala ViewState Vissa kritiska funktioner kanske ska skyddas med ytterligare en autentisering/CAPTCHA Andra alternativ som anses erbjuda ett svagare CSRF skydd är att kontrollera headers

96 A8 – Cross-Site Request Forgery (CSRF)
Åtgärder som inte fungerar Använda hemliga cookies Endast acceptera HTTP POST Att dela upp frågan i flera steg Inkludera sessionsinformation i URL:en Skyddar mot CSRF men är inte attrekommendera

97 A8 – Cross-Site Request Forgery (CSRF)
Mer information Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

98 A9 – Using Components with Known Vulnerabilities

99 A9 – Using Components with Known Vulnerabilities
Brister kan förekomma och utnyttjas i hela applikationsstacken Operativsystem Webserver Applikationsserver Applikation och bibliotek Databas Samtlika komponenter behöver kontinuerligt uppdateras för att inte publikt kända brister ska utnyttjas publikt rapporterade brister av olika allvarlighetsgrad CVSS2 visar bristens allvarlighetsgrad

100 A9 – Using Components with Known Vulnerabilities
Konsekvenser Allt ifrån informationsläckage till totalt ägd applikation Källa:

101 A9 – Using Components with Known Vulnerabilities
Åtgärder Uppgradera till version som adresserar de identifierade säkerhetsproblemen – vanligtvis senaste versionen. Skapa process för att: Identifiera bibliotek, komponenter och beroenden Monitorera dessa i publika kanaler (mailinglistor, säkerhetsforum mm) Försök begränsa antalet komponenter och versioner som får användas i organisationen Skapa konfigurationsrekommendationer för de godkända komponenterna Skapa rutiner för 0-day i de komponenter som används publikt Heartbleed, ShellShock, Poodle ....

102 A9 – Using Components with Known Vulnerabilities
Mer information OBS! 61MB = Alla CVE:er. Och några till (~80100) om man öppnar filen I en riktig editor ;-) Runt av dessa är ** RESERVED **, mao ej publikt annonserade Dubletter, false positives, rapporterade men ej patchade än, blev aldrig publik…

103 A9 – Using Components with Known Vulnerabilities

104 A10 – Unvalidated Redirects and Forwards

105 A10 – Unvalidated Redirects and Forwards
Inkluderade sårbarhetstyper Omdirigering till andra siter Omdirigering mellan olika delar av en site

106 A10 – Unvalidated Redirects and Forwards
Vanliga problemområden Login/logout Inbäddade externa funktioner Federering Mesh

107 A10 – Unvalidated Redirects and Forwards
Problemet Omdirigeringen begränsas inte till sin tilltänkta destination

108 A10 – Unvalidated Redirects and Forwards
Konsekvenser Angripare kan lura användaren att sidan som presenteras är legitim Angripare kan erhålla obehörig åtkomst till funtionalitet som borde vara begränsad

109 A10 – Unvalidated Redirects and Forwards
Åtgärder Undvik att använda Rediects och Forwards Undvik att använda parametrar som användaren kan ha påverkat I besluten Undvik att inkludera själva adressen utan hellre en referens till adressen Den sista utposten är att validera URL:en mot en vitlista – vilket har blivit fel I mer än ett fall //måste börja på good2.com

110 A10 – Unvalidated Redirects and Forwards
Åtgärder Undvik att använda Redirects och Forwards Undvik att använda parametrar som användaren kan ha påverkat I besluten Undvik att inkludera själva adressen utan hellre en referens till adressen Den sista utposten är att validera URL:en mot en vitlista – vilket har blivit fel I mer än ett fall //måste börja på good2.com

111 A10 – Unvalidated Redirects and Forwards
Mer information ards_Cheat_Sheet

112 Frågor?


Ladda ner ppt "Mattias Bergling, OWASP Stockholm/Nasdaq"

Liknande presentationer


Google-annonser