Säkerhet ur ett testperspektiv

Download Report

Transcript Säkerhet ur ett testperspektiv

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.
2.
3.
4.
Utbildning
Threat Modeling
Attack Surface Reduction
Fuzz Testing
60-45%
40%
?%
10%
Att bara ”leta efter säkerhetsbuggar” gör inte mjukvara säkrare
6
Microsoft SDL
7
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
Mindre attackyta
Exekverar som default
Avstängd som default
Öppen port
Stängd port
UDP
TCP
Anonym åtkomst
Autensierad åtkomst
Alltid på
Ibland på
Adminåtkomst
Användaråtkomst
Åtkomst från internet
Åtkomst från lokala nätet
SYSTEM
Inte SYSTEM
Standardinställningat
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
• Människor
• Andra
system
• Microsoft.
com
14
Process
•
•
•
•
•
•
DLL
EXE
COM-objekt
Komponent
Service
Web Service
Dataflöde
• Funktions
anrop
• Nätverks
trafik
• RPC
(Remote
Procedure
Call)
Datalagring
•
•
•
•
•
Databas
Fil
Registry
Kö/Stack
Delat
minne
Trust
boundary
• Dator
• Filsystem
• ”Process
boundary”
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
Jag har inte skickat mailet. Jag har
inte ändrat filen. Jag har inte besökt
websidan.
Information
Disclosure
Sekretess
Visa information för någon som Publicera ett kundregister på en
inte hat tillstånd att se det
websida. Visa Windows källkod för
någon
Denial of
Service
Tillgänglighet
Förneka eller försämra tjänst
för användare
Elevation of
Privilege
Behörighet/Till Få tillgång utan korrekt tillstånd Gå från begränsad användare till en
stånd
med högre behörighet. Tillåtar en
anonym användare att köra
kommandon.
16
Krascha en process eller en
webserver, eller skicka data som
belastar en tjänst.
STRIDE Tabellen
S
17
Extern
Enhet
X
Process
X
T
R
I
D
E
X
X
X
X
X
X
Dataflöde
X
X
X
X
Datalagring
X
X
X
Mildra/motverka hoten genom att
använda följande teknik
18
Hot
Mildra/motverka genom
Spoofing
Autentisering
Tampering
Integritet
Repudiation
Oavvislighet
Information Disclosure
Sekretess
Denial of Service
Tillgänglighet
Elevation of Privilege
Behörighet/Tillstånd
Dataflödesdiagram
Inte flödesschema
Inte klassdiagram
Inte interaktionsdiagram
19
Identifiera hoten
TID
SR
TID
TID
STRIDE
TID
STRIDE
SR
TID
TID
STRIDE
20
Varje element i
dataflödesdiagramet
är mottagligt för en
eller flera hottyper.
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
Rekommenderad läsning
28
Rekommenderade verktyg
Threat Modeling
SDL Threat Modeling Tool version 3.1.8
ASR
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:
[email protected]
www.prolore.se
30