Student Technology Conference 2004 Daniel Kirstenpfad Writing Secure Code.

Slides:



Advertisements
Ähnliche Präsentationen
DI Christian Donner cd (at) donners.com
Advertisements

Datenbankzugriff über ISAPI-Webservererweiterungen
Webinar für [Name der Gruppe] [Name des Institutes]
.
der Universität Oldenburg
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
Daten fließen lassen XML in Microsoft Office 2003 Lorenz Goebel Frank Fischer
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
Sicherheit in SOA Was kommt auf Entwickler zu? Sebastian Weber
MySQL.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Seite 1Maria, Philipp, Herbert Seite 1 Fitnessplaner Ziele: >Fitnessplaner für Onlinebetrieb >Registrierung >individuelle Trainingsplanerstellung.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Dynamischer Speicher und Struktur
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
Dynamische Webseiten mit PHP
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Sicherheit in Rechnernetzen- Denial of Service- Attacken
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
Arrays,Strings&Pointer in C/C++
DVG Einführung in Java1 Einführung in JAVA.
JDBC EDV JDBC.
Einführung MySQL mit PHP
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Virtual Private Networks
Sicherheit Quelle: Aus einem Referat der ASTALAVISTA Group
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Grundlagen der sicheren PHP Programmierung Parametermanipulationen und Injektionslücken Stefan Esser Hardened-PHP Project.
Kostenlose Alternative zu Microsoft Office
SQL Server 2005 CLR-Integration
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Systemaufbau / Komponenten
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
GOLF3000 Datenbankhandling. Einleitung Vorstellung Team Eckdaten des Projekts Technischer Hintergrund Datenbanksystem ERD Datenbankanbindung.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Folgendes kann missbraucht werden: formulare unverschlüsselte login-informationen ungeschützte includes SQL-injection reto ambühler
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Präsentation von Lukas Sulzer
Purga - Scriptengine Ein Einblick.
Einführung in PHP.
Einführung in PHP 5.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Hacking InfoPoint Jörg Wüthrich Infopoint - Hacking - Jörg Wüthrich 2/26 Inhalte Rund um das Thema Hacking Angriffs-Techniken Session.
ü Datenverlust Schadprogramme Defekte Datenträger Ursachen
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Quelle: xkcd.com SQL Injections.
Internet-Grundtechnologien. Client / Server Client („Kunde“): fordert Information / Datei an im Internet: fordert Internetseite an, z.B.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Sniffing & Spoofing Workshop
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
Rechen- und Kommunikationszentrum (RZ) Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen.
Implementieren von Klassen
 Präsentation transkript:

Student Technology Conference 2004 Daniel Kirstenpfad Writing Secure Code

Agenda Gefahren und Szenarien Gegenmaßnahmen - Verteidigung Threat Modelling

Gefahren und Szenarien Gefahren ergeben sich aus: –Eingaben allgemein –allem anderen Gefahren lauern nahezu überall Sicherheit entsteht nicht von alleine

Gefahren und Szenarien Beispiele für solche Probleme: –Buffer Overflow –SQL Injection –Arithmetik Fehler overflow/underflow BlakeBlake drop table Daten --

Gefahren und Szenarien Buffer OverrunsTotal Vulnerabilities Quelle: CERT

Gefahren und Szenarien Was sind Buffer Overflows ? –treten auf, wenn Daten die erwartete Größe überschreiten und andere Werte überschreiben –Tritt überall dort auf wo direkt auf den Speicher zugegriffen werden kann –4 Typen Stack Overflow Heap Overflow V-Table/Function Pointer Overflows Exception Handling Overflows

Gefahren und Szenarien Beispiel: Stack Buffer Overflow bei der Arbeit: Höhere Adressbereiche Buffer Andere vars EBP EIP Args void oflow(char *p, int i) { int j = 0; CFlow oflow; int (*fp)(int) = &func; char b[16];}

Gefahren und Szenarien Beispiel: Stack Buffer Overflow bei der Arbeit: Höhere Adressbereiche Buffers Andere vars EBPEIP Args Rücksprung Adresse Exception handlers Function pointers Virtual methods 0wn3d!

Gefahren und Szenarien Ergebniss eines Buffer Overflows –Mit viel Glück erhält man einen Speicherzugriffs Fehler Denial Of Service (DoS) –Mit weniger Glück wird das Programm instabil –Mit ausgesprochenem Pech kann der Angreifer seinen Code in dein Prozess einfügen und ausführen

Gefahren und Szenarien Beispiel-Quelltext für einen Buffer Overflow // cchAttribute enthält die Anzahl der vom User eingegebenen // Zeichen WCHAR wcsAttribute[200]; if ( cchAttribute >= sizeof wcsAttribute) THROW( CException( DB_E_ERRORSINCOMMAND ) ); DecodeURLEscapes( (BYTE *) pszAttribute, cchAttribute, wcsAttribute,webServer.CodePage());... void DecodeURLEscapes( BYTE * pIn, ULONG & l, WCHAR * pOut, ULONG ulCodePage ) { WCHAR * p2 = pOut; ULONG l2 = l;... for( ; l2; l2-- ) { (aus der Index Server ISAPI)

Gefahren und Szenarien Beispiel-Quelltext für einen Buffer Overflow (aus der Index Server ISAPI) // cchAttribute enthält die Anzahl der vom User eingegebenen // Zeichen WCHAR wcsAttribute[200]; if ( cchAttribute >= sizeof wcsAttribute / sizeof WCHAR) THROW( CException( DB_E_ERRORSINCOMMAND ) ); DecodeURLEscapes( (BYTE *) pszAttribute, cchAttribute, wcsAttribute,webServer.CodePage());... void DecodeURLEscapes( BYTE * pIn, ULONG & l, WCHAR * pOut, ULONG ulCodePage ) { WCHAR * p2 = pOut; ULONG l2 = l;... for( ; l2; l2-- ) { FIXED!

Gefahren und Szenarien Was ist eine SQL Injection ? –SQL Anweisungen werden über Benutzereingaben eingeschleust –Wird dazu benutzt um: Spionage von Daten in Datenbanken zu betreiben Authorisierungen zu umgehen stored Procedures auszuführen

Gefahren und Szenarien Beispiel für eine SQL Injection: Wenn die Variable ID direkt aus dem Textfeld eines Web- oder Windows-Formulars gelesen wird, können die Benutzer folgenden Code eingeben: username username' or 1=1 -- username' DROP TABLE Bestellungen -- username' exec xp_cmdshell('fdisk.exe') -- sqlString = "SELECT HasShipped FROM" + " OrderDetail WHERE OrderID ='" + ID + "'";

Gefahren und Szenarien Beispiel Quelltext für eine SQL Injection string Status = "No"; string sqlstring =""; try { SqlConnection sql= new source=localhost;" + "user id=sa;password=password;"); sql.Open(); sqlstring="SELECT HasShipped" + " FROM detail WHERE ID='" + Id + "'"; SqlCommand cmd = new SqlCommand(sqlstring,sql); if ((int)cmd.ExecuteScalar() != 0) Status = "Yes"; } catch (SqlException se) { Status = sqlstring + " failed\n\r"; foreach (SqlError e in se.Errors) { Status += e.Message + "\n\r"; } } catch (Exception e) { Status = e.ToString(); }

Gefahren und Szenarien Managed Code –Code Access Security != Secure Code überprüfbaren Code verwenden (verified) hilft der CLR dabei Sicherheit zu schaffen –reduziert Möglichkeiten von Buffer Overruns –Ob überprüfbarer Code verwendet werden kann/wird hängt von der verwendeten Sprache ab

Gefahren und Szenarien Managed Code –VisualBasic.NET generell überprüfbar –C# überprüfbar, ausgenommen ist unsafe –C++ ist generell nicht überprüfbar Geplant für zukünftige Versionen

Gefahren und Szenarien Managed Code –Vorsicht vor AllowPartialTrust Aufrufen –Vorsicht vor Abhängigkeiten und Verkettungen –FxCop: nützliches Tool um Probleme vorab zu finden

Gefahren und Szenarien FxCop -

Gegenmaßnahmen - Verteidigung Vorbeugen ist die beste Verteidigung Sprachen/Technologien ohne direkten Speicherzugriff bzw. mit Speicherschutz verwenden (z.B..NET / C#) Keine als anfällig bekannte Funktionen verwenden, z.B. bei C/C++: –Strcpy, strncpy, CopyMemory, MultiByteToWideChar Es gibt Werkzeuge die vom Compiler zur Verfügung gestellt werden (Static Checks) Bei Visual C++ mit Compiler-Option /GS

Gegenmaßnahmen - Verteidigung Es gibt Werkzeuge die vom Compiler zur Verfügung gestellt werden (Static Checks) Bei Visual C++ mit Compiler-Option /GS schützt bspw. vor Slammer,Blaster,CodeRed In-Memory Cookies verwenden Auch Heap-Cookies genannt Einige Buffer-Overruns können so erkannt werden Heap-basierte Attacken werden zuverlässig erkannt

Gegenmaßnahmen - Verteidigung Wenn Sprachen mit direkten Speicherzugriff bzw. Sprachen die als anfällig bekannt sind verwendet werden müssen: –checked Speicherzugriffs-Bibliotheks- Funktionen benutzen Bspw. strsafe.h bei C Erkennen wenn Speicherbereiche überschrieben worden sind Exception

Gegenmaßnahmen - Verteidigung Geschützten Speicher verwenden (Windows 2003, neue Prozessoren (Itanium,K8), in Win XP SP2 enthalten) –Trennung von Code und Datenspeicher (non- executable Memory) –Wenn der Angreifer seinen Code in den Speicher des angegriffenen Rechners schreiben kann kann er ihn wenigstens nicht ausführen

Gegenmaßnahmen - Verteidigung Daten und Code an zufälligen Speicheradressen ablegen –Macht die Ausführung weniger vorhersagbar Es werden wahrscheinlich nur 5% aller Maschinen erfolgreich attackiert, statt 100% –Besonders bei Buffer Overflows ist es wichtig möglichst viel über Speicheradressen zu wissen Beispiel: Xbox Dashboard Exploit

Gegenmaßnahmen - Verteidigung Überprüfung der Daten –JEDE Eingabe ist böse, solange nicht das Gegenteil bewiesen ist –authentifizierte Verbindungen benutzen –Jede Eingabe prüfen: nach gültigen Eingaben suchen, alles andere verwerfen –keine Annahmen über Eingaben machen –niemals direkt Eingaben wieder ausgeben, erst prüfen

Gegenmaßnahmen - Verteidigung WICHTIG KNOW YOUR WEAK SPOTS

Gegenmaßnahmen - Verteidigung Threat Modelling –Methodik um Sicherheitsaspekte zu analysieren –Hilft zu verstehen wo Angriffspunkte bestehen oder entstehen Lücken und Probleme aufzeigen –Ziel ist die Reduzierung der Sicherheits-Risiken

Gegenmaßnahmen - Verteidigung Threat Modelling Prozess Vorhandene Strukturen identifizieren 1 Übersicht der Architektur anfertigen 2 Applikation auseinandernehmen 3 Bedrohungen identifizieren 4 Bedrohungen dokumentieren 5 Bedrohungen einstufen 6

Gegenmaßnahmen - Verteidigung Schritt 1: Vorhandene Strukturen identifizieren –Eine Liste anfertigen welche Teile überhaupt geschützt werden müssen: Sicherheitsrelevante Daten (z.B. Kundendaten) Web-Seiten Teile die die Verfügbarkeit beeinflussen Alles andere, das, wenn es kompromittiert würde den korrekten Programm-Ablauf beeinflusst

Gegenmaßnahmen - Verteidigung Schritt 2: Übersicht der Architektur anfertigen –Was tut die Applikation –Architektur-Diagramm:

Gegenmaßnahmen - Verteidigung Schritt 3: Applikation auseinandernehmen –Die Applikation komplett zerlegen –Sicherheits-Profil basierend auf den traditionellen Bereichen von Angriffen anfertigen –Abläufe zwischen Subsystemen untersuchen –Bspw. UML Diagramme nutzen

Gegenmaßnahmen - Verteidigung Schritt 3: Applikation auseinandernehmen Vertrauens-Grenzen erkennenDatenfluss analysierenEingstiegspunkte/EingabenSicherheitsprofil

Gegenmaßnahmen - Verteidigung Schritt 4: Bedrohungen identifizieren –Netzwerk-Bedrohungen eventuell benutzte Protokolle –Lokale Bedrohungen Trojaner usw. –Applikations-spezifische Bedrohungen Kundendaten in eigener Datenbank bspw.

Gegenmaßnahmen - Verteidigung Schritt 4: Bedrohungen identifizieren –S.T.R.I.D.E. Bedrohungsarten Beispiele Spoofing fälschen von s Authentifizierungen mithören Tampering Daten wärend der Übermittlung verändern (Man in the Middle) Daten auf Festplatte verändern Repudiation User gibt vor bestimmte Aktionen nicht ausgeführt zu haben Gegenteil kann nicht bewiesen werden Information disclosure zuviele Informationen in Fehlermeldungen Quellcode auf Webseiten Denial of Service Flooding: überfluten des Netzwerkes mit Packeten Elevation of privilege System/Administrator Rechte durch Exploit erlangen

Gegenmaßnahmen - Verteidigung Schritt 4: Bedrohungen identifizieren –Attack-Trees

Gegenmaßnahmen - Verteidigung Schritt 5: Bedrohungen dokumentieren BeschreibungSQL Injection Ziel Datenzugriff / Subsystem das für den Datenbankzugriff zuständig ist Risiko(nächstes Slide) Techniken Angreifer fügt SQL Kommandos zu Eingaben hinzu welche genutzt werden um SQL Anfragen zu stellen. Gegenmassnahme Regular Expression benutzen um Eingabe zu validieren und stored Procedure mit Parametern benutzen um auf die Datenbank zuzugreifen

Gegenmaßnahmen - Verteidigung Schritt 6: Bedrohungen einstufen –Formel: Risiko = Wahrscheinlichkeit * Zerstörungspotential –D.R.E.A.D. Schema benutzen: Damage potential Reproducibility Exploitability Affected Users Discoverability

Gegenmaßnahmen - Verteidigung Thread Modelling –Hilft dabei die gefährdetsten Teile der Applikation zu finden –Prioritäten erkennen

Gegenmaßnahmen - Verteidigung Vielen Dank.