Software ist unsicher! "Security Researcher" publizieren nahezu täglich Sicherheitsmängel in Softwareapplikationen in einschlägigen Mailinglisten und Internetforen. Und das bereits seit Jahrzehnten. Softwaresicherheit wird immer wichtiger mit der zunehmenden Vernetzung und Kritikalität der Daten. Daher reservieren Softwarehersteller oft signifikante (aber trotzdem begrenzte) Budgets zur sicheren Softwareentwicklung. Um diese Budgets werben Dienstleister und Hersteller von verschiedensten Sicherheitsprodukten. Oft halten diese Dienste und Produkte nicht das, was das Marketing verspricht. Für Softwarehersteller stellt sich die Frage in welche Prozesse und Technologien in welchem Umfang investiert werden sollte: "Wieviel Sicherheitszuwachs bekommt man für wieviel Aufwand"? In diesem Vortrag beleuchte ich Wege und Irrwege, um dieses Kosten-Nutzen-Verhältnis abzuschätzen und zu optimieren.
2. Daten im Internet
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 2
3. Lord Kelvin 1824 - 1907 "If you can not measure it,
you can not improve it."
“I often say that when you can measure
what you are speaking about,
and express it in numbers,
you know something about it;”
“but when you cannot express it in numbers,
your knowledge is of a meagre
and unsatisfactory kind;“
“it may be the beginning of knowledge,
but you have scarcely, in your thoughts,
advanced to the stage of science,
whatever the matter may be.”
http://en.wikiquote.org/wiki/William_Thomson,_1st_Baron_Kelvin
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 3
4. Software ist...
trivial / komplex stabil / buggy
günstig / teuer langsam / performant
gut / schlecht
sicher / unsicher
Software
gut schlecht
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 4
5. “Mein Apfel ist besser als Dein Fenster”
Was ist sicherer?
?
unsicher sicher
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 5
6. “Von null auf hundert in 25.000€”
Betriebssystem ist “Unbreakable”!
“Sicherheit über Nacht mit PowerSecure tm!”
Studie:
“Apfel X ist etwa doppelt so sicher wie Birne Y.”
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 6
7. COTS vs. Individualsoftware
Individual-Software:
Geschäfts-Applikationen, z.B.
Web-Shops
E-Recruiting
Individual- Web-Applikationen!
Software Wartung oft unklar
Enthält oft kritische und trivial findbare
Sicherheits-Lücken
Commercial COTS:
off-the-shelf Betriebssystem (Win, Mac, Linux, ...)
Web-Server (Apache, IIS, ...)
(COTS)
Wartung durch Hersteller
Prozesse zur sicheren Entwicklung oft
vorhanden
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 7
8. Zwischenstand
Daten im Internet müssen geschützt werden
Sicherheit ist kontra-intuitiv (Marketing hat
leichtes Spiel)
Web-Applikationen haben besondere
Anforderungen an Sicherheit
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 8
9. Messen von Software-Eigenschaften
Stabilität Sicherheit
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 9
10. Wie messe ich Sicherheit?
Überlegung: Zählen von Schwachstellen
Owasp FFM
Zeit
Retrospektive Status Quo Prognose
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 10
11. Wie messe ich Sicherheit retrospektiv?
Daten von Bugtraq, Full-Disclosure, CVE, ...
Annahme: Anzahl veröffentlichter Schwachstellen
sei anti-proportional zur Sicherheit
Sicherheit
# Schwach-
0
stellen
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 11
12. Wie messe ich Sicherheit retrospektiv?
Problem: Veröffentlichung von Sicherheitslücken
hat strategischen Wert
Forscher veröffentlicht Schwachstelle nicht
Hersteller/Berater veröffentlicht Schwachstelle nicht
Hacker veröffentlicht Schwachstelle nicht
Zeitpunkt der Veröffentlichung != Zeitpunkt der
Entdeckung
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 12
13. Wie messe ich Sicherheit im Status Quo?
Penetrationstest oder Code Audit:
“Ist ein bestehendes Software-System unsicher?”
“Ja”
oder
“Keine Ahnung” # Schwach-
stellen
0 Sicherheit
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 13
14. Wie messe ich Sicherheit im Status Quo?
Probleme von Penetrationstests:
Reproduzierbarkeit?
Abdeckung?
Aussage?
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 14
15. Wie messe ich Sicherheit prognostizierend?
Alhazmi et al.
Nutzlos wenn:
• # Sicherheitslücken unbekannt
• Popularität gering
• Verbreitung gering (Geschäfts-Applikationen?)
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 15
16. Zählen von Schwachstellen...
Schwachstellen werden nicht immer publiziert
Individuelle Web-Applikationen haben keine
aussagekräftigen Daten über vergangene
Schwachstellen
Messen von Sicherheit schwieriger zu messen als
z.B. Stabilität
Zählen von Schwachstellen hat nur wenig
Aussagekraft über Sicherheit von Web-
Applikationen
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 16
17. Neuer Versuch:
Suche nach Ursprung typischer Schwachstellen
Zähle Vorkommen dieser Anti-Patterns
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 17
18. Software-Sicherheit: Wie messen?
Ursprung von Cross-Site-Scripting-Schwachstelle?
Keine ausreichende Trennung zwischen Benutzer-
Daten und HTML- oder JavaScript-Kommandos
Eingabevalidierung: Enkodierung von Datenausgaben:
Kreditkartennummer sollte Daten müssen als Daten
validiert werden markiert werden
“Ist das eine semantisch Ausgaben in HTML:
korrekte Kreditkarten- <b> --> <b&gr;
Nummer?” Ausgaben in JavaScript
“Darf ein Vorname das Zeichen O’Neil --> O’Neil
‘<‘ enthalten?” Ausgaben in URL
Filtern, Löschen, Ablehnen? Ja/Nein --> Ja%2fNein
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 18
19. Software-Sicherheit: Wie messen?
Sicherheit soll Entscheidungungsgrundlage für
Produktwahl sein:
“Ist Applikation A, oder Applikation B sicherer?”
Sicherheit verschiedener Systeme kann nur verglichen
werden, wenn Sicherheitsanforderungen gleich sind
Sicherheit kann nur im Vergleich mit
Sicherheitsanforderung bewertet werden
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 19
20. Software-Sicherheit: Wie messen?
Beispiel (1): Sicherheitsanforderung: “Trennung von
Benutzerdaten und Kommandos bei HTML-Ausgabe”
Konzept: Definition einer Enkodierungs-Funktion f, die
Benutzereingaben A in HTML-Daten B überführt
Validierung:
Ist f korrekt und vollständig? → Audit der
Implementierung von f
Wurden alle HTML-Ausgaben bedacht? → “Anteil der
HTML-Ausgaben ohne Enkodierung durch f”
Approximierung: Aufruf von f muss innerhalb von 5
Zeilen vor HTML-Ausgabe erfolgen
Suche kann mit Source-Code-Scanner automatisiert
werden
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 20
21. Software-Sicherheit: Wie messen?
Beispiel:
OK:
String str = request.getParam(“x”);
str = f(str);
response.write(“<b>” + str + ”</b>”);
Nicht OK:
String str = request.getParam(“x”);
response.write(“<b>” + str + ”</b>”);
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 21
22. Software-Sicherheit: Wie messen?
Beispiel:
Nicht OK:
String str = request.getParam(“x”);
...
if(immer_wahr) {
str = f(str);
}
...
response.write(“<b>” + str + ”</b>”);
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 22
23. Software-Sicherheit: Wie messen?
Aufwand um Sicherheitsanforderung zu erfüllen?
Entwickler benötigt 0,1 Stunden, um HTML-
Ausgabe mit Aufruf von f zu versehen
Applikation A: Applikation B:
100 HTML-Ausgaben 1000 HTML-Ausgaben
ohne Aufruf von f: ohne Aufruf von f:
CA1=100*0,1h CB1=1000*0,1h
=10h =100h
1 Fehler in f: CA2=8h 0 Fehler in f: CB2=0h
CA=CA1+CA2=18h CB=CB1+CB2=100h
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 23
24. Software-Sicherheit: Wie messen?
“Um Applikation A sicher gemäß der
Sicherheitsanforderung zu machen, ist ein
Aufwand von 18 Entwicklerstunden nötig.”
“Um Applikation B sicher gemäß der
Sicherheitsanforderung zu machen, ist ein
Aufwand von 100 Entwicklerstunden nötig.”
→ Gemäß der Sicherheitsanforderung ist
Applikation A zu bevorzugen
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 24
25. Zusammenfassung
Software-Sicherheit im Web ist kritisch
Sicherheit ist kontra-intuitiv. Man muss messen, um
wirklich verbessern zu können
Zählen von Schwachstellen hat nur wenig
Aussagekraft bei Web-Applikationen
Möglicher Weg: Leicht messbare Software-
Qualitäts-Anforderungen mit direktem Einfluß auf
Software-Sicherheit
OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 25
26. OWASP Germany 2008 Conference
Measuring the Security of Web Applications – Sebastian Schinzel
OWASP 26