Wieso Informatiker bei derInformationssicherheit scheitern
Ein Erklärungsversuch für die Realität• Bitte keine Gegenstände werfen
RAHMENBEDINGUNGEN
Management• Geld / Zeit• Sicherheitsschulungen• Zu viele/wenige/generelleSicherheitsrichtlinien• Outsourcing
ProgrammierungUnsichererCodeFehlerNichtfunktionsfähigerCode
„Hacking ist nicht real“• Hacking-Agnostiker gibt es tatsächlich noch• Statistiken• Medien– Jailbreak– Anonymous• Verborge...
Komplexität• Abstraktion ist König• Fehler: Erwarten valide Inputs
ONLINEInformationsquelle
Why it’s easy being a hacker [1]
Why it’s easy being a hacker [1]• Google „How to use PHP with MySQL“• Min. 5 von 10 SQL Injection
Datei-Upload• Google „How to do a file upload in PHP“• Min. Sicherheitskriterien– Dateiendung überprüfen– MIME-type überpr...
Datei-Upload• Web Root, keine Checks (SecurityWarnung)• Web Root, keine Checks• Web Root, keine Checks, chmod 777, XSS• We...
Wikipedia
BÜCHERDann eben doch die Informationsquelle
Why it’s easy being a hacker [1]• 3 von 6 SQL Injection
Programming Python S. 18• "[…] eval call […] is potentially unsafe; youshouldnt use eval if you cant be sure [...]wont con...
Programming Python S. 38/39• eval(benutzereingabe)• Demo 1
Programming Python Autor• "eval() reflects a classic tradeoff betweensecurity and power. In an early book example,security...
Die Suche nach dem sicheren eval• Google „python safe eval“– eval(benutzereingabe,{"__builtins__":None},{})– Demo 2
Exploit[x for x in (1).__class__.__base__.__subclasses__() ifx.__name__ ==Pattern][0].__init__.__globals__[__builtins__][_...
PROGRAMMIER-BIBLIOTHEKENOder Hilfsmittel
OpenSSL [2]• Rückgabewert von SSL_connect– Kann OK (1) zurückgeben• Setzt intern aber "verify result" flags• SSL_get_ veri...
GnuTLS [2]• Rückgabewert vongnutls_certificate_verify_peers2(tls_status)– Kann OK (0) zurückgeben• tls_status enthält jedo...
cURL [2]• CURLOPT_SSL_VERIFYPEER– Richtig: True• CURLOPT_SSL_VERIFYHOST– Richtig: 2• Opfer– Amazon Flexible Payments Servi...
Java Secure Socket Extension (JSSE) [2]• Grundsätzlich keine Hostnamenüberprüfung fürSSLSocketFactory– Java 6  Exception ...
SAML-Frameworks [3]• 11 von 14 enthielten Schwachstellen• Beispiel Opfer:– OpenSAML• Shibboleth– SuisseID
HERSTELLERDOKUMENTATIONENAber wenigstens
Nochmal SSL [2]• Apache XFire  Apache CXF
Apple Idiotenvektor [4]• InitialisierungsVektor (IV)• 1 von 2 Programmierbüchern
Letzthin im #python IRC-Chat• Unterschied von input() in Python2 undPython3• "the fact that we didnt remove input() frompy...
DEP, ASLR und Konsorten• Müssen aktiviert werden• 2 unabhängige Buffer Overflows– Auf 3 von 4 Plattformen à la 1995
PROGRAMMIERUNG GEHT AUCHOHNE SECURITYLeider,
Referent – meine erste Homepage• Passwörter im Klartext<form name="gbook" method="post" action="<?php echo$_SERVER[PHP_SEL...
Kryptografischer HorrorPasswort MD5 Resultat: MD5 HASH von PasswortCRC32 Resultat: CRC32 vom MD5 HashSHA1Resultat: SHA1 Ha...
Web Server Horror#!/usr/bin/perl -wuse strict vars; use strict subs; use CGI :standard’;use CGI::Carp qw(fatalsToBrowser);...
FAZITUnd jetzt?
Gegenmassnahmen• KISS• Kein blindes kopieren unabhängig von Quelle– Verstand/Sicherheitssicht/Kollegen nutzen• Sicherheits...
int 3• Twitter: @floyd_ch• tobias@modzero.ch• Twitter: @mod0• http://www.modzero.ch
Quellen• [Pointing finger picture] http://www.workingkansans.com/2012/03/house-republicans-pointing-fingers-after-failing-...
Upcoming SlideShare
Loading in...5
×

Wieso Informatiker bei der Informationssicherheit scheitern

828

Published on

Sicherheitsprobleme verfolgen uns bereits seit vielen Jahren. Warum existieren immer noch unsichere Programme? Wieso scheitern Informatiker an der korrekten Programmierung? Warum passieren immer wieder dieselben Fehler? Der Vortrag dreht sich insbesondere um verschiedene Informationsquellen, deren Problematik und konkrete, technische Beispiele.

Referent: Tobias Ospelt

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
828
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Wieso Informatiker bei der Informationssicherheit scheitern

  1. 1. Wieso Informatiker bei derInformationssicherheit scheitern
  2. 2. Ein Erklärungsversuch für die Realität• Bitte keine Gegenstände werfen
  3. 3. RAHMENBEDINGUNGEN
  4. 4. Management• Geld / Zeit• Sicherheitsschulungen• Zu viele/wenige/generelleSicherheitsrichtlinien• Outsourcing
  5. 5. ProgrammierungUnsichererCodeFehlerNichtfunktionsfähigerCode
  6. 6. „Hacking ist nicht real“• Hacking-Agnostiker gibt es tatsächlich noch• Statistiken• Medien– Jailbreak– Anonymous• Verborgenheit– Argument der Eintretenswahrscheinlichkeit– Dunkelziffer
  7. 7. Komplexität• Abstraktion ist König• Fehler: Erwarten valide Inputs
  8. 8. ONLINEInformationsquelle
  9. 9. Why it’s easy being a hacker [1]
  10. 10. Why it’s easy being a hacker [1]• Google „How to use PHP with MySQL“• Min. 5 von 10 SQL Injection
  11. 11. Datei-Upload• Google „How to do a file upload in PHP“• Min. Sicherheitskriterien– Dateiendung überprüfen– MIME-type überprüfen– Nicht in Web Root ablegen– Keine Manipulation des Speicherorts• 6 von 10 unsicher
  12. 12. Datei-Upload• Web Root, keine Checks (SecurityWarnung)• Web Root, keine Checks• Web Root, keine Checks, chmod 777, XSS• Web Root, kein MIME-Check, XSS• Irrelevant• Video• Keine Checks, XSS• Web Root, keine Checks, SQL Injection,Manipulation Speicherort• Web Root, keine Checks, chmod 777,Manipulation Speicherort• Web Root, keine Checks, ManipulationSpeicherort
  13. 13. Wikipedia
  14. 14. BÜCHERDann eben doch die Informationsquelle
  15. 15. Why it’s easy being a hacker [1]• 3 von 6 SQL Injection
  16. 16. Programming Python S. 18• "[…] eval call […] is potentially unsafe; youshouldnt use eval if you cant be sure [...]wont contain malicious code […]"• Ähnlich auf Seite 49
  17. 17. Programming Python S. 38/39• eval(benutzereingabe)• Demo 1
  18. 18. Programming Python Autor• "eval() reflects a classic tradeoff betweensecurity and power. In an early book example,security seems a minor topic, and perhaps lessimportant to illustrate than language power."
  19. 19. Die Suche nach dem sicheren eval• Google „python safe eval“– eval(benutzereingabe,{"__builtins__":None},{})– Demo 2
  20. 20. Exploit[x for x in (1).__class__.__base__.__subclasses__() ifx.__name__ ==Pattern][0].__init__.__globals__[__builtins__][__import__](os).system(cd /; python -m SimpleHTTPServer)
  21. 21. PROGRAMMIER-BIBLIOTHEKENOder Hilfsmittel
  22. 22. OpenSSL [2]• Rückgabewert von SSL_connect– Kann OK (1) zurückgeben• Setzt intern aber "verify result" flags• SSL_get_ verify_result nötig• Opfer– Trillian
  23. 23. GnuTLS [2]• Rückgabewert vongnutls_certificate_verify_peers2(tls_status)– Kann OK (0) zurückgeben• tls_status enthält jedoch Fehler Code• Opfer– Lynx Browser
  24. 24. cURL [2]• CURLOPT_SSL_VERIFYPEER– Richtig: True• CURLOPT_SSL_VERIFYHOST– Richtig: 2• Opfer– Amazon Flexible Payments Service SDK für PHP– PayPal Payments Standard– PayPal Invoicing für PHP– PayPal IPN in ZenCart
  25. 25. Java Secure Socket Extension (JSSE) [2]• Grundsätzlich keine Hostnamenüberprüfung fürSSLSocketFactory– Java 6  Exception wenn Protokoll unklar (HTTPS/LDAPS)– Java 7  Keine Exception• Opfer– Apache HttpClient Version 3• Weberknecht• Apache Axis– PayPal’s Java SDKs• Apache Axis 2• Codehaus XFire <= 1.2.6– Amazon EC2 API Tools– Amazon Flexible Payments Service• ...
  26. 26. SAML-Frameworks [3]• 11 von 14 enthielten Schwachstellen• Beispiel Opfer:– OpenSAML• Shibboleth– SuisseID
  27. 27. HERSTELLERDOKUMENTATIONENAber wenigstens
  28. 28. Nochmal SSL [2]• Apache XFire  Apache CXF
  29. 29. Apple Idiotenvektor [4]• InitialisierungsVektor (IV)• 1 von 2 Programmierbüchern
  30. 30. Letzthin im #python IRC-Chat• Unterschied von input() in Python2 undPython3• "the fact that we didnt remove input() frompython2 a long time ago is crazy.“
  31. 31. DEP, ASLR und Konsorten• Müssen aktiviert werden• 2 unabhängige Buffer Overflows– Auf 3 von 4 Plattformen à la 1995
  32. 32. PROGRAMMIERUNG GEHT AUCHOHNE SECURITYLeider,
  33. 33. Referent – meine erste Homepage• Passwörter im Klartext<form name="gbook" method="post" action="<?php echo$_SERVER[PHP_SELF]; ?>">
  34. 34. Kryptografischer HorrorPasswort MD5 Resultat: MD5 HASH von PasswortCRC32 Resultat: CRC32 vom MD5 HashSHA1Resultat: SHA1 Hash von CRC32substr($input, 0, 3) substr($input, 4)$cryptedpw = $part2 + $part1 + $part2Beispiel:"00FE" + "12AB" = "12"Richtig wäre:"00FE" . "12AB" = "00FE12AB"CRC32 Resultat: CRC32
  35. 35. Web Server Horror#!/usr/bin/perl -wuse strict vars; use strict subs; use CGI :standard’;use CGI::Carp qw(fatalsToBrowser);use constant DOWNLOAD_DIR => q{/tmp/path/};my $B = param(B);$B =~ s/^/+//g;my $filen = DOWNLOAD_DIR . "/" . $B;my $basename = `basename $B`;my $size = (stat($filen))[7];open(DLFILE, "<$filen") or Error("Kann $B nichtoeffnen.");if($B =~ /.sik$/o) {} else { unlink($filen);}my $filedata = do { local $/; <DLFILE> };print "Content-Length: $sizen";print $filedata;exit 0;
  36. 36. FAZITUnd jetzt?
  37. 37. Gegenmassnahmen• KISS• Kein blindes kopieren unabhängig von Quelle– Verstand/Sicherheitssicht/Kollegen nutzen• Sicherheitsmechanismen an lassen• Sicherheitsmechanismen an machen• Sicherheitsthemen zur Arbeit suchen• Schulungen– Awareness– Eigene Security-Tests, richtige Hilfsmittel– Secure Development• Penetration Testing
  38. 38. int 3• Twitter: @floyd_ch• tobias@modzero.ch• Twitter: @mod0• http://www.modzero.ch
  39. 39. Quellen• [Pointing finger picture] http://www.workingkansans.com/2012/03/house-republicans-pointing-fingers-after-failing-to-read-2-page-bill/• [bobby tables] http://xkcd.com/327/• [APT1] http://intelreport.mandiant.com/Mandiant_APT1_Report.pdf• [Suspicious owl] http://www.troll.me/2012/03/01/a-suspicious-owl/everythings-just-fine-thats-suspicious/• [Skimasken-Hacker] http://best9.wordpress.com/2011/01/16/top-10-hackers/• [Not funny when you‘re next] http://thepowerofapostrophe.blogspot.no/• [Executing 41414141] http://nickfnord.wordpress.com/2008/10/17/buffer-overflow-basics-part-1/• [1] http://www.securesolutions.no/why-its-easy-being-a-hacker/• [2] https://crypto.stanford.edu/~dabo/pubs/abstracts/ssl-client-bugs.html• [3] http://www.nds.rub.de/research/publications/BreakingSAML/• [4]http://www.modzero.ch/modlog/archives/2011/11/04/the_apple_idioten_vektor_iv/index.html• [5] http://www.opensource.apple.com/source/CommonCrypto/CommonCrypto-36064/CommonCrypto/CommonCryptor.h
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×