Säkerhet ur ett testperspektiv (Erfarenheter efter 4 år med säkerhetstest på Microsoft) Copyright Prolore AB. All rights reserved.
Viktor Laszlo - Prolore Jobbat med teknisk testning i 15 år Var med och grundade Prolore Jobbade på Microsoft i 4 år Idag VD på Prolore 2
Innehåll Microsoft Security Development Lifecycle (SDL) Säker design Minska attackytan (ASR) Modelera hotbilden (Threat Modeling) Kanske: Säkerhetstestning Fuzz testning 3
(Innehåll) Borttaget Buffer overflows Integer arithmetic errors Canonicalization issues Managed Code: Cross-site scripting (XSS) Managed Code: SQL injection Cryptography Code Review 4
Mål Att ge dig information som kan användas för att göra dina system säkrare. 5
Vad är Microsoft SDL Microsoft Security Development Lifecycle Vilka säkerhetsaktiviteter ger mest valuta för pengarna? 1. Utbildning 60-45% 2. Threat Modeling 40% 3. Attack Surface Reduction? % 4. Fuzz Testing 10% Att bara leta efter säkerhetsbuggar gör inte mjukvara säkrare 6
7 Microsoft SDL
Test och Säkerhet Test validerar Krav och Design? Test verifierar för att hitta säkerhetsfel. Fokus ligger på validering när man arbetar med säkerhetstest. Att bara leta efter säkerhetsbuggar gör inte mjukvara säkrare 8
Minska attackytan Titta på alla ingångspunkter till ditt system. Nätverksport och protokoll Filer och filtyper (Windows registry) Rangordna dom enligt behörighetsnivå. Anonym användare - autentiserad användare Fjärranvändare - lokala användare Användare - Admin Nätverk - lokal 9
Minska attackytan Större attackyta Exekverar som default Öppen port UDP Anonym åtkomst Alltid på Adminåtkomst Åtkomst från internet SYSTEM Standardinställningat Mindre attackyta Avstängd som default Stängd port TCP Autensierad åtkomst Ibland på Användaråtkomst Åtkomst från lokala nätet Inte SYSTEM Användardefinierade inställningar 10
Att minska attackytan är lika viktigt som att få programkoden bra Skapa en lista och gå kritiskt genom den. Ställ dig frågor som: Behöver porten verkligen vara öppen? Behöver filen verkligen vara skrivbar? Behöver användaren verkligen den rättigheten? Behöver verkligen den processen vara startad? 11
Hotanalys Säker mjukvara börjar med att vi förstår hoten. Hot är inte samma sak som sårbarhet. Hot lever för alltid, de är attackens mål Processen i korthet: Modellera hotbilden -> Identifiera hot -> Mildra/motverka hot -> Validera 12
Hotmodellering (Threat Modeling) Rita upp din arkitektur. Börja med personer/andra system, processer, dataflöden och datalagring. Unik form för varje sak Varje dataflöde ska bara gå åt ett håll Namnge dom med data, inte läs/skriv Rita ut attackytor/trust boundaries Berätta en story om ditt system för att se att bin modell är OK. 13
Hotmodell (Threat Model) Extern Enhet Process Dataflöde Datalagring Trust boundary Människor Andra system Microsoft. com DLL EXE COM-objekt Komponent Service Web Service Funktions anrop Nätverks trafik RPC (Remote Procedure Call) Databas Fil Registry Kö/Stack Delat minne Dator Filsystem Process boundary 14
Hitta hoten Använd STRIDE för varje detalj Börja med saker som är kopplade till farliga dataflöden (sådana som korsar trust boundarie) Använd tabellen som hjälp för att komma på attacker. Håll reda på allt i en lista 15
Förstå STRIDE hoten Hot Egenskap Definition Exempel Spoofing Autentisering Utge sig för att vara något eller någon annan. Utge sig för att vara någon från ITavdelningen, skatteverket.se eller ntdll.dll Tampering Integritet Modifiera data eller kod Modifiera en DLL på disk eller DVD, eller ett paket på nätverket. Repudiation Oavvislighet Påstå att man inte har utfört något Information Disclosure Denial of Service Elevation of Privilege 16 Sekretess Tillgänglighet Behörighet/Till stånd Visa information för någon som inte hat tillstånd att se det Förneka eller försämra tjänst för användare Få tillgång utan korrekt tillstånd Jag har inte skickat mailet. Jag har inte ändrat filen. Jag har inte besökt websidan. Publicera ett kundregister på en websida. Visa Windows källkod för någon Krascha en process eller en webserver, eller skicka data som belastar en tjänst. Gå från begränsad användare till en med högre behörighet. Tillåtar en anonym användare att köra kommandon.
STRIDE Tabellen S T R I D E Extern Enhet X X Process X X X X X X Dataflöde X X X X Datalagring X X X 17
Mildra/motverka hoten genom att använda följande teknik Hot Spoofing Tampering Repudiation Information Disclosure Denial of Service Elevation of Privilege Mildra/motverka genom Autentisering Integritet Oavvislighet Sekretess Tillgänglighet Behörighet/Tillstånd 18
Dataflödesdiagram Inte flödesschema Inte klassdiagram Inte interaktionsdiagram 19
Identifiera hoten SR TID STRIDE TID TID Varje element i dataflödesdiagramet är mottagligt för en eller flera hottyper. TID SR STRIDE TID TID STRIDE 20
Mildra/motverka hoten För varje hot, bestäm hur det ska stoppas Designa om och eliminera Använd en standard motverkningsteknik Acceptera/medvetet risktagande Rapportera en bugg Hantera hot som buggar Motverkningsteknik som funktionalitet 21
Validera Kontrollera hotmodellsdiagrammet Stämmer det överens med designdokumentet? Stämmer det överens med faktisk implementation? Kolla i din buggdatabas Är alla säkerhetsrelaterade buggar stängda? Är allt implementerat för att motverka dessa? 22
Fuzz testning Myntades av Bart Miller An Empirical Study of the Reliability of UNIX Utilities (Miller, Fredriksen och So, 1990) Kritiker kallar det för hagelbössa, men i vissa sammanhang är hagelbössor mer användbara än gevär eller laser 23
Fuzz testning Slumpdriven applicering av inkorrekt formaterad data för att hitta sårbarheter. Egenskaper: Metodisk Slumpvärden Explicit sökande efter sårbarheter / stabilitetsfel Genererar ett stort antal testfall Förväntat resultat: Det går inte fel Passar inte riktigt in i traditionellt tankesett med testfall 24
Hur gör man Fuzz testning? Verktyg, verktyg, verktyg. Hitta alla ingångspunkter till ditt system. Nätverksport och protokoll Filer och filtyper Windows registry Rangordna dom enligt behörighetsnivå. Anonym, användarbehörighet och admin Fjärranvändare och lokala användare. 25
Hur gör man Fuzz testning? De som utför attacker begränsar sig inte. Regel nr. 1: Det finns inga regler/begränsningar Attacker som utförs av admin är inte intressanta. Om du har en klient till din server, använd den inte. Imitera klienten 26
Sammanfattning SDL integrerar säkerhetsaktiviteter i alla faser av utvecklingarbetet. Att reducera attackytan och att modellera hoten är delar av säker design. Indatavalidering är en mycket viktig teknik vid säker utveckling. Ett misslyckande resulterar alltid i allvarliga säkerhetproblem. Fuzz testning hjälper att avslöja fel som kan medföra säkerhetsproblem. 27
28 Rekommenderad läsning
Rekommenderade verktyg Threat Modeling ASR SDL Threat Modeling Tool version 3.1.8 Attack Surface Analyzer (Beta) Fuzz Testning SDL MiniFuzz File Fuzzer SDL RegEx Fuzzer Övriga BinScope Binary Analyzer AppVerifier Microsoft Code Analysis Tool.NET (CAT.NET) 29
Tack! Kontakt: viktor.laszlo@prolore.se www.prolore.se 30