Naar inhoud springen

Heartbleed

Uit Wikipedia, de vrije encyclopedie
Dit is een oude versie van deze pagina, bewerkt door Toth (overleg | bijdragen) op 10 feb 2015 om 16:49. (→‎Ontdekking en nasleep)
Deze versie kan sterk verschillen van de huidige versie van deze pagina.
Het logo van de Heartbleed-bug

Heartbleed is de populaire naam van een lek in de cryptografische programmeerbibliotheek OpenSSL. De officiële naam is CVE-2014-0160. De oorzaak van het lek is een programmeerfout in de OpenSSL-implementatie van de heartbeat-uitbreiding van het TLS-protocol. De OpenSSL-bibliotheek wordt veel gebruikt in de beveiliging van onder meer webwinkels en routers. In Nederland maakt onder andere de iDEAL-betaalmethode ervan gebruik. Op 7 april 2014 werd de vondst van het lek gepubliceerd en werd een gecorrigeerde versie van de software beschikbaar gemaakt.

Ontstaan

Het gat werd op 31 december 2011 geïntroduceerd door een programmeerfout van een van de bijdragers aan het project. Ook de reviewer miste deze fout en de nieuwe code kwam met fout en al in versie 1.0.1 (14 maart 2012) van de bibliotheek terecht.

Werking

Kort gezegd maakt deze bug het mogelijk om een speciaal geconstrueerd verzoek naar een 'beveiligde' server te sturen, zodanig dat die server een min of meer willekeurig deel van zijn geheugen terugstuurt, ter grootte van maximaal 64 kB. Dit geheugen kan gebruikersnamen en wachtwoorden bevatten, maar ook private keys van beveiligingscertificaten. Dit laatste maakt bijvoorbeeld man-in-the-middle-aanvallen mogelijk, waarbij een kwaadwillende website zich kan uitgeven voor een officiële website zonder dat de gebruiker dit merkt.

Deze exploit is mogelijk doordat een cruciale check op het bereik van een variabele niet wordt uitgevoerd. De heartbeat-extensie geeft bij normaal gebruik de mogelijkheid om een server een berichtje terug te laten sturen om aan te geven of de server nog steeds beschikbaar is. De opdracht, in woorden, komt neer op "Server, als je er nog bent, stuur dan dit bericht van zes tekens terug: 'Joehoe'" (of een ander door de gebruiker gekozen bericht van een willekeurige lengte). Doordat niet wordt gecontroleerd of de gevraagde lengte (hier zes tekens) overeenkomt met het bericht (hier 'Joehoe', wat inderdaad zes tekens telt) kan de aanvaller een langer bericht terugvragen (en krijgen) dan aanvankelijk naar de server is gestuurd. De extra tekens komen dan rechtstreeks uit het geheugen van de server dat zich na het ingestuurde bericht bevindt.[1] Dit geheugen kan allerlei gegevens bevatten waarvan het niet de bedoeling is dat die worden teruggestuurd.

Ontdekking en nasleep

Het lek werd ontdekt door Neel Mehta van Google Security en op 7 april 2014 bekendgemaakt door het OpenSSL Project[2] nadat een selecte groep grote organisaties, onder andere Google, Yahoo!, Facebook en Microsoft,[3] eerder een kans had gekregen het lek op hun servers te dichten. Op 7 april is versie 1.0.1g van OpenSSL uitgebracht, waarin deze fout niet meer voorkomt. Veel populaire websites moesten daarna hun gebruikers adviseren hun wachtwoorden te veranderen.

Noten

  1. (en) Randall Munroe, Heartbleed Explanation. Versimpelde uitleg van de bug op Xkcd.
  2. (en) OpenSSL Security Advisory (07 Apr 2014) - TLS heartbeat read overrun (CVE-2014-0160)
  3. Tweakers.net: Weinig populaire Nederlandse sites zijn kwetsbaar voor kritieke OpenSSL-bug