Den vidast förgrenade säkerhetsbristen i Internets historia.

Den första april kom första rapporten om en säkerhetsbrist i OpenSSL, och det visade sig snabbt att det inte var frågan om något aprilskämt. Istället började den vidast förgrenade säkerhetsbristen i Internets historia nystas upp, åtminstone om man räknar till antalet berörda personer och vilken typ av information som äventyrats.

OpenSSL är en av de vanligaste implementationerna av TLS (säkerhet för transportlagret på Internet). Du känner kanske själv igen TLS i skepnaden av HTTPS för säkra anslutningar till nätbutiker och internetbanker, eller för anslutningar till privata konton hos Facebook och Google.

Heartbeat och hur det blöder

Heartbleed logotypHistorien börjar 31 december 2011, då Robin Seggelmann får sin begäran om att lägga till källkod som erbjuder konfigurerbart stöd för Heartbeat godkänd i kodgranskning av Stephen Henson, en av de fyra ansvariga utvecklarna för OpenSSL. Heartbeat är ett sätt att avgöra om motparten i en anslutning fortfarande är aktiv och behöver hållas i minnet. Om du är intresserad och har ett öga för buggar kan du själv granska uppdateringen som innehåller den skadliga källkoden på Github.

Innan vi går vidare bör det tilläggas att i stort sett alla system har buggar, även om vissa får större proportioner än andra. Heartbleed är en av de största buggarna någonsin, framförallt på grund av vad mjukvaran används till och dess utbredning över Internet. I ett harmlöst system hade ingen någonsin märkt av den.

Hjärtslag som väcker minnet

Vi kan se på Heartbeat som en fråga och ett svar i en pågående konversation mellan en klient och en server. Konversationen garanterar att sessionen lever, hjärtat fortsätter att slå. Förutom att skicka ett ”Hej svejs, här är jag!” kan den sändande parten också skicka med ett valfritt meddelande som mottagaren måste svara med.

– Server, om du lever, svara ”Morot” med 5 tecken!
Morot
– Server, om du lever, svara ”Hatt” med 65 536 tecken!
Hatt [och ytterligare 65 532 tecken som ligger nära “Hatt” i minnet, exempelvis hantering av privata nycklar eller tidigare skickade meddelanden med lösenord eller kreditkortnummer]

…eller så här för den som föredrar en förklaring i tecknat format från XKCD.

En anledning till att det blev på detta vis är att den interna minneshanteringen abstraherat malloc (systemanropet för minnesallokering) på ett sätt som uppmuntrar till osäker kod. Om en rutin begär tillgång till ett stycke minne och anger en storlek som är större än det minne som avsatts för just den rutinen, så kan den få tillgång till delar av minne avsatt till andra rutiner inom systemet, upp till 65 536 tecken (64KB). Den här typen av oansvarig minneshantering har sedan länge kritiserats av utvecklare från bland annat OpenBSD, som redan för ett par år sedan tog fram en egen version av OpenSSL som inte abstraherar malloc.

En boll i rullning

När källkoden väl godkänts efter kodgranskningen 2011 dröjde det till 14 mars 2012 innan den lanserades i OpenSSL 1.0.1. Den versionen levererades dessutom med stöd för Heartbeat konfigurerat som förval. Det betyder att majoriteten av alla system som kom att använda den nya uppdateringen också fick den berörda källkoden aktiv. Sedan dess har allt fler system uppgraderats att använda den sårbara implementationen av Heartbeat.

En första rapport om säkerhetsbristen kom 1 april 2014 från Google, drygt två år efter releasen. Den följdes 3 april av en oberoende rapport från det finska cybersäkerhetsföretaget Codenomicom. Det är för övrigt Codenomicom som myntat begreppet Heartbleed, och publicerat hemsidan med samma namn som förklarar både fenomenet och konsekvenserna.

Allmänheten kommer nästan alltid sist vid den här typen av upptäckter. Detta för att inte riskera att i onödan belysa brister innan de är åtgärdade. Ett officiellt uttalande kom först 7 april i samband med en buggfix som åtgärdade säkerhetsbristen. Hos Jajja uppdaterades redan samma morgon tre berörda system, men det fanns även system som använde OpenSSL utan att vara berörda av Heartbleed. Vi har också bytt våra certifikat, för att täcka för det fall att någon skulle ha lyckats komma över våra privata nycklar. Dessutom kontaktas det fåtal av våra kunder vars hemsidor fortfarande är berörda med information om hur de åtgärdar problemet.

Konsekvenserna

Det är förstås svårt att vara helt säker på att privat information inte läckt. Ett av attributen i den här säkerhetsbristen är att angrepp inte lämnar några synliga spår. Sannolikheten är trots allt relativt liten att en enskild privatperson skulle vara drabbad.

För vanliga Internet-användare kan det vara värt att uppdatera applikationer som frågar om det, och att inte hålla inne med systemuppdateringar. Ett antal sajter har gått ut med uppmaning att byta lösenord i samband med upptäckten av Heartbleed. Det kan absolut rekommenderas att byta lösenord, men det är nog framförallt de som använder sig av privat/publikt nyckelpar för automatisk autentisering via SSL som bör ta en extra funderare på om det inte är dags att byta nycklar.

I efterspelet till Heartbleed har ett flertal obskyra konspirationsteorier framkommit. En sådan hävdar att buggen skulle vara planterad för att underlätta för myndigheter att komma över känslig data. Detta verkar mindre sannolikt, men det är inte desto mindre tänkvärt att så få personer är ansvariga för ”säkerheten” för så många!