18
1 © 2014 NIL, Security Tag: INTERNAL 1 © 2014 NIL, Security Tag: INTERNAL nil.com © 2014 NIL, Security Tag: INTERNAL nil.com © 2014 NIL, Security Tag: INTERNAL

Heartbleed prezenatcija iz konference Hek.si

Embed Size (px)

Citation preview

Page 1: Heartbleed prezenatcija iz konference Hek.si

1© 2014 NIL, Security Tag: INTERNAL 1© 2014 NIL, Security Tag: INTERNAL

nil.com © 2014 NIL, Security Tag: INTERNAL nil.com © 2014 NIL, Security Tag: INTERNAL

Page 2: Heartbleed prezenatcija iz konference Hek.si

2© 2014 NIL, Security Tag: INTERNAL 2© 2014 NIL, Security Tag: INTERNAL

OPENSSL IN HEARTBLEED

CVE-2014-0160

Page 3: Heartbleed prezenatcija iz konference Hek.si

3© 2014 NIL, Security Tag: INTERNAL 3© 2014 NIL, Security Tag: INTERNAL

Stojan Rančić, CCIE

KRATKA PREDSTAVITEV

� Računalniška omrežja

� Varnost

� Odprtokodne rešitve

� Ukvarjanje z računalniki in omrežji

še pred Internetom ☺

Kontakt:

[email protected]

� http://www.linkedin.com/in/stojanrancic

Page 4: Heartbleed prezenatcija iz konference Hek.si

4© 2014 NIL, Security Tag: INTERNAL 4© 2014 NIL, Security Tag: INTERNAL

KNJIŽNICA OPENSSL

� Odprtokodna programska knjižnica, ki implementira protokola TLS in SSL. Jedro knjižnice razvito v programskem jeziku C

� Na voljo vseh modernih operacijskih sistemih (Linux, Mac OS X, Microsoft Windows, OpenVMS, OS/400)

� Uporabljena v večini odprtokodnih in veliko komercialnih rešitvah, ki zagotavljajo kriptiranje z uporabo družine protokolov SSL / TLS

� Na voljo od leta 1998, aktualni verziji 0.9.8 in 1.0.1

Page 5: Heartbleed prezenatcija iz konference Hek.si

5© 2014 NIL, Security Tag: INTERNAL 5© 2014 NIL, Security Tag: INTERNAL

Zloraba napake v OpenSSL 1.0.1

RANLJIVOST HEARTBLEED

Kaj Heartbleed ni:

� Virus ali črv, ki bi se širil med

uporabniki, strežniki ali napravami

Kaj Heartbleed je:

� Napaka v implementaciji “heartbeat”komponente protokola TLS (RFC 6520)

� Ena resnejših varnostnih groženj modernega Interneta

� Super razlog, da končno zamenjate gesla

Page 6: Heartbleed prezenatcija iz konference Hek.si

6© 2014 NIL, Security Tag: INTERNAL 6© 2014 NIL, Security Tag: INTERNAL

RAZLAGA PROGRAMSKE NAPAKE IN POPRAVKA

buffer = OPENSSL_malloc(1 + 2 + payload + padding);

Ranljivost predstavlja nepravilna alokacija pomnilnika, ki omogoča napadalcu, da z eno povezavo dobi dostop do naključnih 64kb pomnilnika strežnika:

V zgornji vrstici je padding uporabniško definirana vrednost. Z več poskusi lahko napadalec dobi dostop do večjega obsega pomnilnika.

Popravek zagotovi, da omejimo vrednost “payload + padding” na 16b, ter omejimo največjo dovoljeno dolžino vrnjenega podatka:unsigned int write_length = 1 /* heartbeat type */ + + 2 /* heartbeat length */ + + payload + padding;

+ if (write_length > SSL3_RT_MAX_PLAIN_LENGTH) + return 0;

Page 7: Heartbleed prezenatcija iz konference Hek.si

7© 2014 NIL, Security Tag: INTERNAL 7© 2014 NIL, Security Tag: INTERNAL

ČASOVNICA ODKRITJA

� 1.1.2012 ob 00:59: Razvijalec Robin Seggelmann objavi implementacijo “heartbeat” razširitve v OpenSSL repozitorij

� 21.3.2014 ali prej: Neel Mehta (Google) odkrije ranljivost v kodi. Google razvije popravek in ga namesti na svoje strežnike

� 31.3.2014: CloudFlare izve za ranljivost in namesti popravek na svoje strežnike

� 1.4.2014: Google obvestil razvijalce OpenSSL o najdeni ranljivosti

� 3.4.2014: Finsko podetje Codenomicon neodvisno odkrije ranljivost v kodi

� 4.4.2014: Codenomicon obvesti lokalni CERT, Akamai namesti popravek na svoje strežnike, krožiti začnejo govorice

� 5.4.2014: Codenomicon kupi domeno “heartbleed.com”, razvijalci OpenSSL objavijo popravek v privatnem RedHat repozitoriju

Page 8: Heartbleed prezenatcija iz konference Hek.si

8© 2014 NIL, Security Tag: INTERNAL 8© 2014 NIL, Security Tag: INTERNAL

ČASOVNICA ODKRITJA

� 6.4.2014: RedHat privatno obvesti ostale Linux distribucije o najdeni napaki. Zaradi časovne razlike vsi ne dobijo podrobnostipravočasno (Ubuntu, Gentoo, Chromium)

� 7.4.2014 ali prej: Facebook namesti popravke na svoje strežnike

� 7.4.2014: Finski CERT sporoči informacijo o napaki razvijalcem OpenSSL, razvijalci OpenSSL izdajo popravljeno verzijo in uradno objavijo najdeno ranljivost, finski CERT izda obvestilo o ranljivosti v finskem jeziku, Conenomicon objavi vsebno na strani “heartbleed.com”, objavljena je prva testna skripta “ssltest.py”

� 8.4.2014: Finski CERT izda obvestilo o ranljivosti v angleškem jeziku, objavljen je prvi tweet z dokazom ranljivosti Yahoo.com

� 12.4.2014: CloudFlare potrdi, da ranljivost omogoča dostop do privatnih kriptografskih ključev – prvi uspešni napad v treh urah

Page 9: Heartbleed prezenatcija iz konference Hek.si

9© 2014 NIL, Security Tag: INTERNAL 9© 2014 NIL, Security Tag: INTERNAL

POVZETEK ČASOVNICE

Kdo je pred 7.4.2014 vedel za ranljivost?� Google, Codenomicon� OpenSSL, NCSC-FI� CloudFlare, Akamai, Facebook

Kdo pred 7.4.2014 ni vedel za ranljivost?� Amazon, Twitter, Yahoo� Cisco, Juniper, VMware, GoDaddy� Yahoo, Pinterest, Tumblr, Flickr, Instagram� Minecraft, Netflix, Box, Dropbox� Wordpress, GitHub, Wikipedia� Mnogi drugi...

Page 10: Heartbleed prezenatcija iz konference Hek.si

10© 2014 NIL, Security Tag: INTERNAL 10© 2014 NIL, Security Tag: INTERNAL

KAJ MORAMO STORITIUPORABNIKI?

Uporabniki moramo zamenjati gesla za dostop do spletnih storitev, ki so bile ranljive in so ranljivost odpravile.

Med njih spadajo med drugimi:Družabna omrežja: Facebook, Instagram, PinterestPodjetja: Google, YahooSpletna pošta: Gmail, Yahoo MailSpletne trgovine: AWS, Etsy, GoDaddyMultimedija: Flickr, Netflix, SoundCloud, YouTubeOstale: Box, Dropbox, GitHub, Wikipedia

Če uporabljate druge spletne storitve, ki za dostop uporabljajo kriptirane povezave, preverite, če so objavili obvestilo o ranljivosti.

Uporabniki naj za dostop do spletnih vsebin uporabljajo moderne brskalnike z omogočenim preverjanjem preklicanih certifikatov.

Page 11: Heartbleed prezenatcija iz konference Hek.si

11© 2014 NIL, Security Tag: INTERNAL 11© 2014 NIL, Security Tag: INTERNAL

KAJ MORAMO STORITIPODJETJA?

Podjetja z javno dostopnimi storitvami, kjer se za kriptiranje prometa uporablja knjižnica OpenSSL, morajo čim prej preveriti ranljivost teh storitev. Na voljo je več načinov:

� Z uporabo namenskih aplikacij ali skript:� Skripte: ssltest.py, hb-test.py, hb-batch.py� Aplikacije: Nmap, Metasploit, Nessus, masscan

� Z uporabo javno dostopnih spletnih strani:� https://filippo.io/Heartbleed/� https://www.ssllabs.com/ssltest/

Pomembno je preveriti vse javno dostopne storitve (npr. poštni, VPN, FTP/SSL strežniki), ne samo spletnih strežnikov.Ranljivost je lahko prisotna tudi v napravah, ki niso javno dosegljive (IP telefoni, tiskalniki, medicinske naprave), tako da preverite tudi lokalna omrežja.

Page 12: Heartbleed prezenatcija iz konference Hek.si

12© 2014 NIL, Security Tag: INTERNAL 12© 2014 NIL, Security Tag: INTERNAL

KAJ MORAMO STORITIPODJETJA?

V primeru najdene ranljivosti moramo:� Odpraviti ranljivost z namestitvijo nove verzije knjižnice OpenSSL� Ustaviti in ponovno pognati servise, ki uporabljajo OpenSSL� Ponovno preveriti, ali smo še ranljivi� Izdati nov privatni ključ velikosti 2048B in od izdajatelja pridobiti nov

certifikat na podlagi tega ključa� Namestiti nov ključ in certifikat za ustrezne servise� Pri izdajatelju zahtevati preklic starega certifikata� Izvesti menjavo gesel uporabnikov servisa

V primeru, da ranljivosti sami ne moremo odpraviti, je priporočeno zaključevanje kriptografskih sej na namenskih napravah, ki na napad niso ranljive (F5 BigIP, Cisco ACE, Citrix Netscaler, ipd). Kjer to ni možno, je priporočeno strogo omejiti dostop do naprav.

Page 13: Heartbleed prezenatcija iz konference Hek.si

13© 2014 NIL, Security Tag: INTERNAL 13© 2014 NIL, Security Tag: INTERNAL

VARNOST SSL/TLS

Da bi tudi v prihodnje zagotovili varen dostop do naših storitev preko kriptiranih povezav, velja upoštevati naslednje smernice:

� Uporaba privatnih ključev RSA velikosti 2048B oz. ECDH velikosti 256B

� Uporaba Perfect Forward Secrecy, ki zagotavlja unikatne kriptografske ključe za vsako sejo

� Uporaba protokola TLS 1.2. Starejše verzije TLS (1.0, 1.1) in SSL (1.0, 2.0, 3.0) vsebujejo ranljivosti

� Uporaba varnih šifrirnih algoritmov: RC4 vsebuje znane ranljivosti

� Hranjenje privatnih kriptografskih ključev v namenskih HSM napravah

� Uporaba 2-faktorskega overjanja

Page 14: Heartbleed prezenatcija iz konference Hek.si

14© 2014 NIL, Security Tag: INTERNAL 14© 2014 NIL, Security Tag: INTERNAL

POGOSTA VPRAŠANJA

� Katere verzije OpenSSL vsebujejo ranljivost Heartbleed?� Ranljivost vsebujejo verzije 1.0.1 do 1.0.1f. Verzije 1.0 in starejše 0.9.8 ne

vsebujejo te ranljivosti. Verzija 1.0.1g vsebuje popravek ranljivosti.

� Ali lahko enostavno izklopimo “heartbeat” komponento OpenSSL?� Če želimo komponento izklopiti, moramo ponovno prevesti knjižnico

OpenSSL, pri čemer lahko to komponento izklopimo.

� Ali sploh potrebujemo “heartbeat” komponento OpenSSL?� Ta komponenta skrbi za komunikacijo med obema stranema in

zagotavlja preverjanje, ali sta obe strani prisotni. To lahko zagotovimo tudi brez te komponente, vendar je postopek časovno potraten.

� Ali so ranljivi vsi spletni strežniki?� Potencialno ranljivi so spletni strežniki, ki za enkripcijo uporabljajo

knjižnico OpenSSL. Spletni strežniki, ki uporabljajo druge kriptografske knjižnice (npr. Microsoft IIS), niso podvrženi temu napadu.

Page 15: Heartbleed prezenatcija iz konference Hek.si

15© 2014 NIL, Security Tag: INTERNAL 15© 2014 NIL, Security Tag: INTERNAL

POGOSTA VPRAŠANJA

� Ali so ranljivi samo spletni strežniki?� Ne, ranljive so vse aplikacije, ki uporabljajo knjižnico OpenSSL. Med

njih spadajo tako poštni in VPN strežniki, kot tudi uporabniške aplikacije (npr. Cisco Anyconnect za iOS)

� Ali so ranljive samo aplikacije?� Ne, znane so tudi ranljivosti v napravah kot so IP telefoni, omrežna

stikala, telekonferenčne naprave, tiskalniki, naprave z Android 4.1.1(okoli 40M naprav)

� Ali lahko iz logov strežnika razberemo, če smo bili napadeni?� Ne, ob zlorabi ranljivosti Heartbleed sistem ne zazna anomalije in

posledično ne generira spročil o napaki. Napad lahko zaznamo z zajemom in analizo prometa z namenskimi sistemi za detekcijo in preprečevanje napadov (IPS)

Page 16: Heartbleed prezenatcija iz konference Hek.si

16© 2014 NIL, Security Tag: INTERNAL 16© 2014 NIL, Security Tag: INTERNAL

POGOSTA VPRAŠANJA

� Ali so obveščevalne službe (NSA, FSB, GCHQ,...) že prej poznale in zlorabljale napako?� Da? Ne? Mogoče? Verjetno ne bomo nikoli zares vedeli.

� Ali lahko sploh še zaupamo odprtokodnim rešitvam?� Dejstvo je, da napake v kodi več kot dve leti ni nihče opazil, čeprav

je bila koda prosto dostopna. Dejstvo je tudi, da projekt OpenSSL živi od donacij in plačane podpore, in da razvijalci delajo tudi na drugih projektih – le en je redno zaposlen.

� Predlog: če vaše podjetje uporablja odprtokodne rešitve in še posebej, če so te rešitve del vaših plačljivih produktov, razmislite o donaciji organizacijam, ki takšne produkte razvijajo.

Page 17: Heartbleed prezenatcija iz konference Hek.si

17© 2014 NIL, Security Tag: INTERNAL 17© 2014 NIL, Security Tag: INTERNAL

IN ZA KONEC

Page 18: Heartbleed prezenatcija iz konference Hek.si

18© 2014 NIL, Security Tag: INTERNAL 18© 2014 NIL, Security Tag: INTERNAL

REFERENCE

Projekt OpenSSL: http://www.openssl.org/Splošno o ranljvosti: http://heartbleed.com/Enostavna razlaga ranljivosti: http://www.xkcd.com/1354/Podrobna časovnica: http://goo.gl/ZY0rQvRazkritje privatnih ključev: http://goo.gl/bIiPSvTestne skripte:

� https://gist.github.com/takeshixx/10107280� http://pastebin.com/Z9FiWxPw� https://github.com/starchy/hb-batch

SSL/TLS priporočila: http://goo.gl/uJ26DpPerfect Forward Secrecy: http://goo.gl/o7dI2eFinanciranje OpenSSL: http://goo.gl/0VivBz