ASP.NET Application Security Uwe Baumann Technologieberater Developer Group Microsoft GmbH [email protected] http://www.uwebaumann.de Was Sie erwartet Was ist Web Application Security? Ein Wettbewerb Bekannte Angriffe Taugen Sie zum Webseiten-Hacker? Wo lauern Gefahren? Was kann.
Download
Report
Transcript ASP.NET Application Security Uwe Baumann Technologieberater Developer Group Microsoft GmbH [email protected] http://www.uwebaumann.de Was Sie erwartet Was ist Web Application Security? Ein Wettbewerb Bekannte Angriffe Taugen Sie zum Webseiten-Hacker? Wo lauern Gefahren? Was kann.
ASP.NET
Application Security
Uwe Baumann
Technologieberater
Developer Group
Microsoft GmbH
[email protected]
http://www.uwebaumann.de
Was Sie erwartet
Was ist Web Application Security?
Ein Wettbewerb
Bekannte Angriffe
Taugen Sie zum Webseiten-Hacker?
Wo lauern Gefahren?
Was kann man dagegen tun?
Weiterführende Infomationen
Web Application Security
Sicherheit der Webpplikation
Nicht Bugs des Webservers
Sicherheitslücken, die durch potentiell
unsicheren Code entstehen
Unabhängig von der verwendeten
Technologie (ASp, ASP.NET, JSP, PHP...)
Ein großes Problem
Viele Lücken sind bekannt
Zahllose Whitepapers und Bücher
Beispiel: „OWASP Top 10“ – Open Web
Application Security Project
Viele Entwickler wiegen sich dennoch in
falscher Sicherheit
Motto: „Wir verwenden SSL!“
„There is no patch for stupidity“
[SQLSecurity]
„Never trust the Client!“
Howard‘s zwei Grundregeln [Howard]
„Jede Eingabe ist destruktiv, solange nicht
das Gegenteil bewiesen ist.“
„Daten müssen überprüft werden, da sie
die Grenzen zwischen vertrauenswürdigen
und nicht vertrauenswürdigen
Umgebungen überschreiten.“
Der TechTalk Web Shop
Demo-Applikation
mit Sicherheitslücken
Ein kleine
Herausforderung:
Finden wir die
Lücken!
Die Aufgaben:
Kaufen Sie billiger ein ...
Z.B. Eine Firewall für €1,00
Ermitteln Sie Passwörter ...
Verschaffen Sie sich AdministratorZugriff ...
Versenden Sie Junkmail mit dem
Absender des Webshops ...
lab
„Thinking like a Hacker“
Einige bekannte Angriffe
Parametermanipulation
Angreifer verändert Übergabeparameter
der Zielsite
Daten in (verstecken) Formularfeldern,
Querystrings
Beispiel: Preisinformationen,
Authorisierungsflags usw.
Parametermanipulation: Abwehr
Keine relevanten Parameter zum Client
schicken
Session-Objekt verwenden
Parameter verschlüsseln / hashen
Beispiel: Viewstate MAC (Message
Authentication Code)
Nur wenn unbedingt nötig verwenden!
demo
Parametermanipulation
SQL Insertion Angriff
Angreifer schiebt der Site SQL-Code
unter
Die Zielsite leitet den SQL-Code an die
Datenbank weiter
Möglich, wenn dynamische SQL-Strings
generiert werden
SQL-Code wird unter der Identität und mit
den Rechten der Applikation ausgeführt
Im Extremfall ist das Auslesen der
gesamten Datenbank möglich
Advanced SQL Insertion
Union Attack
Eine zweite Anfrage wird an eine
bestehende Anfrage „angehängt“
Abfrage von Systemtabellen möglich
Unendliche Möglichkeiten für den Angreifer
Drop Table Attack
Angreifer kann ganze Tabellen mit einem
kurzen Befehl löschen!
SQL Insertion: Abwehr
Kein dynamisches SQL verwenden
Auf keinen Fall dynamisches SQL
verwenden
Dynamisches SQL vermeiden
Auch in Stored Procedures!
Parameterisierte Abfragen verwenden
Schneller und sicherer
Code kann per Wizard erzeugt werden
SQL Insertion: Abwehr (2)
Minimale Rechte für die Applikation
vergeben
Schützt vor dem Supergau
LPAs (Low Privilege Accounts) zur
Applikationsausführung und auf der
Datenbank anlegen
Applikation darf nicht Owner der
Datenbanktabelle sein
Exkurs: Stringvalidierung
ASP.NET RegularExpressionValidator
Prüft Eingabe auf dem Client und auf dem
Server
Kein Umgehen durch Manipulation des
HTTP-Requests möglich
Überprüfung der Werte mit Page.Validate()
für alle Controls, Control.Validate für
einzelne Controls
Automatische Überprüfung, wenn
CausesValidation der absendenen
Schaltfläche gesetzt ist
demo
SQL Insertion
Cross-Site Scripting (CSS) Angriff
Angreifer zwingt die Zielsite zur Anzeige
von Skriptcode
Unendliche Möglichkeiten für den
Angreifer
Ausführen von schädlichem Code
Umleitung auf andere Site
Ausspionieren von Cookies
CSS: Abwehr
Validierung von Parametern
Auf potentiell unsichere Zeichen und Tags
prüfen „<SCRIPT>“ etc.)
Eingaben mit HTMLEncode() umwandeln
ASP.NET 1.1 nimmt Überprüfung
automatisch vor und generiert Fehler
(abfangen!)
ASP.NET 1.0 verlangt manuelle
Überprüfung
CSS: Fallen
Keine „Reparaturversuche“
unternehmen
Frage lautet: „Was ist illegal?“
„Escaping“ (Verdoppeln) von
Hochkommata
Suchen nach speziellen Zeichen wie < etc.
Besser: Definition der legalen Zeichen
Frage lautet: „Was ist legal?“
demo
Cross Site Scripting
Open Mail Relay Angriff
Angreifer sendet Mail über die Zielsite
Möglich, wenn die Zielsite die
Mailempfänger als Eingabeparameter
akzeptiert
Angreifer kann Versand automatisieren, um
Spam zu verschicken
Open Mail Relay: Abwehr
Validierung von Parametern
Keine frei wählbaren Empängeradressen
zulassen
Seite zum Mailversand ggf. hinter die
Autorisierungsgrenze verlegen
demo
Open Mail Relay
Exkurs: ASP.NET Authentication
Passport
Ein anderes Mal...
Windows Authentication
User authentifiziert sich mit seinem
Windows-Account
Impersonation möglich, d.h.
Webapplikation läuft unter dem Account
des Users
Ideal für Adminstrationswebseiten
Exkurs: ASP.NET Authentication
Forms Authentication
User authentifiziert sich auf einer LoginSeite gegen einen beliebigen Store
(meistens Datenbank)
Ein Session-Cookie wird auf dem Client
gesetzt und bei jedem Request
mitgesendet
Wer das Cookie besitzt, kann die Identität
des betreffenden Benutzers annehmen
Replay-Angriff
Angreifer „klaut“ Session-Cookie
Möglich durch CSS-Angriff, Abfangen der
HTTP-Kommunikation, Social Engineering
Cookie enthält die Session-ID eines Users
Angreifer kann sich als dieser User
„tarnen“ [Finnel]
Replay-Angriff: Abwehr
Kommunikation über SSL (HTTPS)
Nachteil: Sehr hoher Rechenaufwand
IIS 6: Bessere Unterstützung von SSL
Hardwarelösungen
Cross-Site-Scripting ausschließen
Weitere Tips
Datenbank absichern
Trusted Connections verwenden
Verwendet NTLM zwischen Applikation und
SQL Server
Kein Klartextpasswort im Connection
String
Leider nur für SQL Server möglich
Verwendung von IPSec erwägen
Verschlüsselung von Kommunikation
zwischen Applikationsserver und
Datenbankserver uvm.
web.config-Einträge verschlüsseln
Verfügbar ab VS.NET 2003 („Everett“)
Patch für VS.NET 2002 erhältlich
Ermöglicht verschlüsselte Einträge
Identity, Process Model, Connection String
Einträge werden in web.config referenziert
Wert wird in der Registry verschlüsselt
gespeichert
Registry-Key ist durch eine ACL geschützt
Low Privilege Account (LPA)
So viele Rechte wie nötig, so wenig wie
möglich
Bestimmte Rechte sind zur
Applikationsausführung nötig
Alle anderen Rechte sollten nur nach
weiser Überlegung gewährt werden
Genaue Anfroderungen für LPAs sind
dokumentiert [
Microsoft Baseline Security Analyser 1.1
Identifiziert
problematische
Konfigurationen
Prüft Updatelevel
Erstellt Reports
Macht Vorschläge
Gibt Informationen
Prüft Windows, IIS,
SQL uvm.
Lokal und Remote
IIS Lockdown Tool 2.1
Deaktiviert nicht
genützte Features
Rollenbasiert, z.B.
Webserver,
Messaging etc.
URLScan filtert
potentiell unsichere
HTTP-Requests
Filterregeln frei
konfigurierbar
ASP.NET
Debugging:
[Q310588] beachten!
Microsoft Security Bulletins
Wichtigste
Ressource für
Security
Patches
„Hätten wir nur
früher reagiert...!“
Code Red
SQL Slammer
Vielen Dank!
Fragen kostet nichts…
Weitere Informationen
[Q329290] Verschlüsselte web.config-Einträge:
http://support.microsoft.com/default.aspx?scid=kb;ENUS;329290#3
[Wintellect] Wintellect ASP.NET FAQ (mit vielen Security-Fragen)
http://www.wintellect.com/resources/faqs/default.aspx?faq_id=1
&page=1
[Finnel] “Patterns and Practices: Building Secure ASP.NET
Applications”. Lynn Finnel (ed.). Microsoft Press, 2003. ISBN 07356-1890-9.
Buch als PDF File:
http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnnetsec/html/secnetlpMSDN.asp
[Howard] „Sichere Software programmieren“. Michael Howard,
David LeBlanc. Microsoft Press, 2002. ISBN 3-86063-674-X.
[Basiura] „Professional ASP.NET Security“. Russ Basiura et al.
Wrox Press, 2002. ISBN 1-86100-620-9.
Weitere Informationen
[OWASP] The Open Web Application Security Project
http://www.owasp.org
[OWASPTop10] „The 10 Most Critical Web Application
Vulnerablity“
http://prdownloads.sourceforge.net/owasp/OWASPWebApplicati
onSecurityTopTen-Version1.pdf?download
[SQLSecurity] SQLSecurity.com
http://www.sqlsecurity.com
[SQLSecLock] SQLSecurity Checklist
http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=3&ta
bid=4
[AdvSQLInj] „Advanced SQL Injection In SQL Server
Applications“. Chris Anley.
http://www.nextgenss.com/papers/advanced_sql_injection.pdf
Weitere Informationen
[QDefense] „AdCycle AdCycle SQL Command Insertion
Vulnerability” (Beispiel für SQL Injection)
http://qdefense.com/Advisories/QDAV-2001-7-2.html
[MBSA] Microsoft Baseline Security Analyser
http://www.microsoft.com/technet/treeview/default.asp?url=/Tec
hNet/Security/tools/tools/MBSAHome.ASP
[Q310588] “PRB: Security Toolkit Breaks ASP.NET Debugging in
Visual Studio .NET”
http://support.microsoft.com/default.aspx?scid=kb;en-us;310588
[MSSec] Microsoft Security Bulletins
http://www.microsoft.com/technet/treeview/default.asp?url=/tech
net/security/