Programmøren bag historisk sikkerhedshul taler ud om nytårsbrøler

Han er ikke én af de faste udviklere på projektet, men han havde tidligere hjulpet holdet bag OpenSSL med at rette fejl i koden. Derfor er det næsten tragikomisk, at da han selv bidrog med implementeringen af en ny funktion, fik han introduceret en kodefejl, som er en stærk kandidat til at være årtiets mest alvorlige sikkerhedshul.

Den uheldige programmør, Robin Seggelmann, skulle blot have tilføjet en ekstra lille kontrol, som kunne have stået på én linje. Så hvordan kunne det ske?

I et interview med avisen Sydney Morning Herald fortæller den tyske programmør, hvordan fejlen blev introduceret:

»Jeg arbejdede på at forbedre OpenSSL og havde afleveret flere fejlrettelser og tilføjet nye funktioner. I én af de nye funktioner kom jeg uheldigvis til at glemme at kontrollere længden på et array,« siger Robin Seggelmann til Sydney Morning Herald.

Robin Seggelmann var færdig med sin kode og afleverede den til den ansvarlige for den del af OpenSSL, Stephen Hanson, sent om aftenen den 31. december 2011. Han læste koden igennem – uden at finde fejlen – og gav den nye programkode grønt lys til at blive en del af OpenSSL. Det skriver Wired.

Men hvordan kunne to erfarne programmører overse en så alvorlig fejl? Forklaringen skal formentligt findes i to omstændigheder. Først og fremmest er der tale om en banal sikkerhedsfejl, som i bagklogskabens lys burde være undgået.

Ser man på kildekoden til den funktion, Robin Seggelmann afleverede, så ser man, at fejlen opstår, da programmøren beder serveren om at foretage en kopiering af data fra serverens hukommelse:

Det er helt trivielt, bortset fra, at der ikke forud for kopiering er sket en kontrol af, at længden af arrayet payload rent faktisk svarer til den længde, som serveren har fået at vide. Xkcd illustrerer problemet i tegneserieform, men det kan kort forklares således:

*Serveren får en anmodning fra en klient, som vil sikre sig, at forbindelsen stadig er åben. Klienten sender variablen ‘payload’ til serveren, som skal sende ‘payload’ retur til klienten. Men sammen med ‘payload’ får serveren at vide, hvor mange tegn op til 64 kilobytes, ‘payload’ indeholder. Serveren skal sørge for at sende hele ‘payload’ tilbage.

Men serveren kontrollerer aldrig, at ‘payload’ har den længde, klienten har oplyst. Derfor kan klienten narre serveren til at sende ‘payload’ plus alt der ligger efter ‘payload’ i hukommelsen op til 64 kilobytes retur til klienten.

Der var ingen andre foranstaltninger i OpenSSL, som forhindrede Robin Seggelmanns kodelinje i at returnere data, som reelt ikke hørte til ‘payload’. Så da Heartbeat-funktionen virkede, som den skulle, var der ingen advarselslamper, der blinkede, før mere end to år senere.

OpenSSL er en open source-implementering af sikkerhedsprotokoller som eksempelvis TLS, og softwaren anvendes i alt fra store webservere til IP-telefoner. Blandt de største tjenester, som har bekræftet, at de har været påvirket og har måttet lukke sikkerhedshullet, har været Yahoo og Flickr.

Det er nærliggende at rejse spørgsmålet om, hvorvidt der var tale om en helt banal sjuskefejl i nogle hundrede linjers kode, eller om det var en bevidst handling, der skulle svække sikkerheden for at give efterretningstjenester en bagdør.

»I det her tilfælde var det en banal programmørfejl i en ny funktion, som uheldigvis optræder i et sikkerhedsrelateret område. Det var slet ikke bevidst, specielt ikke fordi jeg tidligere har lukket sikkerhedshuller i OpenSSL,« forklarer Robin Seggelmann til Sydney Morning Herald.

Fejlen blev heller ikke opdaget af nogen andre, som arbejdede med OpenSSL, og det afslører et problem for små open source-projekter med stor betydning. OpenSSL består af fire medlemmer af en styregruppe og i alt er blot 11 udviklere registrerede som en del af projektet.

Der er også hovedsageligt tale om frivillig arbejdskraft med et begrænset budget, selvom softwaren er en del af grundlaget for adskillige store og små internetfirmaer. Selv blandt de virksomheder, som har oplyst, at de ikke er påvirket, er der mange brugere af OpenSSL.

Fejlen blev nemlig først introduceret sammen med Heartbeat-funktionen i OpenSSL 1.0.1, som blev frigivet i marts 2012. Mange webservere benytter sig imidlertid stadig af OpenSSL version 0.9.8 eller 1.0.0, som ikke indeholder Heartbeat-funktionen og dermed sikkerhedshullet.

Til trods for den enorme udbredelse har OpenSSL-projektet aldrig formået at få mere end én million dollars ind i donationer, og udviklerne bag softwaren har aldrig mødt hinanden ansigt til ansigt ifølge Wired.

Til sammenligning købte Facebook, som benytter OpenSSL, firmaet WhatsApp med 55 ansatte for mere end 100 milliarder kroner i februar 2014.

Fejlen blev dog fundet af ét af de store it-firmaer, for det var nemlig Neel Mehta fra Google Security, som rapporterede den til OpenSSL-holdet, der fik lukket sikkerhedshullet.

Der gik dog to år, hvor den nyeste udgave af OpenSSL havde et sikkerhedshul, som var alvorligt nok til, at flere sikkerhedseksperter meget dramatisk gav det ’11 på en skala fra 1 til 10′. Sårbarheden kunne nemlig udnyttes til at få fat i krypteringsnøgler, kodeord og personlige oplysninger i klar tekst fra servere, der burde være sikre.

»Det er uheldigt, at det bliver brugt af millioner af mennesker, men der er kun meget få, der bidrager til softwaren. Fordelen ved open source er, at alle og enhver kan se koden igennem. Jo flere, der kigger på koden, jo bedre, især med software som OpenSSL,« siger Robin Seggelmann til Sydney Morning Herald.

Posted in computer.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>