ASP.NET Application Security Uwe Baumann Technologieberater Developer Group Microsoft GmbH...
-
Upload
jannike-gehris -
Category
Documents
-
view
108 -
download
1
Transcript of ASP.NET Application Security Uwe Baumann Technologieberater Developer Group Microsoft GmbH...
ASP.NET ASP.NET Application SecurityApplication Security
Uwe BaumannUwe Baumann
TechnologieberaterTechnologieberaterDeveloper GroupDeveloper GroupMicrosoft GmbHMicrosoft GmbH
[email protected]@microsoft.comhttp://www.uwebaumann.dehttp://www.uwebaumann.de
Was Sie erwartetWas Sie erwartet
Was ist Web Application Security?Was ist Web Application Security? Ein WettbewerbEin Wettbewerb
Taugen Sie zum Webseiten-Hacker?Taugen Sie zum Webseiten-Hacker?
Bekannte AngriffeBekannte Angriffe Wo lauern Gefahren?Wo lauern Gefahren? Was kann man dagegen tun?Was kann man dagegen tun?
Weiterführende InfomationenWeiterführende Infomationen
Web Application SecurityWeb Application 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,
QuerystringsQuerystrings Beispiel: Preisinformationen, Beispiel: Preisinformationen,
Authorisierungsflags usw.Authorisierungsflags usw.
Parametermanipulation: AbwehrParametermanipulation: Abwehr
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
gesamten Datenbank möglichgesamten Datenbank möglich
Advanced SQL InsertionAdvanced SQL Insertion
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
verwendenverwenden Dynamisches SQL vermeidenDynamisches SQL vermeiden
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
SQL Insertion: Abwehr (2)SQL Insertion: Abwehr (2)
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
Exkurs: StringvalidierungExkurs: Stringvalidierung
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
SQL InsertionSQL Insertion
demodemo
Cross-Site Scripting (CSS) AngriffCross-Site Scripting (CSS) Angriff
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
Autorisierungsgrenze verlegenAutorisierungsgrenze verlegen
Open Mail RelayOpen Mail Relay
demodemo
Exkurs: ASP.NET AuthenticationExkurs: ASP.NET Authentication
PassportPassport Ein anderes Mal...Ein anderes Mal...
Windows AuthenticationWindows Authentication User authentifiziert sich mit seinem User authentifiziert sich mit seinem
Windows-AccountWindows-Account Impersonation möglich, d.h. Impersonation möglich, d.h.
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
HardwarelösungenHardwarelösungen
Cross-Site-Scripting ausschließenCross-Site-Scripting ausschließen
Weitere TipsWeitere Tips
Datenbank absichernDatenbank absichern
Trusted Connections verwendenTrusted Connections verwenden Verwendet NTLM zwischen Applikation und Verwendet NTLM zwischen Applikation und
SQL ServerSQL Server Kein Klartextpasswort im Connection Kein Klartextpasswort im Connection
StringString Leider nur für SQL Server möglichLeider nur für SQL Server möglich
Verwendung von IPSec erwägenVerwendung von IPSec erwägen Verschlüsselung von Kommunikation Verschlüsselung von Kommunikation
zwischen Applikationsserver und zwischen Applikationsserver und Datenbankserver uvm.Datenbankserver uvm.
web.config-Einträge verschlüsselnweb.config-Einträge verschlüsseln
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
Low Privilege Account (LPA)Low Privilege Account (LPA)
So viele Rechte wie nötig, so wenig wie So viele Rechte wie nötig, so wenig wie möglichmöglich Bestimmte Rechte sind zur Bestimmte Rechte sind zur
Applikationsausführung nötigApplikationsausführung nötig Alle anderen Rechte sollten nur nach Alle anderen Rechte sollten nur nach
weiser Überlegung gewährt werdenweiser Überlegung gewährt werden Genaue Anfroderungen für LPAs sind Genaue Anfroderungen für LPAs sind
dokumentiert [dokumentiert [
Microsoft Baseline Security Analyser 1.1Microsoft Baseline Security Analyser 1.1
Identifiziert Identifiziert problematische problematische KonfigurationenKonfigurationen
Prüft UpdatelevelPrüft Updatelevel Erstellt ReportsErstellt Reports Macht VorschlägeMacht Vorschläge Gibt InformationenGibt Informationen
Prüft Windows, IIS, Prüft Windows, IIS, SQL uvm.SQL uvm. Lokal und RemoteLokal und Remote
IIS Lockdown Tool 2.1IIS Lockdown Tool 2.1
Deaktiviert nicht Deaktiviert nicht genützte Featuresgenützte Features Rollenbasiert, z.B. Rollenbasiert, z.B.
Webserver, Webserver, Messaging etc.Messaging etc.
URLScan filtert URLScan filtert potentiell unsichere potentiell unsichere HTTP-RequestsHTTP-Requests
Filterregeln frei Filterregeln frei konfigurierbarkonfigurierbar
ASP.NET ASP.NET Debugging:Debugging:[Q310588] beachten![Q310588] beachten!
Microsoft Security BulletinsMicrosoft Security Bulletins
Wichtigste Wichtigste Ressource für Ressource für SecuritySecurity
PatchesPatches „„Hätten wir nur Hätten wir nur
früher reagiert...!“früher reagiert...!“ Code RedCode Red SQL SlammerSQL Slammer
Vielen Dank!Vielen Dank!
Fragen kostet nichts…Fragen kostet nichts…
Weitere InformationenWeitere Informationen
[Q329290] Verschlüsselte web.config-Einträge:[Q329290] Verschlüsselte web.config-Einträge:http://support.microsoft.com/default.aspx?scid=kb;EN-US;32929http://support.microsoft.com/default.aspx?scid=kb;EN-US;329290#30#3
[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.
Weitere InformationenWeitere Informationen
[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
[SQLSecurity] SQLSecurity.com[SQLSecurity] SQLSecurity.comhttp://www.sqlsecurity.comhttp://www.sqlsecurity.com[SQLSecLock] SQLSecurity Checklist [SQLSecLock] SQLSecurity Checklist http://www.sqlsecurity.com/DesktopDefault.aspx?http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=3&tabid=4tabindex=3&tabid=4
[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
Weitere InformationenWeitere Informationen
[QDefense] „AdCycle AdCycle SQL Command Insertion [QDefense] „AdCycle AdCycle SQL Command Insertion Vulnerability” (Beispiel für SQL Injection)Vulnerability” (Beispiel für SQL Injection)http://qdefense.com/Advisories/QDAV-2001-7-2.htmlhttp://qdefense.com/Advisories/QDAV-2001-7-2.html
[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/