Best Practices der sicheren Programmierung mit.NET Andrea Janes.
-
Upload
katrina-neisler -
Category
Documents
-
view
105 -
download
0
Transcript of Best Practices der sicheren Programmierung mit.NET Andrea Janes.
Best Practices der sicheren Programmierung mit .NET
Andrea Janes
IT Security Day - Folie 2
Inhalt
EinleitungSichere Systeme entwerfenSoftware testenEmpfehlenswerte Verfahren
IT Security Day - Folie 3
Sichere Systeme entwerfen
IT Security Day - Folie 4
Design der Archi-tektur und des
Anwendungskerns
Sicherheit im Softwareentwicklungsprozess
Konzept
ErsteAnforderungs-
analyse
Eine Versionentwickeln
Feedback berücksichtigen
Version liefern
Feedback desKunden ermitteln
Fertige Version ausliefern
IT Security Day - Folie 5
Design der Archi-tektur und des
Anwendungskerns
Sicherheit im Softwareentwicklungsprozess
Konzept
ErsteAnforderungs-
analyse
Eine Versionentwickeln
Feedback berücksichtigen
Version liefern
Feedback desKunden ermitteln
Fertige Version ausliefern
Worum geht es? Welches Resultat wird
angestrebt? Wer hat welchen Nutzen? Wie wird dieser Nutzen
erreicht?
Ermittlung der Anforderungen basierend auf potentielle Kundenoder
Ermittlung der Anforderungen basierend auf dem Markt (d.h. unter Berücksichtigung der Anforderungen der anzusprechenden Marktsegmente)
Anforderungsentwicklung1)
Funktionale Anforderungen beschreiben die möglichen Features, d.h.: welche Möglichkeiten hat der Benutzer die Anwendung zu verwenden?
1) http://en.wikipedia.org/wiki/Functional_requirements2) http://www-128.ibm.com/developerworks/web/library/wa-qualbust1/
Nicht-funktionale Anforderungen legen Design-Einschränkungen fest (Beispiele: Anforderungen hinsichtlich der Geschwindigkeit, Qualität, Design und Sicherheit)
Anforderungen müssen klar, korrekt, eindeutig, spezifisch und überprüfbar sein.
Einflussfaktoren bei der Anwendungsentwicklung2):
IT Security Day - Folie 6
Sicherheit zu spät berücksichtigen
Zeit
Kosten
Konzept
Analyse&
Design Coding Einsatz Konzept
IT Security Day - Folie 7Überprüfen
Ausführen
Richten Sie einen Sicherheitsprozess ein.
Planen
Handeln
Handeln
Sicherheitsprozess verbessernProzess und Änderungen des Prozesses dokumentieren (z.B. indem Sie ein Wiki verwenden)
Planen
Sicherheitszielsetzungen für das Produkt definierenBedrohungsmodellierung– Bedrohungen ermitteln– Klassifizierung der Gefahrentypen– Wie soll reagiert werden?– Welche Techniken werden zur
Abwehr gewählt?
Überprüfen
Lernen Sie aus Ihren FehlernDokumentieren Sie wieso etwas fehlschlägt.
Ausführen
Verwenden Sie minimale RechteErrichten Sie mehrere VerteidigungslinienExterne Systeme sind unsicherPlanen Sie ein Versagen einSicherheitsfeature != sicheres FeatureSetzen Sie sichere StandardeinstellungenVerstecken != Sicherheit
IT Security Day - Folie 8
Software testen
IT Security Day - Folie 9
Wieso/Was/Womit wird getestet?
Was?(Application,
components, ...)Wie?
(Test strategien, Test tools, ...)
Wieso?(Regressionstest, Sicherheitstest,
Verhaltenstest, Performancetest, ...)
IT Security Day - Folie 11
Rückverfolgbarkeit
Test
Design
Coding
Anforderungen
“Testfirst”
Tests bestätigen die Implementierungvon Anforderungen
Stellt sicher, dass der “richtige” Code erstellt wird
IT Security Day - Folie 12
Wie soll „test-first“ Code erstellt werden?
“Schreibe mindestens einen Test für jedes Feature.”
“Schreibe zuerst die Schnittstelle/das
Klassengerüst, dann schreib den Test, stelle sicher dass
der Test fehlschlägt (da ja der Code, der die gewünschte
Funktionalität umsetzt noch nicht existiert!)
“Nur ein fehlgeschlagener Test gibt dir das Recht, ein neues
Feature zu implementieren. Das Ziel jeder
Zeile Code sollte sein, den
fehlgeschlagenen Test zum Laufen
zu bringen.”
•Wenn du einen Fehler findest, repariere ihn nicht... •...stattdessen, schreibe einen Test der den Fehler findet und deshalb fehlschlägt... •...und dann bereinige den Fehler.
IT Security Day - Folie 13
NUnit
IT Security Day - Folie 14
NUnit
IT Security Day - Folie 15
Empfehlenswerte Verfahren
IT Security Day - Folie 16
Empfehlenswerte Verfahren
Datenschutz!Verraten Sie dem Angreifer nichts!Alle Codezweige prüfen!Lassen Sie es ausgeschaltet!Sichern Sie sicherheitsrelevante Codeteile durch Tests ab!Nutzen Sie die Fähigkeiten des Betriebssystems!Bürden Sie dem Benutzer keine Entscheidungen auf!
IT Security Day - Folie 17
Empfehlenswerte Verfahren
Verwenden Sie minimale Rechte– Schreiben Sie keine Benutzerdateien in „C:\
Programme\“– Schreiben Sie keine Benutzerdateien in HKLM– Wasser predigen und Wein trinken...
(http://nonadmin.editme.com/)
Speichern Sie temporäre Dateien in %TEMP%!Speichern Sie keine privaten Schlüssel in .NET Code!Verwenden Sie einen Obfuscator!
START F. Wieso ist Windows so unsicher? A. Weil jeder als Administrator eingeloggt ist. F. Wieso loggt sich jeder als Administrator ein? A. Weil die meisten Sicherheitsprobleme nicht verstehen und meinen, ein User Account gäbe ihnen nur eingeschränkte Arbeits- möglichkeiten. F. Wieso verstehen die meisten nichts von Sicherheit? A. Weil Sie als Administrator eingeloggt sind und so alle Sicherheitsmechanismen umgehen.ZURÜCK ZUM START
IT Security Day - Folie 18
Faule Ausreden
Niemand wird so etwas tun!Warum sollte irgendjemand so etwas tun?Wir wurden nie angegriffen.Wir sind sicher – wir nutzen Kryptografie.Wir sind sicher – wir verwenden ACLs.Wir sind sicher – wir haben eine Firewall.Wir haben unseren Code prüfen lassen, er enthält keine Sicherheitsprobleme.Es ist zwar die Standardeinstellung, aber der Administrator kann es abschalten.Wenn wir uns nicht als Administrator anmelden, funktioniert das Zeug nicht.