Heartbleed: Difference between revisions
No edit summary |
|||
(7 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
'''Rühm:''' A22 | '''Rühm:''' A22 | ||
[[File:Heartbleed.png]] | |||
[https://www.owasp.org/images/5/5d/Heartbleed.png] | |||
==Sissejuhatus== | ==Sissejuhatus== | ||
Line 12: | Line 15: | ||
Internetitoimingutes kontrollivad serveritega ühenduses olevad arvutid teatud ajavahemike järel, kas nad on endiselt samal liinil ühenduses saates üksteisele signaale. Selle sama signaali kaudu ongi võimalik ligi pääseda serveri mälule. [2] | Internetitoimingutes kontrollivad serveritega ühenduses olevad arvutid teatud ajavahemike järel, kas nad on endiselt samal liinil ühenduses saates üksteisele signaale. Selle sama signaali kaudu ongi võimalik ligi pääseda serveri mälule. [2] | ||
Nõrkus (CVE-2014-0160) on kadunud signaali kontroll enne memcpy()kutsungit, mis kasutab kasutaja sisendit parameetri pikkusena. Ründaja saab OpenSSL-i trikitada paigutades sinna 64KB suuruse puhvri, kopeerib rohkem baite kui vaja puhvrisse, saadab selle buhvri tagasi ja seetõttu lekib ohvri mällu 64KB suurune sisu samal ajal. [3] | |||
==Mida saab selle vastu ette võtta?== | ==Mida saab selle vastu ette võtta?== | ||
Line 28: | Line 33: | ||
*OpenSSL 0.9.8 laiendus on turvaline | *OpenSSL 0.9.8 laiendus on turvaline | ||
Alates 2012. aasta 14. märtsist OpenSSL versiooniga 1.0.1 levis nõrkus ja 7. aprillil 2014 sai avalikuks versioon 1.0.1g, mis muutus | Alates 2012. aasta 14. märtsist OpenSSL versiooniga 1.0.1 levis nõrkus ja 7. aprillil 2014 sai avalikuks versioon 1.0.1g, mis muutus turvaliseks. | ||
[1] | |||
===Mõned operatsioonisüsteemi distributsioonid, mis on haavatava OpenSSL-i versiooniga:=== | |||
*Debian Wheezy (stable), OpenSSL 1.0.1e-2+deb7u4 | |||
*Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11 | |||
*CentOS 6.5, OpenSSL 1.0.1e-15 | |||
*Fedora 18, OpenSSL 1.0.1e-4 | |||
*OpenBSD 5.3 (OpenSSL 1.0.1c 10 mai 2012) and 5.4 (OpenSSL 1.0.1c (10 mai 2012)) | |||
*FreeBSD 10.0 - OpenSSL 1.0.1e (11 veebruar 2013) | |||
*NetBSD 5.0.2 (OpenSSL 1.0.1e) | |||
*OpenSUSE 12.2 (OpenSSL 1.0.1c) | |||
===Operatsioonisüsteemi distributsioonid, mis on turvalised: === | |||
*Debian Squeeze (oldstable), OpenSSL 0.9.8o-4squeeze14 | |||
*SUSE Linux Enterprise Server | |||
*FreeBSD 8.4 - OpenSSL 0.9.8y (5 veebruar 2013) | |||
*FreeBSD 9.2 - OpenSSL 0.9.8y (5 veebruar 2013) | |||
*FreeBSD 10.0p1 - OpenSSL 1.0.1g (8 aprill 2014) | |||
*FreeBSD Ports - OpenSSL 1.0.1g (7 aprill 2014) | |||
[3] | |||
==Lahendus== | |||
Kood, mis loodi selle vea vastu OpenSSL versioonis 1.0.1g, mis kontrollib signaali õige ajavahemiku tagant SSL3 struktuuris (s3->rrec), mis kirjeldab sissetulevat signaali. | |||
<pre> | |||
hbtype = *p++; | |||
n2s(p, payload); | |||
if (1 + 2 + payload + 16 > s->s3->rrec.length) | |||
return 0; /* silently discard per RFC 6520 sec. 4 */ | |||
pl = p; | |||
</pre> | |||
[3] | |||
==Kokkuvõte== | |||
Kasutajad võiksid oma paroole erinevates kohtades hoida erinevatena, juhul kui peaks toimuma rünne mingisuguse lehe vastu, et ründaja sama parooli kuskil mujal kasutada ei saaks. OpenSSL-i versiooni võiks uuendada 1.0.1g vastu, mis hetkel on turvaline ja hankida endale uus sertifikaat. | |||
=Kasutatud materjal= | =Kasutatud materjal= |
Latest revision as of 22:17, 25 May 2014
Heartbleed
Autor: Maarja-Liisa Tammepõld
Rühm: A22
Sissejuhatus
See on tõsine krüptograafilise tarkvara teegi OpenSSL-i nõrkus. See võimaldab SSL-i/TSL-i enkrüpteerimisega kaitstud informatsiooni varastada. SSL/TLS pakuvad erinevate rakenduste turvalist kasutamist üle Interneti nt. emaili teenuste ja mõne VPN-i kasutamisel, võimaldab turvaliselt minna panka, ilma et keegi salajast infot näha saaks. Nüüd on avastatud, aga OpenSSL-i turvaauk nimega Heartbleed, mis võimaldab ligipääseda serveri mälule ja mis hõlmab kogu salajast informatsiooni: kasutajate nimesid, salasõnu ja tegelikku sisu. Seeläbi on ründajatel võimalik pealtkuulata vestlusi, andmeid varastada ja võimaldab kehastada teist kasutajat või teenust. [1]
Kuidas töötab Heartbleed?
Internetitoimingutes kontrollivad serveritega ühenduses olevad arvutid teatud ajavahemike järel, kas nad on endiselt samal liinil ühenduses saates üksteisele signaale. Selle sama signaali kaudu ongi võimalik ligi pääseda serveri mälule. [2]
Nõrkus (CVE-2014-0160) on kadunud signaali kontroll enne memcpy()kutsungit, mis kasutab kasutaja sisendit parameetri pikkusena. Ründaja saab OpenSSL-i trikitada paigutades sinna 64KB suuruse puhvri, kopeerib rohkem baite kui vaja puhvrisse, saadab selle buhvri tagasi ja seetõttu lekib ohvri mällu 64KB suurune sisu samal ajal. [3]
Mida saab selle vastu ette võtta?
Servereid hallatavatel administraatoritel soovitatakse genereerida serverile uus privaatvõti, hankida kaasnev uus sertifikaat ja paluma kõikidel kasutajatel oma paroolid ära vahetada.
Kuna Heartbleed mõjutab Internetis umbes 18% hulga ulatuses servereid, siis selle turvamiseks on tehtud ka juba avalik tööriist, mis võimaldab näha, kas mõni server on turvaline või mitte: https://filippo.io/Heartbleed/ . [2]
Nüüdseks on loodud OpenSSL-st uuem ja täiustatum versioon, millel puudub see sama haavatav koht, kuid nii kaua, kui kasutatakse nõrkusega olevat OpenSSL-i, senikaua püsib ka oht ründe ohvriks sattuda. [1]
Mis OpenSSL-i versioonid on haavatavad?
- OpenSSL 1.0.1 läbi 1.0.1f on haavatav
- OpenSSL 1.0.1g on turvaline
- OpenSSL 1.0.0 laiendus on turvaline
- OpenSSL 0.9.8 laiendus on turvaline
Alates 2012. aasta 14. märtsist OpenSSL versiooniga 1.0.1 levis nõrkus ja 7. aprillil 2014 sai avalikuks versioon 1.0.1g, mis muutus turvaliseks.
[1]
Mõned operatsioonisüsteemi distributsioonid, mis on haavatava OpenSSL-i versiooniga:
- Debian Wheezy (stable), OpenSSL 1.0.1e-2+deb7u4
- Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11
- CentOS 6.5, OpenSSL 1.0.1e-15
- Fedora 18, OpenSSL 1.0.1e-4
- OpenBSD 5.3 (OpenSSL 1.0.1c 10 mai 2012) and 5.4 (OpenSSL 1.0.1c (10 mai 2012))
- FreeBSD 10.0 - OpenSSL 1.0.1e (11 veebruar 2013)
- NetBSD 5.0.2 (OpenSSL 1.0.1e)
- OpenSUSE 12.2 (OpenSSL 1.0.1c)
Operatsioonisüsteemi distributsioonid, mis on turvalised:
- Debian Squeeze (oldstable), OpenSSL 0.9.8o-4squeeze14
- SUSE Linux Enterprise Server
- FreeBSD 8.4 - OpenSSL 0.9.8y (5 veebruar 2013)
- FreeBSD 9.2 - OpenSSL 0.9.8y (5 veebruar 2013)
- FreeBSD 10.0p1 - OpenSSL 1.0.1g (8 aprill 2014)
- FreeBSD Ports - OpenSSL 1.0.1g (7 aprill 2014)
[3]
Lahendus
Kood, mis loodi selle vea vastu OpenSSL versioonis 1.0.1g, mis kontrollib signaali õige ajavahemiku tagant SSL3 struktuuris (s3->rrec), mis kirjeldab sissetulevat signaali.
hbtype = *p++; n2s(p, payload); if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */ pl = p;
[3]
Kokkuvõte
Kasutajad võiksid oma paroole erinevates kohtades hoida erinevatena, juhul kui peaks toimuma rünne mingisuguse lehe vastu, et ründaja sama parooli kuskil mujal kasutada ei saaks. OpenSSL-i versiooni võiks uuendada 1.0.1g vastu, mis hetkel on turvaline ja hankida endale uus sertifikaat.