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/

- Microsoft