Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

5 Security-Todsünden in der Softwareentwicklung

Ähnliche Präsentationen


Präsentation zum Thema: "5 Security-Todsünden in der Softwareentwicklung"—  Präsentation transkript:

1 5 Security-Todsünden in der Softwareentwicklung
Dirk Primbs Developer Evangelist Microsoft Deutschland GmbH

2 Agenda 5 Sünden Demos  Fazit

3 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

4 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++; !!!

5 Sünde #1: Der Buffer Overrun

6 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?

7 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:

8 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

9 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

10 (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

11 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 }

12 Sünde #2: Integer Overflow

13 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

14 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

15 Demo: Arithmetic Overflows

16 Spot the security bug  CREATE PROCEDURE nvarchar(128)) AS nchar(256) ccnum from cust where id=‘‘‘ + ‘‘‘‘ RETURN

17 Sünde #3: Command Injection

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

19 Demo: Command Injection

20 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);

21 Sünde #4: Information Leakage

22 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); }

23 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!

24

25

26

27 <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

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

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

30 Spot the security bug 

31 Sünde #5: Schlechte Bedienbarkeit

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

33

34

35

36 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

37 Weitere Informationen
19 Deadly Sins Of Software Security ISBN Microsoft Security Developer Center

38 Fragen?

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


Herunterladen ppt "5 Security-Todsünden in der Softwareentwicklung"

Ähnliche Präsentationen


Google-Anzeigen