5 Security-Todsünden in der Softwareentwicklung

Slides:



Advertisements
Ähnliche Präsentationen
IT-Sicherheit Web Service Security
Advertisements

Sichere IT Infrastrukturen – was der Entwickler wissen sollte
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
1 Datenbankapplikationen 9.1MS Visio 9.2MS Access 9.3Embedded SQL 9.4JDBC 9.5Cold Fusion 9.6PHP.
PL/SQL - Kurze Einführung -.
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
Agenda Sitzung 2 für den Programmaufbau
Entwicklung und Einsatz von Smart Client-Anwendungen Jens Häupel Developer Evangelist Microsoft Deutschland GmbH Dirk Primbs.
Windows Vista für Entwickler
MGB 2003 Viren, Würmer, SP2 Uwe Baumann Dirk Primbs .NET Community Evangelists Microsoft Deutschland GmbH © 2004.
Student Technology Conference 2004 Daniel Kirstenpfad Writing Secure Code.
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
Microsoft Academic Program VS.NET Tools Student Technology Conference 2005 Neno Loje Microsoft Student Partner Universität Hamburg.
Sicherheit als Geschäftsmodell
Mit Sicherheit – Ein Blick in die Zukunft Michael Kalbe & Dirk Primbs.
HCI.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Dipl. Inf. (FH) Paul Mizel Compilerbau.NET Compiler / Codegeneratoren / Skriptsprachen.
Binäre Bäume Richard Göbel.
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Installation des Add-In SOLVERSTAT
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 9 IO – Streams in Java Sommersemester 2003 Lars Bernard.
Dynamische Webseiten Java servlets.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Objektorientierte Programmierung JDK-Klassenbibliothek
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Einführung in Visual C++
Modulare Programmierung
Kapitel 8: Web-Anwendungen mit SQL und PHP
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Presenter: Daniel Walzenbach Technologieberater
Version 5. Internal use only Network Support Center All rights reserved, property and © CAD-Computer GmbH CFR 11, ERES Electronic Record Electronic.
Smart 2 Unit 2 What a week! – That’s why Barker barked!
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Microsoft Security Tools Christian Thor Systems Engineer Microsoft GmbH.
Martin LöfflerMurat Yilmaz Labor Informationstechnologie.
RateMe Slides. Ablauf Präsentation des Konzepts (5-10 min) Demonstration der laufenden Software (5-10 min) Fazit der gesammelten Erkenntnisse.
RateMe Slides. Ablauf Präsentation des Konzepts (5-10 min) Demonstration der laufenden Software (5-10 min) Fazit der gesammelten Erkenntnisse.
Jan Hentschel Microsoft Expert Student Partner Windows Azure Windows Azure Windows Azure Mobile Services.
| Basel Developing apps for SharePoint 2013 using Visual Studio 2013 René Modery, Office 365 MVP, 1stQuad Solutions.
Frank Fischer + Bernhard Frank Microsoft Deutschland GmbH.
HandsOn Cloud, Infrastruktur, Architektur, Solution Design SharePoint for Internet Sites: Erfahrung aus der Praxis.
Dominick Baier Security Consultant thinktecture. 2 Wir unterstützen Software-Entwickler und Architekten bei der Realisierung von.NET- und Web Services-Projekten.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Grundlagen der Informatik 4 Lehrstuhl für Betriebssysteme 1 Wie werden Funktionen realisiert? Beispiel: int maximum(int x, int y) { int j = x; if (y >
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Exception Handling in Java
Real Time Operating System
Template v5 October 12, Copyright © Infor. All Rights Reserved.
Cyber-Security und Datenschutz in der Cloud Wie passt das zusammen?
Einführung in das Wissenschaftliche Arbeiten Andreas Hechenblaickner Programmiersprache Eiffel
Making people work together! Folie 1 NEXPLORE AG Stefan von Niederhäusern Einfache Anwendung der SuisseID durch das Software Development KIT
Travelling Salesman Problem (TSP)
RateMe Slides. Ablauf Präsentation des Konzepts (5-10 min) Demonstration der laufenden Software (5-10 min) Fazit der gesammelten Erkenntnisse.
1 1 Panda Managed Office Protection Switch from Antivirus to Security as a Service Sales training presentation.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH
IT Security Cross Protocol Scripting & NAT Pinning Emanuel Klein.
Sichere Datenübertragung in der Cloud
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH
Herzlich willkommen! Windows Server 2016, System Center 2016 & Windows 10 Berlin,
Security Labor MitM-Demonstration
Tutorstunde 10.
 Präsentation transkript:

5 Security-Todsünden in der Softwareentwicklung Dirk Primbs Developer Evangelist Microsoft Deutschland GmbH dirkp@microsoft.com http://blogs.msdn.com/dirkpr

Agenda 5 Sünden Demos  Fazit

Richtlinien, Verfahren und Bewusstsein IT-Sicherheit Richtlinien, Verfahren und Bewusstsein Physische Sicherheit Daten ACL, Verschlüsselung Anwendungshärtung, Antivirussoftware Anwendung Betriebssystemhärtung, Authentifizierung, Patchverwaltung, HIDS Host Internes Netzwerk Netzwerksegmente, IPSec, NIDS Perimeter Firewalls, VPN-Quarantäne Sicherheitskräfte, Schlösser, Überwachungsgeräte Benutzerschulung

Port 135 (Z.B. aus dem Internet) Spot the security bug  Port 135 (Z.B. aus dem Internet) error_status_t _RemoteActivation(WCHAR *pwszObjectName, ... ) { *phr = GetServerPath(pwszObjectName, &pwszObjectName); … } HRESULT GetServerPath(WCHAR *pwszPath, WCHAR **pwszServerPath ){ WCHAR * pwszFinalPath = pwszPath; WCHAR wszMachineName[MAX_COMPUTERNAME_LENGTH_FQDN + 1]; hr = GetMachineName(pwszPath, wszMachineName); *pwszServerPath = pwszFinalPath; } HRESULT GetMachineName( WCHAR * pwszPath, WCHAR wszMachineName[MAX_COMPUTERNAME_LENGTH_FQDN + 1]) { pwszServerName = wszMachineName; LPWSTR pwszTemp = pwszPath + 2; while ( *pwszTemp != L'\\' ) *pwszServerName++ = *pwszTemp++; !!!

Sünde #1: Der Buffer Overrun

Buffer Overrun: Das Prinzip [1] void main() { char myLongBuffer[256]; myFunction(myBuffer); } void myFunction(char *myString) { char myShortBuffer[16]; strcpy(myShortBuffer, myString); Was passiert, wenn der übergebene String größer als 16 Zeichen ist?

Buffer Overrun: Das Prinzip [2] Stack void main() { char myLongBuffer[256]; myFunction(myLongBuffer); } Strings MyShortBuffer Gehackte Adresse MyShortBuffer 16 MyShortBuffer 16 256 void myFunction(char *myString) { char myShortBuffer[16]; strcpy(myShortBuffer, myString); } Sonstige Daten Virus ausführen Rücksprungadresse 256 MyLongBuffer Daten sind zu lang ! Rücksprung an gehackte Adresse… (bisheriger Stackinhalt) Stack Gehackte Adresse Viruscode „Böser“ Inhalt von MyShortBuffer:

Ein erprobter Ansatz Bergarbeiter mit Kanarienvogel (Welsh Miner‘s Canary) Prinzip: Vogel tot = zuviel Methangas Quelle: West Virginia Office of Miners’ Health, Safety and Training

Maßnahmen gegen BOs Bestimmte C/C++ Kommandos sind besonders anfällig strcpy, gets, scanf, sprintf, strcat, … BOs werden in Managed Code durch Laufzeitchecks verhindert. Compilerswitch /GS aktiviert in Visual C/C++ verbessertes Stackhandling Static Analysis mit Prefast

(bisheriger Stackinhalt) Compilerswitch /GS Stack void myFunction(char *myString) { char myShortBuffer[16]; strcpy(myShortBuffer, myString); } MyShortBuffer Strings MyShortBuffer 16 Security Cookie Prolog: Alloziiert Speicher auf dem Stack für lokale Variablen und speichert Zufallswert für Security Cookie (Canary) ab sub esp,24h mov eax,dword ptr [___security_cookie (408040h)] xor eax,dword ptr [esp+24h] mov dword ptr [esp+20h],eax Prolog: Alloziiert Speicher auf dem Stack für lokale Variablen sub esp,20h Rücksprungadresse 256 MyLongBuffer (bisheriger Stackinhalt) Stack Epilog: Prüft den Security Cookie (Canary) und führt anchließend Rücksprung durch mov ecx,dword ptr [esp+20h] xor ecx,dword ptr [esp+24h] add esp,24h jmp __security_check_cookie (4010B2h) Epilog: Führt Rücksprung durch add esp,20h ret

Spot the security bug  void LookupPath(string computer, string path) { const int max_size = 63; byte len = (byte)(computer.Length + path.Length); if (len > max_size) throw new SecurityException("Pfad zu lang!"); // irgendwas sinnvolles }

Sünde #2: Integer Overflow

Das Prinzip [1] Implizite und explizite Casts können Werte unerwartet verändern In jeder gebräuchlichen Programmiersprache finden sich derartige Überläufe vorzeichenbehaftete Datentypen sind hauptsächlich anfällig

Das Prinzip [2] Vorzeichenbehaftete Datentypen nutzen das erste Bit als Vorzeichen Beim Cast von unsignierte auf signierte Datentypen ändert sich so die Bedeutung des Datums Beim Upcast wird das oberste Bit um ein Vorzeichenbit erweitert

Demo: Arithmetic Overflows

Spot the security bug  CREATE PROCEDURE dbo.doQuery(@id nvarchar(128)) AS DECLARE @query nchar(256) SELECT @query=‚select ccnum from cust where id=‘‘‘ + @id + ‘‘‘‘ EXEC @query RETURN

Sünde #3: Command Injection

Das Prinzip Durch geschickte Wahl von Benutzereingaben den Sinn damit arbeitender Operationen verändern Prominente Vertreter: SQL Injection Format String Probleme Cross Site Scripting

Demo: Command Injection

Spot the security Bug  string status = "No"; string sqlstring = ""; try { // SQL Zugriffscode } catch (SqlException se) { Status = sqlstring + " failed\r\n"; foreach (SqlError e in se.Errors) Status += e.Message + "\r\n"; } if (Status.CompareTo("No") != 0) { Response.WriteLine(Status);

Sünde #4: Information Leakage

Lösung... try { // SQL Zugriffscode } catch (SqlException se) { Status = sqlstring + " failed\r\n"; foreach (SqlError e in se.Errors) Status += e.Message + "\r\n"; WindowsIdentity user = WindowsIdentity.GetCurrent(); WindowsPrincipal prin = new WindowsPrincipal(user); if (prin.IsInRole(WindowsBuiltInRole.Administrator)) Response.WriteLine(Status); else { Response.Write("An error occurred, please bug your admin"); EventLog.WriteEntry("SqlApp", Status, EventLogEntryType.Error); }

Das Problem Dem Nutzer wird zu viel Information präsentiert Versehentlich => z.B. Fehlermeldungen Absichtlich => Nutzerdaten Warum ist das problematisch? Hacker können zusätzliche Informationen erlangen die Angriffe erleichtern! Datenschutz!

<Vortragstitel> An electronics manufacturer owns some very expensive testing equipment that is used in production. Because the equipment is valuable, the security department decides that these assets will be most secured if access is limited to a few people. Smart cards and costly locks are used to protect the equipment room. Only one person per shift, a senior manager, is given a key. Ten other people on each shift need access to the room to perform their daily duties. They are not issued keys and must be escorted to the equipment room by a key holder. Initially policy is followed, but managers soon tire of escort duties. Productivity suffers when managers are unavailable to open the door. The security department resisted manager requests for more keys, so managers arranged with the people needing access to leave the key in an unmarked desk drawer. One day, while a manager and her employees are in a meeting, equipment was stolen from the room. The key was also taken. The security department investigated, but failed to find the thief. There was debate over whether to discipline the manager, who was the only person issued the key. The managers recoiled because they felt the policy negatively impacted productivity, and because they had followed the key-sharing practice. TechNet Roadshow zum Windows Server System: Migration, Deployment und Sicherheit

TMI – Too Much Information Benutzername oder Paßwort falsch? Versionsinformationen verwendeter Software IP-Adressen, MAC-Adressen, etc... Pfade Genaue Fehlermeldungen

Abhilfe? Informationen zur Fehlersuche an vertrauenswürdiger Stelle ablegen EventLog Ggf. Geeignet abgesichertes Logfile Informationen nur an Administratoren ausgeben

Spot the security bug 

Sünde #5: Schlechte Bedienbarkeit

Spot the security bug  Salopp übersetzt: Klick‘ „Ja“, und alles geht, klick‘ „Nein“ und Du hast nur Ärger mit der Seite

Zusammenfassung Viele Sicherheitsprobleme lassen sich einfach verhindern Kein Vertrauen in Eingabedaten! Schon während der Planung mögliche Angriffsszenarien berücksichtigen Das Gesamtsystem ist immer so sicher wie sein schwächstes Glied

Weitere Informationen 19 Deadly Sins Of Software Security ISBN 0-07-226085-8 Microsoft Security Developer Center http://msdn.microsoft.com/security/

Fragen?

<Vortragstitel> TechNet Roadshow zum Windows Server System: Migration, Deployment und Sicherheit