ASP.NET ASP.NET Application Security Application Security Uwe Baumann Uwe Baumann Technologieberater Technologieberater Developer Group Developer Group Microsoft GmbH Microsoft GmbH [email protected][email protected]http://www.uwebaumann.de http://www.uwebaumann.de
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
ASP.NET ASP.NET Application SecurityApplication Security
Sicherheit der WebpplikationSicherheit der Webpplikation NichtNicht Bugs des Webservers Bugs des Webservers Sicherheitslücken, die durch potentiell Sicherheitslücken, die durch potentiell
unsicheren Code entstehenunsicheren Code entstehen Unabhängig von der verwendeten Unabhängig von der verwendeten
Technologie (ASp, ASP.NET, JSP, PHP...)Technologie (ASp, ASP.NET, JSP, PHP...)
Ein großes ProblemEin großes Problem
Viele Lücken sind bekanntViele Lücken sind bekannt Zahllose Whitepapers und BücherZahllose Whitepapers und Bücher Beispiel: „OWASP Top 10“ – Open Web Beispiel: „OWASP Top 10“ – Open Web
Application Security ProjectApplication Security Project Viele Entwickler wiegen sich dennoch in Viele Entwickler wiegen sich dennoch in
falscher Sicherheitfalscher Sicherheit Motto: „Wir verwenden SSL!“Motto: „Wir verwenden SSL!“ „„There is no patch for stupidity“ There is no patch for stupidity“
[SQLSecurity][SQLSecurity]
„„Never trust the Client!“Never trust the Client!“
Howard‘s zwei Grundregeln [Howard]Howard‘s zwei Grundregeln [Howard] „„Jede Eingabe ist destruktiv, solange nicht Jede Eingabe ist destruktiv, solange nicht
das Gegenteil bewiesen ist.“das Gegenteil bewiesen ist.“ „„Daten müssen überprüft werden, da sie Daten müssen überprüft werden, da sie
die Grenzen zwischen vertrauenswürdigen die Grenzen zwischen vertrauenswürdigen und nicht vertrauenswürdigen und nicht vertrauenswürdigen Umgebungen überschreiten.“ Umgebungen überschreiten.“
Der TechTalk Web ShopDer TechTalk Web Shop
Demo-Applikation Demo-Applikation mit Sicherheits-mit Sicherheits-lückenlücken
Ein kleine Ein kleine Herausforderung:Herausforderung:Finden wir die Finden wir die Lücken!Lücken!
Die Aufgaben:Die Aufgaben:
Kaufen Sie billiger ein ...Kaufen Sie billiger ein ... Z.B. Eine Firewall für €1,00Z.B. Eine Firewall für €1,00
Ermitteln Sie Passwörter ...Ermitteln Sie Passwörter ... Verschaffen Sie sich Administrator-Verschaffen Sie sich Administrator-
Zugriff ...Zugriff ... Versenden Sie Junkmail mit dem Versenden Sie Junkmail mit dem
Absender des Webshops ...Absender des Webshops ...
„„Thinking like a Hacker“Thinking like a Hacker“
lablab
Einige bekannte AngriffeEinige bekannte Angriffe
ParametermanipulationParametermanipulation
Angreifer verändert Übergabeparameter Angreifer verändert Übergabeparameter der Zielsiteder Zielsite Daten in (verstecken) Formularfeldern, Daten in (verstecken) Formularfeldern,
Keine relevanten Parameter zum Client Keine relevanten Parameter zum Client schickenschicken Session-Objekt verwendenSession-Objekt verwenden
Parameter verschlüsseln / hashenParameter verschlüsseln / hashen Beispiel: Viewstate MAC (Message Beispiel: Viewstate MAC (Message
Authentication Code)Authentication Code) Nur wenn unbedingt nötig verwenden!Nur wenn unbedingt nötig verwenden!
ParametermanipulationParametermanipulation
demodemo
SQL Insertion AngriffSQL Insertion Angriff
Angreifer schiebt der Site SQL-Code Angreifer schiebt der Site SQL-Code unterunter Die Zielsite leitet den SQL-Code an die Die Zielsite leitet den SQL-Code an die
Datenbank weiterDatenbank weiter Möglich, wenn dynamische SQL-Strings Möglich, wenn dynamische SQL-Strings
generiert werdengeneriert werden SQL-Code wird unter der Identität und mit SQL-Code wird unter der Identität und mit
den Rechten der Applikation ausgeführtden Rechten der Applikation ausgeführt Im Extremfall ist das Auslesen der Im Extremfall ist das Auslesen der
Union AttackUnion Attack Eine zweite Anfrage wird an eine Eine zweite Anfrage wird an eine
bestehende Anfrage „angehängt“bestehende Anfrage „angehängt“ Abfrage von Systemtabellen möglichAbfrage von Systemtabellen möglich Unendliche Möglichkeiten für den AngreiferUnendliche Möglichkeiten für den Angreifer
Drop Table AttackDrop Table Attack Angreifer kann ganze Tabellen mit einem Angreifer kann ganze Tabellen mit einem
kurzen Befehl löschen!kurzen Befehl löschen!
SQL Insertion: AbwehrSQL Insertion: Abwehr
Kein dynamisches SQL verwendenKein dynamisches SQL verwenden Auf keinen Fall dynamisches SQL Auf keinen Fall dynamisches SQL
Auch in Stored Procedures!Auch in Stored Procedures!
Parameterisierte Abfragen verwendenParameterisierte Abfragen verwenden Schneller und sichererSchneller und sicherer Code kann per Wizard erzeugt werdenCode kann per Wizard erzeugt werden
Minimale Rechte für die Applikation Minimale Rechte für die Applikation vergebenvergeben Schützt vor dem SupergauSchützt vor dem Supergau LPAs (Low Privilege Accounts) zur LPAs (Low Privilege Accounts) zur
Applikationsausführung und auf der Applikationsausführung und auf der Datenbank anlegenDatenbank anlegen
Applikation darf nicht Owner der Applikation darf nicht Owner der Datenbanktabelle seinDatenbanktabelle sein
ASP.NET RegularExpressionValidatorASP.NET RegularExpressionValidator Prüft Eingabe auf dem Client Prüft Eingabe auf dem Client undund auf dem auf dem
ServerServer Kein Umgehen durch Manipulation des Kein Umgehen durch Manipulation des
HTTP-Requests möglichHTTP-Requests möglich Überprüfung der Werte mit Page.Validate() Überprüfung der Werte mit Page.Validate()
für alle Controls, für alle Controls, ControlControl.Validate für .Validate für einzelne Controlseinzelne Controls
Automatische Überprüfung, wenn Automatische Überprüfung, wenn CausesValidation der absendenen CausesValidation der absendenen Schaltfläche gesetzt istSchaltfläche gesetzt ist
Angreifer zwingt die Zielsite zur Anzeige Angreifer zwingt die Zielsite zur Anzeige von Skriptcodevon Skriptcode
Unendliche Möglichkeiten für den Unendliche Möglichkeiten für den AngreiferAngreifer Ausführen von schädlichem CodeAusführen von schädlichem Code Umleitung auf andere SiteUmleitung auf andere Site Ausspionieren von CookiesAusspionieren von Cookies
CSS: AbwehrCSS: Abwehr
Validierung von ParameternValidierung von Parametern Auf potentiell unsichere Zeichen und Tags Auf potentiell unsichere Zeichen und Tags
prüfen „<SCRIPT>“ etc.)prüfen „<SCRIPT>“ etc.) Eingaben mit HTMLEncode() umwandelnEingaben mit HTMLEncode() umwandeln ASP.NET 1.1 nimmt Überprüfung ASP.NET 1.1 nimmt Überprüfung
automatisch vor und generiert Fehler automatisch vor und generiert Fehler (abfangen!)(abfangen!)
ASP.NET 1.0 verlangt manuelle ASP.NET 1.0 verlangt manuelle ÜberprüfungÜberprüfung
CSS: Fallen CSS: Fallen
Keine „Reparaturversuche“ Keine „Reparaturversuche“ unternehmenunternehmen Frage lautet: „Was ist illegal?“Frage lautet: „Was ist illegal?“ „„Escaping“ (Verdoppeln) von Escaping“ (Verdoppeln) von
HochkommataHochkommata Suchen nach speziellen Zeichen wie < etc.Suchen nach speziellen Zeichen wie < etc.
Besser: Definition der legalen ZeichenBesser: Definition der legalen Zeichen Frage lautet: „Was ist legal?“Frage lautet: „Was ist legal?“
Cross Site ScriptingCross Site Scripting
demodemo
Open Mail Relay AngriffOpen Mail Relay Angriff
Angreifer sendet Mail über die Zielsite Angreifer sendet Mail über die Zielsite Möglich, wenn die Zielsite die Möglich, wenn die Zielsite die
Mailempfänger als Eingabeparameter Mailempfänger als Eingabeparameter akzeptiertakzeptiert
Angreifer kann Versand automatisieren, um Angreifer kann Versand automatisieren, um Spam zu verschickenSpam zu verschicken
Open Mail Relay: AbwehrOpen Mail Relay: Abwehr
Validierung von ParameternValidierung von Parametern Keine frei wählbaren Empängeradressen Keine frei wählbaren Empängeradressen
zulassenzulassen Seite zum Mailversand ggf. hinter die Seite zum Mailversand ggf. hinter die
Webapplikation läuft unter dem Account Webapplikation läuft unter dem Account des Usersdes Users
Ideal für AdminstrationswebseitenIdeal für Adminstrationswebseiten
Exkurs: ASP.NET AuthenticationExkurs: ASP.NET Authentication
Forms AuthenticationForms Authentication User authentifiziert sich auf einer Login-User authentifiziert sich auf einer Login-
Seite gegen einen beliebigen Store Seite gegen einen beliebigen Store (meistens Datenbank)(meistens Datenbank)
Ein Session-Cookie wird auf dem Client Ein Session-Cookie wird auf dem Client gesetzt und bei jedem Request gesetzt und bei jedem Request mitgesendetmitgesendet
Wer das Cookie besitzt, kann die Identität Wer das Cookie besitzt, kann die Identität des betreffenden Benutzers annehmendes betreffenden Benutzers annehmen
Replay-AngriffReplay-Angriff
Angreifer „klaut“ Session-CookieAngreifer „klaut“ Session-Cookie Möglich durch CSS-Angriff, Abfangen der Möglich durch CSS-Angriff, Abfangen der
HTTP-Kommunikation, Social EngineeringHTTP-Kommunikation, Social Engineering Cookie enthält die Session-ID eines UsersCookie enthält die Session-ID eines Users Angreifer kann sich als dieser User Angreifer kann sich als dieser User
„tarnen“ [Finnel]„tarnen“ [Finnel]
Replay-Angriff: AbwehrReplay-Angriff: Abwehr
Kommunikation über SSL (HTTPS)Kommunikation über SSL (HTTPS) Nachteil: Sehr hoher RechenaufwandNachteil: Sehr hoher Rechenaufwand IIS 6: Bessere Unterstützung von SSL IIS 6: Bessere Unterstützung von SSL
Verfügbar ab VS.NET 2003 („Everett“)Verfügbar ab VS.NET 2003 („Everett“) Patch für VS.NET 2002 erhältlichPatch für VS.NET 2002 erhältlich
Ermöglicht verschlüsselte EinträgeErmöglicht verschlüsselte Einträge Identity, Process Model, Connection StringIdentity, Process Model, Connection String Einträge werden in web.config referenziertEinträge werden in web.config referenziert Wert wird in der Registry verschlüsselt Wert wird in der Registry verschlüsselt
gespeichertgespeichert Registry-Key ist durch eine ACL geschütztRegistry-Key ist durch eine ACL geschützt
[Wintellect] Wintellect ASP.NET FAQ (mit vielen Security-Fragen)[Wintellect] Wintellect ASP.NET FAQ (mit vielen Security-Fragen)http://www.wintellect.com/resources/faqs/default.aspx?faq_id=1http://www.wintellect.com/resources/faqs/default.aspx?faq_id=1&page=1&page=1
[Finnel] “Patterns and Practices: Building Secure ASP.NET [Finnel] “Patterns and Practices: Building Secure ASP.NET Applications”. Lynn Finnel (ed.). Microsoft Press, 2003. ISBN 0-Applications”. Lynn Finnel (ed.). Microsoft Press, 2003. ISBN 0-7356-1890-9. 7356-1890-9. Buch als PDF File: Buch als PDF File: http://http://msdn.microsoft.com/library/default.asp?urlmsdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/secnetlpMSDN.asp=/library/en-us/dnnetsec/html/secnetlpMSDN.asp
[Howard] „Sichere Software programmieren“. Michael Howard, [Howard] „Sichere Software programmieren“. Michael Howard, David LeBlanc. Microsoft Press, 2002. ISBN 3-86063-674-X.David LeBlanc. Microsoft Press, 2002. ISBN 3-86063-674-X.
[Basiura] „Professional ASP.NET Security“. Russ Basiura et al. [Basiura] „Professional ASP.NET Security“. Russ Basiura et al. Wrox Press, 2002. ISBN 1-86100-620-9.Wrox Press, 2002. ISBN 1-86100-620-9.
[OWASP] The Open Web Application Security Project [OWASP] The Open Web Application Security Project httphttp://www.owasp.org://www.owasp.org
[OWASPTop10] „The 10 Most Critical Web Application [OWASPTop10] „The 10 Most Critical Web Application Vulnerablity“ Vulnerablity“ httphttp://prdownloads.sourceforge.net/owasp/OWASPWebApplicationS://prdownloads.sourceforge.net/owasp/OWASPWebApplicationSecurityTopTen-Version1.pdf?downloadecurityTopTen-Version1.pdf?download
[AdvSQLInj] „Advanced SQL Injection In SQL Server [AdvSQLInj] „Advanced SQL Injection In SQL Server Applications“. Chris Anley.Applications“. Chris Anley.http://www.nextgenss.com/papers/advanced_sql_injection.pdfhttp://www.nextgenss.com/papers/advanced_sql_injection.pdf
[MBSA] Microsoft Baseline Security Analyser[MBSA] Microsoft Baseline Security Analyserhttp://www.microsoft.com/technet/treeview/default.asp?url=/http://www.microsoft.com/technet/treeview/default.asp?url=/TechNet/Security/tools/tools/MBSAHome.ASPTechNet/Security/tools/tools/MBSAHome.ASP
[Q310588] “PRB: Security Toolkit Breaks ASP.NET Debugging in [Q310588] “PRB: Security Toolkit Breaks ASP.NET Debugging in Visual Studio .NET”Visual Studio .NET”http://support.microsoft.com/default.aspx?scid=kb;en-http://support.microsoft.com/default.aspx?scid=kb;en-us;310588us;310588
[MSSec] Microsoft Security Bulletins[MSSec] Microsoft Security Bulletinshttp://www.microsoft.com/technet/treeview/default.asp?url=/http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/technet/security/