Sicherheit ist zu einer wichtigen Komponenten nahezu jeder Anwendung geworden. Doch ist Sicherheit tatsächlich nur eine Komponenten? Die Literatur besagt das Sicherheit ein Prozess ist, und kein Produkt. Wie bekomm ich aber diesen Prozess in meinem Entwicklungsprozess unter? Steuert jetzt Security meinen Entwicklungsprozess, und wie verhält sich das mit agilen Entwicklungsprozessen? Erfahren Sie hier Ansätze und Ideen wie Sie sowohl sichere als auch wirtschaftliche und funktionale Anwendungen entwickeln können.
Just-In-Time Security: Sicherheit im Entwicklungsprozess
1. Just-In-Time Security: Sicherheit
im Entwicklungsprozess
Mike Wiesner
SpringSource Germany
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
2. Über mich
• Senior Consultant bei SpringSource
Germany
• Spring-/Security-Consulting
• Trainings
• IT-Security Consulting / Reviews
• mike.wiesner@springsource.com
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2
3. Agenda
• Was ist Application Security?
• Requirements & Prozesse
• Risikoanalyse
• Testing
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3
4. Agenda
• Was ist Application Security?
• Requirements & Prozesse
• Risikoanalyse
• Testing
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3
5. Was ist Application Security?
• Ziel: Eine Anwendung „in sich“ sicher zu
machen
• Also keine:
–(Web App) Firewalls
–IDS
–Proxy-Server
–Betriebssystem Security
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
6. Security Merkmale
• Authentifizierung
–Identitätsfeststellung
• Autorisierung
–Prüfung von Rechten
• Überwachung
–Protokollierungen (Audit-Trails)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
7. Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
8. Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
9. Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
10. Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
11. Security Hardening
• Validierungen
–SQL-Injection / Code-Injection
–Cross-Site-Scripting
–...
• Defense in Depth
–Prüfungen in mehreren Schichten
–Verschiedene Technologien
• Secure Coding
–Fehlerbehandlung, Trust-Zones, ...
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
12. SQL Injection
Internet Webserver
Daten-
bank
Login
Client
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
13. SQL Injection
Internet Webserver
Daten-
bank
user
Login
password
Client
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
14. SQL Injection
Internet Webserver
Daten-
bank
user
Login
password select * from users where
user = 'user' and
password = 'password'
Client
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
15. SQL Injection
Internet Webserver
Daten-
bank
user
Login
Client
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
16. SQL Injection
Internet Webserver
Daten-
bank
user
Login
' or '1'='1
Client
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
17. SQL Injection
Internet Webserver
Daten-
bank
user
Login
' or '1'='1 select * from users where
user = 'user' and
password = '' or '1'='1'
Client
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
18. Defense in Depth
• 100 protzentigen Schutz
gibt es nicht
• Prüfung in mehreren
Schichten
• Mit verschiedenen
Technologien
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10
19. Secure Coding
• Fehlerbehandlung
• Trust-Zones
• Generische
Schnittstellen
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11
20. Agenda
• Was ist Application Security?
• Requirements & Prozesse
• Risikoanalyse
• Testing
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12
21. Requirements / Prozesse
• Ist Application Security ein Requirement
oder ein Prozess?
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
22. Requirements / Prozesse
• Ist Application Security ein Requirement
oder ein Prozess?
• Beides!
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
23. Requirements / Prozesse
• Ist Application Security ein Requirement
oder ein Prozess?
• Beides!
• Requirements:
–Authentifizierung, Autorisierung, Logging
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
24. Requirements / Prozesse
• Ist Application Security ein Requirement
oder ein Prozess?
• Beides!
• Requirements:
–Authentifizierung, Autorisierung, Logging
• Prozess:
–Defense in Depth, Secure Coding,
(Validierung)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
25. Security Requirements
• Müssen nicht von Anfang an berücksichtigt
werden
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
26. Security Requirements
• Müssen nicht von Anfang an berücksichtigt
werden
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
27. Security Requirements
• Müssen nicht von Anfang an berücksichtigt
werden
• Späteres hinzufügen mit AOP möglich
–Evolutionäres Design
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
28. Security Requirements
• Müssen nicht von Anfang an berücksichtigt
werden
• Späteres hinzufügen mit AOP möglich
–Evolutionäres Design
• Zum Teil Non-Functional Requirements
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
29. Eingabe-Validierung
• „Die Maske muss ein Textfeld enthalten“
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
30. Eingabe-Validierung
• „Die Maske muss ein Textfeld enthalten“
• Und welche Zeichen sind erlaubt?
–UTF-8, UTF-16, Alphanumerisch, ...
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
31. Eingabe-Validierung
• „Die Maske muss ein Textfeld enthalten“
• Und welche Zeichen sind erlaubt?
–UTF-8, UTF-16, Alphanumerisch, ...
• Validierung fängt mit der Anforderung an!
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
32. Eingabe-Validierung
• „Die Maske muss ein Textfeld enthalten“
• Und welche Zeichen sind erlaubt?
–UTF-8, UTF-16, Alphanumerisch, ...
• Validierung fängt mit der Anforderung an!
• Immer Whitelist hinterfragen
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
33. Eingabe-Validierung
• „Die Maske muss ein Textfeld enthalten“
• Und welche Zeichen sind erlaubt?
–UTF-8, UTF-16, Alphanumerisch, ...
• Validierung fängt mit der Anforderung an!
• Immer Whitelist hinterfragen
• Für alle Dateneingänge
–Webservices, OCR-Scans, Batch-Imports
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
34. Ausgabe-Validierung
• „Der Benutzer darf HTML-Tags verwenden“
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16
35. Ausgabe-Validierung
• „Der Benutzer darf HTML-Tags verwenden“
• Welche davon?
–<javascript>, <frame>, ...
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16
36. Ausgabe-Validierung
• „Der Benutzer darf HTML-Tags verwenden“
• Welche davon?
–<javascript>, <frame>, ...
• Auch hier: Whitelist in der Anforderung
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16
37. Rollen / Rechte
• „Der Administrator darf die Methode
deleteAll des User-Objekts aufrufen“
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
38. Rollen / Rechte
• „Der Administrator darf die Methode
deleteAll des User-Objekts aufrufen“
• Schon zu spezifisch
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
39. Rollen / Rechte
• „Der Administrator darf die Methode
deleteAll des User-Objekts aufrufen“
• Schon zu spezifisch
• Rollen werden direkt mit Methoden/URLs
verbunden
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
40. Rollen / Rechte
• „Der Administrator darf die Methode
deleteAll des User-Objekts aufrufen“
• Schon zu spezifisch
• Rollen werden direkt mit Methoden/URLs
verbunden
• Eine Abstraktation mehr einführen:
–Rechte
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
41. Rollen / Rechte
• „Der Administrator darf Benutzer löschen“
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18
42. Rollen / Rechte
• „Der Administrator darf Benutzer löschen“
User * * Role * * Right
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18
43. Rollen / Rechte
• „Der Administrator darf Benutzer löschen“
User * * Role * * Right
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18
44. Rollen / Rechte
• „Der Administrator darf Benutzer löschen“
User * * Role * * Right
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18
45. Rollen / Rechte
• „Der Administrator darf Benutzer löschen“
User * * Role * * Right
• Grobe Regel:
- pro Use-Case ein Recht
- pro Akteur ein Rolle
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18
46. Security Requirements
• Security Requirements fangen bei der
Spezifikation an
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
47. Security Requirements
• Security Requirements fangen bei der
Spezifikation an
• Zu allgemeine Beschreibungen führen zu
unsicherem Code
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
48. Security Requirements
• Security Requirements fangen bei der
Spezifikation an
• Zu allgemeine Beschreibungen führen zu
unsicherem Code
• Fachabteilung muss darauf sensibilisiert
werden
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
49. Security Requirements
• Security Requirements fangen bei der
Spezifikation an
• Zu allgemeine Beschreibungen führen zu
unsicherem Code
• Fachabteilung muss darauf sensibilisiert
werden
• Projektleiter muss auf die Einhaltung
achten
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
50. Security als Prozess
• Security ist mehr als nur Validierung,
Rechteprüfung und Authentifizierung
• Unüberwindbare Prüfungen
• Secure Coding
• Einsatz von Security Patterns
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20
51. Unüberwindbare Prüfungen
Internet
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
52. Unüberwindbare Prüfungen
Internet
Trust
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
53. Unüberwindbare Prüfungen
Don‘t trust Prüfungen
sind hier
unsicher!
Internet
Trust
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
54. Trust-Zones
• Entwickler müssen mit Trust-Zones vertraut
sein
• Requirements alleine wäre auch im „Don‘t
Trust“-Bereich erfüllt
• Anwendung ist aber nicht sicher!
• Sicherstellung durch Architektur-
Constraints möglich
–AspectJ, SonarJ, ...
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22
55. Secure Coding
public interface OrderService {
public List<Order> getUserOrders(String subject);
public List<Order> getAllOrders();
}
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
56. Secure Coding
public interface OrderService {
public List<Order> getUserOrders(String subject);
public List<Order> getAllOrders();
}
• getUserOrders soll per AJAX verwendet
werden
–Export via DWR als JavaScript-Proxy
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
57. Secure Coding
public interface OrderService {
public List<Order> getUserOrders(String subject);
public List<Order> getAllOrders();
}
• getUserOrders soll per AJAX verwendet
werden
–Export via DWR als JavaScript-Proxy
• Jetzt steht aber auch getAllOrders zur
Verfügung!
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
58. Code Injection
public interface Calculator {
public long calculate(String function);
}
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24
59. Code Injection
public interface Calculator {
public long calculate(String function);
}
• „function“ ist JRuby-Code
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24
60. Code Injection
public interface Calculator {
public long calculate(String function);
}
• „function“ ist JRuby-Code
• Wird vom Benutzer eingegeben
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24
61. Code Injection
public interface Calculator {
public long calculate(String function);
}
• „function“ ist JRuby-Code
• Wird vom Benutzer eingegeben
• Wie kontrolliere ich ob es nur Formeln
sind?
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24
62. Security Patterns
• Etliche Lösungsansätze vorhanden
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25
63. Security Patterns
• Etliche Lösungsansätze vorhanden
• Vorteil:
–Problem, Lösung und auch Nachteile sind
detailliert beschreiben
–Guter Startpunkt
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25
64. Security Patterns
• Etliche Lösungsansätze vorhanden
• Vorteil:
–Problem, Lösung und auch Nachteile sind
detailliert beschreiben
–Guter Startpunkt
• Nachteil:
–Es gibt viele davon
–Umsetzung immer noch selbst notwendig
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25
65. Security als Prozess
• Zuordnung zu Requirements oft schwer
möglich
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
66. Security als Prozess
• Zuordnung zu Requirements oft schwer
möglich
• Ist Teil nahezu jedem Requirements
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
67. Security als Prozess
• Zuordnung zu Requirements oft schwer
möglich
• Ist Teil nahezu jedem Requirements
• Lösung:
–Security Trainings
–Reviews (Audits, Pair Programming)
–Penetration Tests
–Zum Teil: Code-Scanner (pmd, findBug)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
68. Security als Prozess
• Zuordnung zu Requirements oft schwer
möglich
• Ist Teil nahezu jedem Requirements
• Lösung:
–Security Trainings
–Reviews (Audits, Pair Programming)
–Penetration Tests
–Zum Teil: Code-Scanner (pmd, findBug)
• Team Know-How ist hier der Schlüssel zum
Erfolg!
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
69. Agenda
• Was ist Application Security?
• Requirements & Prozesse
• Risikoanalyse
• Testing
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 27
70. „Was kann die Anwendung?“
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
71. „Was kann die Anwendung?“
Nichts, aber das ist dafür 100% sicher!
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
72. Wieviel Security und Wann?
• Security ist wichtig
• Aber Funktionen sind es auch
• Wie finde ich also die richtige Balance?
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29
73. Risikoanalyse
• Sicherheitsrisiken lösen bedeutet Aufwand
• Aufwand = Zeit = Nicht vorhanden ;-)
• Macht es Sinn jedes theoretische Risiko zu
behandeln?
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30
77. Risikoanalyse
• Technische Risiken auf Geschäftsrisiken
abbilden
• Was bedeutet es für das Business wenn
diese Lücke ausgenutzt wird?
• Ist der Aufwand zum Schließen höher wie
der maximale Verlust?
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32
78. Maximaler Verlust
• Nicht nur direkter Verlust
–Serverausfall
–Datenverlust
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 33
79. Maximaler Verlust
• Nicht nur direkter Verlust
–Serverausfall
–Datenverlust
• sonder auch
–Imageverlust
–Vertrauensverlust bei Kunden
–Schadenersatzansprüche
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 33
80. Agenda
• Was ist Application Security?
• Requirements & Prozesse
• Risikoanalyse
• Testing
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34
81. Security Tests
• Benutzer erstellen keine Bug-Reports wenn
Sie „zu viel“ dürfen
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
82. Security Tests
• Benutzer erstellen keine Bug-Reports wenn
Sie „zu viel“ dürfen
• Security-Bugs müssen während der
Entwicklung gefunden werden
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
83. Security Tests
• Benutzer erstellen keine Bug-Reports wenn
Sie „zu viel“ dürfen
• Security-Bugs müssen während der
Entwicklung gefunden werden
• Manuelles Testen ist sehr Aufwendig
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
84. Security Tests
• Benutzer erstellen keine Bug-Reports wenn
Sie „zu viel“ dürfen
• Security-Bugs müssen während der
Entwicklung gefunden werden
• Manuelles Testen ist sehr Aufwendig
• Automatisiertes Testen teilweise aber auch
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
85. Security Tests
• Benutzer erstellen keine Bug-Reports wenn
Sie „zu viel“ dürfen
• Security-Bugs müssen während der
Entwicklung gefunden werden
• Manuelles Testen ist sehr Aufwendig
• Automatisiertes Testen teilweise aber auch
• Es kommt auf die richtigen Tools an
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
86. Berechtigungen
• 5 Rollen, 60 Rechte
–5 x 60 = 300 JUnit Test Cases
• Besser mit FIT (Framework for Integration
Tests):
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36
87. Berechtigungen
• 5 Rollen, 60 Rechte
–5 x 60 = 300 JUnit Test Cases
• Besser mit FIT (Framework for Integration
Tests):
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36
88. Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37
89. Security Tests mit Spring
Security (AOP)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38
90. Security Tests mit Spring
Security (AOP)
Business
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38
91. Security Tests mit Spring
Security (AOP)
Business
Security
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38
92. Security Tests mit Spring
Security (AOP)
Business
Security
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38
93. Business Tests
• Keine Beeinflussung der Business Tests
durch Security
• Deswegen: Security abschaltbar machen
• Auch hier: Tools können helfen
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 39
94. Business Tests mit Spring
Security (AOP)
Business
Security
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40
95. Business Tests mit Spring
Security (AOP)
Business
Security
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40
96. Coding Tests
• Trust-Zones mit AspectJ festlegen
–Security-Check im „Don‘t Trust“-Bereich führt
zu Compiler Warnungen/Fehler
• Analyse-Tools wie PMD, FindBugs, ...
• Alles aber nur begrenzt möglich
• Beste Möglichkeit: Reviews
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41
97. Abschluss-Tests
• In regelmäßigen Abstanden (z.B. nach
Milestones):
–Security Audits (White-Box)
–Penetration Tests (Black-Box)
• Nicht erst 2 Wochen vor Go-Live!
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 42
99. Fazit
• Alle Akteure sind gefragt: Anforderer,
Manager, Entwickler
• Tools können helfen
• Jeder Entwickler benötigt aber Security
Know-How
• Security ist nicht nur ein Requirement
• Security kann niemals als erledigt
gekennzeichnet werden
–Neue Funktionen = Neue Security
–Neue Angriffsmöglichkeiten, ...
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 44
100. Fragen?
Mike Wiesner
SpringSource Germany
?
mike.wiesner@springsource.com
Skype: mikewiesner
http://www.springsource.com/de
http://www.mwiesner.com
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 45
101. Credits
In diesem Vortrag wurde Fotos von folgenden Usern verwendet:
http://www.flickr.com/photos/rocketraccoon
http://www.flickr.com/photos/cambodia4kidsorg
http://www.flickr.com/photos/mukluk
http://www.flickr.com/photos/azrainman
http://www.flickr.com/photos/scottfeldstein
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 46