Säkerhet, eller nått. Tomas Forsman <stric@cs.umu.se> 2014-10-14
Vem är jag? SysAdm på CS sen 1999 SysAdm på ACC sen 1998 Gillar att undersöka saker Mest åt Linux/Unix-hållet med datorer
Programmerings-NM 2014 Lagnamn från KTH Omogen Heap
Programmerings-NM 2014 Lagnamn från NTNU/Trondheim ZALGO
Programmerings-NM 2014 Lagnamn från NTNU/Trondheim ZALGO 5 tecken, 44 bytes i UTF-8. Buffer overflow?
Programmerings-NM 2014 Lagnamn från Umeå <script>alert( :) )</script>
Programmerings-NM 2014 Lagnamn från Umeå <script>alert( :) )</script> Triggade XSS hos registreringssystemet som används för t.ex världsfinalen i programmering. Yay.
Programmerings-NM 2014 Lagnamn från Umeå () { :;}; :(){ : :& };:
Programmerings-NM 2014 Lagnamn från Umeå () { :;}; :(){ : :& };: Forkbombade tidigare nämnda regsystem.
Mer dumheter? SQL används ofta för att hantera data INSERT INTO Students (name) VALUES ($name);
Mer dumheter? SQL används ofta för att hantera data INSERT INTO Students (name) VALUES ('$name');
Mer dumheter? SQL används ofta för att hantera data INSERT INTO Students (name) VALUES ('$name'); INSERT INTO Students (name) VALUES ('Robert'); DROP TABLE Students; --
CGI, Common Gateway Interface CGI-script på webserver, hejmamma.cgi: #!/bin/bash echo "Content-type: text/plain" echo echo "Hej mamma" Ser någorlunda harmlös och säker ut...
Shellshock Buggen bash och liknande i media Expressen och Aftonbladet förvirrade mer än hjälpte Funnits 20+ år Kodar ner interna funktioner via miljövariabler till subprocesser, sen det omvända vid uppstart Verifierar inte att de kommer från rätt ställe, kör eval() på resten av funktionsdefinitionen Typ 6 olika säkerhetshål hittade där, allt eftersom folk lagade hål på fel sätt...
CGI, Common Gateway Interface CGI-script på webserver, hejmamma.cgi: #!/bin/bash echo "Content-type: text/plain" echo echo "Hej mamma" Ser någorlunda harmlös och säker ut... wget user-agent='() { :;};rm -rf /' http://mega-secure-site.se/hejmamma.cgi
DHCP Klient säger hej, jag har nätverkskort xyz, vad ska jag ha för ip-adress å jox?
DHCP Klient säger hej, jag har nätverkskort xyz, vad ska jag ha för ip-adress å jox? Förresten, här är lite ytterligare information '() { :;};rm -rf /'
Heartbleed Hej server, om du är kvar svara kex (3 bokst)
Heartbleed Hej server, om du är kvar svara kex (3 bokst) kex
Heartbleed Hej server, om du är kvar svara kex (3 bokst) kex Hej server, om du är kvar svara kaka (4 bokst)
Heartbleed Hej server, om du är kvar svara kex (3 bokst) kex Hej server, om du är kvar svara kaka (4 bokst) kaka
Heartbleed Hej server, om du är kvar svara kex (3 bokst) kex Hej server, om du är kvar svara kaka (4 bokst) Hej server, om du är kvar svara kaka (64000 bokst) kaka
Heartbleed Hej server, om du är kvar svara kex (3 bokst) kex Hej server, om du är kvar svara kaka (4 bokst) Hej server, om du är kvar svara kaka (64000 bokst) kaka kaka <efterföljande 64k data ur minnet>
Heartbleed Hej server, om du är kvar svara kex (3 bokst) kex Hej server, om du är kvar svara kaka (4 bokst) Hej server, om du är kvar svara kaka (64000 bokst) Ojdå. kaka kaka <efterföljande 64k data ur minnet>
Apple does SSL, OSX + ios... hashout.data = hashes + SSL_MD5_DIGEST_LEN; hashout.length = SSL_SHA1_DIGEST_LEN; if ((err = SSLFreeBuffer(&hashCtx))!= 0) if ((err = ReadyHash(&SSLHashSHA1, &hashctx))!= 0) if ((err = SSLHashSHA1.update(&hashCtx, &clientrandom))!= 0) if ((err = SSLHashSHA1.update(&hashCtx, &serverrandom))!= 0) if ((err = SSLHashSHA1.update(&hashCtx, &signedparams))!= 0) if ((err = SSLHashSHA1.final(&hashCtx, &hashout))!= 0) err = sslrawverify(...);...
Apple does SSL, OSX + ios... hashout.data = hashes + SSL_MD5_DIGEST_LEN; hashout.length = SSL_SHA1_DIGEST_LEN; if ((err = SSLFreeBuffer(&hashCtx))!= 0) if ((err = ReadyHash(&SSLHashSHA1, &hashctx))!= 0) if ((err = SSLHashSHA1.update(&hashCtx, &clientrandom))!= 0) if ((err = SSLHashSHA1.update(&hashCtx, &serverrandom))!= 0) if ((err = SSLHashSHA1.update(&hashCtx, &signedparams))!= 0) <----------------------------------------------------- Uh oh. if ((err = SSLHashSHA1.final(&hashCtx, &hashout))!= 0) err = sslrawverify(...);...
Apple does SSL, OSX + ios... hashout.data = hashes + SSL_MD5_DIGEST_LEN; hashout.length = SSL_SHA1_DIGEST_LEN; if ((err = SSLFreeBuffer(&hashCtx))!= 0) if ((err = ReadyHash(&SSLHashSHA1, &hashctx))!= 0) if ((err = SSLHashSHA1.update(&hashCtx, &clientrandom))!= 0) if ((err = SSLHashSHA1.update(&hashCtx, &serverrandom))!= 0) if ((err = SSLHashSHA1.update(&hashCtx, &signedparams))!= 0) <----------------------------------------------------- Uh oh. if ((err = SSLHashSHA1.final(&hashCtx, &hashout))!= 0) err = sslrawverify(...);...
Cross Site Scripting DNS Diverse key-value för olika slags information, vissa fritext Whois Uppslagning om vem som har hand om olika domäner https://www.youtube.com/watch?v=u4uq0p2yadk
DNS DNS: Skicka UDP-fråga med felaktig avsändare massa svar till offret Skicka svar i förhand från legitimt server DNSSEC Digitala signaturer för att verifiera
UDP/TCP/SSL/TLS UDP samma som vykort Välj mottagare & avsändare, lägg i brevlådan TCP Brevvän till fast brevlåda Måste stå vid brevlådan och loota SSL/TLS utan certifikatkoll Kolla legitimation, men skit i om det är ett svenskt pass eller om personen gjort den själv SSL/TLS med certifikatkoll Rek-brev, klart svårare att förfalska, men går
Göra rätt? Ha inte otur när ni tänker Inte omedelbart säkerhetshål, men: Laptop; gjorde suspend to disk (inkl BIOS), vid start gjorde den resume (inkl BIOS). Byt disk skriver över BIOS med blankt från den nya disken. Duh.
C strcpy strncpy (stack smash) Göra rätt? Hålla sig inom arrayer SQL Håll isär data och kod HTML Håll isär data och kod (svårt, HTML/CSS/JS/...) Allmänt Sanera indata, anta att andra sidan vill göra dumheter Sanera inte för hårt... Your name is invalid %!&*
Anta inte... UDP: Godtycklig avsändare, blockbaserad TCP: Strömbaserad, ej blockbaserad SSL/TLS: Hittepå-cert stoppar vissa, men inte alla Begränsning i HTML-formulär, eller JSverifiering? Client side security
Minska potentiella skador VM:ar med begränsad funktionalitet Jails/chroot / -- bin -- dev -- home `-- kungen -- proc -- usr `-- lib `-- tmpslask -- home `-- svc `-- dev
Minska potentiella skador VM:ar med begränsad funktionalitet Jails/chroot / -- bin -- dev -- home `-- kungen -- proc -- usr `-- lib `-- tmpslask -- home `-- svc Potentiellt farligt `-- dev
Exempel på hack Stoppa in USB-pinne/disk Lägg till ftp-konto med hemkatalog /share/disk/../../../ Brist på validering av indata -> chroot overksam FTP till maskin, lägg till filen /tmp/telnetenable FTP till maskin, modifiera /etc/hosts.allow (skrivbar av alla.. ehum.) Telnet in som root, lösenordet är samma adminlösenord som i webgränssnittet