Heartbleed

From ICO wiki
Jump to navigationJump to search

Heartbleed

Autor: Maarja-Liisa Tammepõld

Rühm: A22

[1]

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.

Kasutatud materjal

[1] http://heartbleed.com/

[2] http://forte.delfi.ee/news/tarkvara/viimaste-aegade-tosiseim-turvaauk-heartbleed-millised-salasonad-peaksid-kindlasti-valja-vahetama.d?id=68417681

[3] https://www.owasp.org/index.php/Heartbleed_Bug