Sydänverenvuoto

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 24. syyskuuta 2018 tarkistetusta versiosta . tarkastukset vaativat 9 muokkausta .

Heartbleed ( CVE -2014-0160) on OpenSSL - salausohjelmiston puskurin ylilukuvirhe , joka mahdollistaa palvelimen tai asiakkaan muistin luvattoman lukemisen, mukaan lukien palvelimen yksityisen avaimen purkamisen. Tietoa haavoittuvuudesta julkaistiin huhtikuussa 2014, bugi on ollut olemassa vuoden 2011 lopusta lähtien.

Virheilmoitushetkellä haavoittuvien verkkosivustojen lukumääräksi arvioitiin puoli miljoonaa, mikä vastasi noin 17 prosenttia Internetin suojatuista verkkosivustoista [1] .

Historia

RFC 6520 ehdotti TLS- ja DTLS - protokollien Heartbeat -laajennusta standardiksi helmikuussa 2012. Heartbeat mahdollistaa yhteyksien pitämisen aktiivisina ilman jatkuvaa uudelleenyhteyttä täydellä valtuutetulla tavalla. Vuonna 2011 yksi RFC-kirjoittajista, Robin Seggelman, otti käyttöön Heartbeat-laajennuksen OpenSSL:lle ja lähetti sen projektin ylläpitäjille . Stephen Hanson, yksi OpenSSL:n neljästä ydinkehittäjästä, on tarkistanut sen koodin. Hanson ei havainnut käyttöönottoongelmia ja lisäsi haavoittuvan koodin OpenSSL-säilöön 31. joulukuuta 2011. Haavoittuvuus levisi OpenSSL 1.0.1:n kanssa 14. joulukuuta 2012. Heartbeat-tuki oli oletusarvoisesti käytössä, mikä vaikutti järjestelmän leviämiseen. haavoittuvuus.

Discovery

Heartbleed-bugin olemassaolo julkistettiin virallisesti 1. huhtikuuta 2014. Nimen Heartbleed loi suomalaisen tietoturvayhtiö Codenomiconin insinööri. He keksivät myös verenvuoto sydämen logon ja loivat sivuston heartbleed.com kertoakseen yhteisölle haavoittuvuudesta. Codenomiconin mukaan Googlen tietoturvatiimi ilmoitti ensimmäisenä Heartbleedistä OpenSSL:ssä, mutta molemmat yritykset löysivät haavoittuvuuden itsenäisesti. Codenomicon ilmoitti 3.4.2014 virheen havaitsemispäivämääräksi ja päivämääräksi, jolloin se ilmoitettiin Tietoturvakeskukselle haavoittuvuuden jäljittämiseksi. Sydney Morning Herald julkaisi haavoittuvuuden havaitsemisen aikajanan 15. huhtikuuta 2014, mikä osoittaa, että jotkut organisaatiot pystyivät korjaamaan haavoittuvuuden ennen kuin se julkistettiin.

Haavoittuvuuden korjaaminen

Googlen Bodo Meller ja Adam Langley ovat kehittäneet korjaustiedoston Heartbleedin korjaamiseksi. Stephen Hanson lisäsi tämän korjaustiedoston OpenSSL:ään 7. huhtikuuta 2014. Ensimmäinen kiinteä versio 1.0.1g julkaistiin samana päivänä. 21. kesäkuuta 2014 yli 300 000 palvelinta oli edelleen haavoittuvaisia.

Hyökkäys

Hyökkäys toteutetaan OpenSSL-kirjaston TLS - laajennuksen pienen Heartbeat -moduulin kautta. TLS on protokolla tietojen esittämiseen TCP :n tai UDP :n kautta , mutta se on suunniteltu vain jatkuvaa tietovirtaa varten. Jos tiedonvaihto koostuu pyynnöistä ja vastauksista, on mahdollista määrittää joitakin tietoja yhteyden toiminnasta , ja pitkän seisokkiajan jälkeen sinun on muodostettava TLS-yhteys uudelleen. Tämän ongelman ratkaisemiseksi asiakas ja palvelin lähettävät ja vastaanottavat ajoittain toisilleen satunnaisen pituisen paketin ja pitävät siten yhteyden aktiivisena ja "kohinaavat" kanavaa [2] .

Jotta "sydänlyönti" ja hyödyllinen liikenne olisi vaikeampaa erottaa toisistaan, kehittäjät käyttivät seuraavaa taktiikkaa: paketti koostuu ohjauslinjasta ja merkityksettömästä "hännästä". Palvelimen tulee palauttaa viesti, joka koostuu samasta merkkijonosta ja omasta "kohina" -osasta. Ohjausmerkkijonon pituus saadaan 16-bittisellä kokonaisluvulla [2] . Jos tämä pituus on suurempi kuin koko paketti, OpenSSL:n haavoittuvat versiot lukevat muistia varatun puskurin ulkopuolella (RFC kehottaa olemaan vastaamatta sellaisiin paketeihin). Kaikki tiedot löytyvät puskurin ulkopuolelta, mukaan lukien (erittäin harvoin) palvelimen yksityiset salausavaimet, tiedot muista yhteyksistä, jotka sisältävät tunnistusevästeitä ja paljon muuta [3] .

Heartbleed suoritetaan lähettämällä huonosti muotoiltu Heartbeat-pyyntö, jossa merkkijonon todellinen pituus on pienempi kuin määritetty ja lähetettävän merkkijonon pituutta symboloiva numero puolestaan ​​on suurempi kuin merkkijonon todellinen pituus . Voit siis saada piilotetuimmat tiedot palvelimelta vastauksena. Siten uhrilta voidaan yhdellä pyynnöllä saada selville jopa 64 kilotavua OpenSSL:n aiemmin käyttämää muistia.

Sykepyyntö näyttää tältä: "Anna minulle takaisin merkkijono x , joka koostuu n merkistä" ja saa vastauksen - merkkijonon x , joka koostuu n merkistä. Heartbleed-pyyntö näyttää erilaiselta: "Anna minulle takaisin merkkijono x , joka koostuu merkkien määrästä n + y ", ja se saa vastauksen, joka koostuu merkkijonosta x ja y muuta merkistä, jotka uhrilla on aktiivisessa muistissa.

Vaikka hyökkääjä hallitsee jonkin verran muistilohkon kokoa, hän ei voi hallita tämän lohkon sijaintia, ja siksi ainoa tapa lisätä arvokkaan tiedon saamisen todennäköisyyttä on käyttää virhettä toistuvasti hyväkseen.

Ratkaisu

Ongelma voidaan ratkaista jättämällä huomioimatta Heartbeat-pyynnöt, jotka haluavat enemmän dataa kuin lähetettävän merkkijonon pituus.

OpenSSL-versio 1.0.1g lisäsi rajojen tarkistuksen, joka estää ylittämisen välitettyä merkkijonoa pidemmälle. Esimerkiksi seuraava testi on lisätty, joka poistaa virheelliset Heartbeat-pyynnöt ja estää Heartbleedin.

if ( 1 + 2 + hyötykuorma + 16 > s - > s3 - > rrec . pituus ) return 0 ; /* Hävitä äänettömästi RFC 6520 sekuntia kohden. neljä */

OpenSSL:n versiot

Aiheet

  • OpenSSL 1.0.2-beta
  • OpenSSL 1.0.1 - OpenSSL 1.0.1f

Jotta OpenSSL:n haavoittuvaa versiota voidaan käyttää turvallisesti, se on käännettävä -DOPENSSL_NO_HEARTBEATS.

Haavoittuvat lähdetiedostot: t1_lib.cja d1_both.c.
Haavoittuvat toiminnot: tls1_process_heartbeat()ja dtls1_process_heartbeat().

Ei vaikuta

  • OpenSSL 1.0.2-beta2 (tulossa)
  • OpenSSL 1.0.1g
  • OpenSSL 1.0.0 (ja 1.0.0 haarajulkaisut)
  • OpenSSL 0.9.8 (ja 0.9.8 haarajulkaisut)

Reaktio

Järjestelmänvalvojia kehotetaan joko käyttämään OpenSSL 1.0.1g -versiota tai kääntämään OpenSSL-kirjasto uudelleen avaimella -DOPENSSL_NO_HEARTBEATS, jolloin kyseinen laajennus poistetaan käytöstä, kunnes ohjelmisto on mahdollista päivittää. Vaikka korjaustiedoston asentaminen ratkaisee ongelman, käynnissä olevat sovellukset käyttävät ladattua ja edelleen haavoittuvaa OpenSSL-koodia, kunnes jokainen sovellus käynnistetään uudelleen, jolloin korjauskoodi voidaan ladata. Koska kaikki OpenSSL:n haavoittuvan version käyttämät varmenteet ja salasanat voidaan katsoa vaarantuneiksi, kaikki yksityiset avaimet on myönnettävä uudelleen ja kaikki salasanat vaihdettava.

Sinä päivänä, jolloin haavoittuvuus löydettiin, Tor-projekti julkaisi ilmoituksen, jossa kehotettiin kaikkia, jotka haluavat "luotettavaa nimettömyyttä tai yksityisyyttä Internetissä", "pysymään poissa Internetistä muutaman päivän, kunnes kaikki on selvitetty" [4] . Verkkosivustojen ja alustojen omistajat neuvovat käyttäjiään vaihtamaan salasanansa.

Muistiinpanot

  1. Mutton, Paul Puoli miljoonaa laajalti luotettua verkkosivustoa, jotka ovat alttiina Heartbleed-bugille . Netcraft (8. huhtikuuta 2014). Haettu 16. huhtikuuta 2014. Arkistoitu alkuperäisestä 19. marraskuuta 2014.
  2. 1 2 RFC 6520 - Transport Layer Security (TLS) ja Datagram Transport Layer Security (DTLS) Heartbeat Extension . Haettu 15. huhtikuuta 2014. Arkistoitu alkuperäisestä 16. huhtikuuta 2014.
  3. Kriittinen kryptovirhe paljastaa Yahoo Mailin ja muut salasanat Venäläinen ruletti | Ars Technica . Haettu 16. huhtikuuta 2014. Arkistoitu alkuperäisestä 11. huhtikuuta 2014.
  4. OpenSSL-virhe CVE-2014-0160 , Tor  (7. huhtikuuta 2014). Arkistoitu alkuperäisestä 10. heinäkuuta 2017. Haettu 16. huhtikuuta 2014.

Katso myös

Linkit