Hvem var Apples Eve ?

Jeg har stirret på den der Apple SSL fejl:

 if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
      goto fail;
 if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
      goto fail;
     goto fail;
 if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
        goto fail;

Der er overordnet to hyposteser:

A) Ærligt uheld.

B) Med vilje.

Hvis hypotese A) er sand, er Apple et lallende amatøragtigt klythus der ikke har nogen form for kvalitetssikring på selv den mest centrale sikkerhedskritiske del af deres kildetekst.

Det rimer ikke på nogen måde med det indtryk jeg får af folk der har arbejdet i, hos og med Apple omkring sikkerhedskritisk software.

Tværtimod.

Jeg hælder derfor klart til hypotese B: Nogen gjorde det her med vilje.

Hvis nogen mente at Apples hardware spildte tiden på at beregne SHA1 hash på certifikater, ville det give givet mere mening slet ikke at begynde på det og derfor tror jeg ikke der er kommet nogen ordre fra Apples ledelse om at "optimere SHA1 med 25%" eller noget i den stil.

Det her er utvivlsomt kommet som en overraskelse for alle Apples medarbejder pånær en enkelt.

Hvis nogen derimod prøvede at gøre det nemmere for den i kryptografiske bøger altid forhadlagte "Eve" at lytte ind på Apple brugere, uden at nogen opdagede det, er rettelsen simpelthen lige i nettet: Den har plausible deniability -- "Ooops, patch(1) snød mig" -- og indeholder ikke nogen vektorer der peger bagud.

Men hvis agent var dét så ?

NSA er tidens oplagte bussemand for den slags, men det forudsætter et næsten helt utænkeligt ringe samarbejde mellem NSA og Apple før det ville give mening for NSA at sparke sådan et stort hul i sikkerheden, ikke mindst i lyset af at NSAs anden officielle opgave er at holde IT-sikkerheden i USAs statsapparater oppe.

Det er blevet påpeget at der er et mildest talt suggestivt sammenfald imellem et af Snowdens NSAs dokumenter og timingen af første release med denne kodedetalje, men det overbeviser mig ikke. Primært fordi "PRISM" handler om "direkte opsamling fra ${FIRMA}s servere", mens den her "fejl" kræver Man-In-The-Middle aktiviteter hvor Apple-dimsen nu end befinder sig.

I min optik er det meget mere sandsynligt at dette er en genistreg fra en agent for nogen Apple aldrig ville række en lillefinger.

Og det kan være stort set hvem som helst:

Rusland, Den ${land}ske Mafia, Kina, Israel, Microsoft, The Laundry, Bilderberg-Verdens-Regeringen, Frimurerne, Korsridderne, Den Hemmelige Soviet, De Bayerske Illuminati, osv. osv.

(Sorter selv listen så den passer til dine fordomme)

Det lange og det korte er at nogen ville have adgang til at lege Man-In-The-Middle med kommunikation fra Apple devices og de fik det.

... indtil det blev opdaget.

Og her kommer så ironien ind i billedet.

I Danmark har både denne og den forrige regering haft meget travlt med at mørklægge alt muligt fra befolkningen, fra helt simple spørgsmål som "Er Danmark i Krig nu ?" og opefter, kulminerende med Mørklægningsloven.

Men samtidig er de iPhones og iPads som MF'er og embedsfolk render rundt med og hvorpå de roder med præcis dette mørklagte materiale, trods gentagne advarsler, pivåbne på grund af sikkerheds "brister" som denne.

"Enhver passende raffineret teknologi kan ikke skelnes fra ren magi" skrev Arthur C. Clarke for 52 år siden og nogen har tydeligvis hverken gået på Hogwarts eller lært nok om computere og derfor overhovedet ikke styr på teknikken.

phk

Kommentarer (21)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Peter Mogensen

ja ... annotate (eller "blame" afhængig af humøret) må kunne besvare PHKs spørgsmål.

Men helt ærligt... hvis man laver sådan en fejl med vilje, hvorfor så overhovedet bygge den releasede version udfra kildeteksten i VCS?
Hvorfor ikke bare snige den linie ind lige inden man skriver "make" ?

Det er vist igen til tid at minde om Hanlons ragekniv. Men selvfølgelig også Greys lov.

  • 3
  • 0
Peter Speck

I 2010 havde Apple en fejl i deres kode hvor de ikke fik sammenlignet sidste bogstav i hostnavnet og certifikatet. Så hvis man gik ind på site.de så accepterede Safari certifikatet for site.dk, og et cerfikat for site.co.ug blev accepteret ved besøg til site.co.uk

Det er et meget mindre hul - meget mere NSA-agtig da det er få virksomheder som har sites hvor kun sidste bogstav er forskellig - og hvor man opdager at browseren accepterer det forkerte cerfikat.

Ville det ikke være meget oplagt at man tilføjede en unittest som testede netop denne fejl, og at denne test også ville fange den seneste fejl. Dvs at man ikke kun laver unittests udfra gæt om fejl, men også laver en unittest hver gang man retter en fejl? Gruppen der udvikler WebKit/Safari har denne politik, så hvorfor ikke også i SSL gruppen?

Og med Apple's pengetank: hvorfor betaler de ikke 3. parts firma til at lave basale sikkerhedscheck?

  • 4
  • 0
Jesper Stein Sandal

Der er 3 ting, programmører hader:

1) Lave GUI
2) Skrive error-catching kode
3) Test

Det her ligner et tilfælde med to af tingene fra listen. Måske skulle der være den fjerde ting: At checke andre programmørers kode fra fejl, når programmet ser ud til at virke.

Det er sådan en stump kode, som man let kan forestille sig er skrevet med en god portion copy/paste. Det er også sådan en fejl, som man let kan komme til at overse, når man læser koden uden at vide, at der er en fejl.

Plausible deniability? Måske. Men så er der sandsynligvis også flere lignende sikkerhedshuller i omløb. Hvis det her er et enkeltstående tilfælde, så er det sandsynligvis bare en programmør, der har skrevet koden lidt for tidligt på morgenen.

  • 8
  • 0
Max Tobiasen

Bilderberg-Verdens-Regeringen kan jeg lige gå med til, men De Bayerske Illuminati? Arh, den må du længere ud på landet med.

:-)

Vidste du iøvrigt at hvis man laver et kommentar spamfilter der blokerer kommentarer indeholdende en liste på ca. 20 ord hvoraf Bilderberg er et af dem (Illuminati er et andet) så fanger man en stor del af alt spam med meget få falske negativer.

  • 0
  • 0
Torben Mogensen Blogger

Hvis denne fejl er introduceret med vilje, så er det ikke gjort særligt smart: Den er ret åbenlys, og det er ikke svært at få samme effekt på en mindre åbenlys måde: Sæt et semikolon sidst på den anden if-linje. Det er nemt at overse, hvis man skimmer koden igennem, mens den dobbelte goto skinner lige i øjnene.

I øvrigt er det vel ret velkendt, hvem Apples Eve er:
http://icons.iconarchive.com/icons/artua/wall-e/256/eve-icon.png

  • 6
  • 0
Filip Larsen

Uanset om fejlen er indlagt med vilje eller ej, så er det vel et lige så stort problem, at fejlen kommer igennem til release uden at blive fanget i en test et sted. Man kan vel kun tage Apples udmelding om fejlen som et udtryk for, at det ikke er en funktionalitet Apple tester for, og hvis de ikke tester for dette, hvad tester de så heller ikke for? Eller har "nogen" også lavet fejl i testen?

  • 3
  • 0
Jesper Louis Andersen

Burde et rimeligt naivt dead-code analysis pass ikke finde en masse død kode i de linier meget hurtigt? Det undrer mig lidt, for jeg ville også formode at et random Coverity-tool eller FlexeLint ville skrige ud over det hele givet den der konstruktion.

Det gør det langt mere interessant, for hvordan kan sådan kode overhovedet får lov til at overleve i praksis?

  • 7
  • 0
Erik Cederstrand

jeg ville også formode at et random Coverity-tool eller FlexeLint ville skrige ud over det hele givet den der konstruktion.

Krypteringskode er berygtet for at være knudret og bruge højst utraditionelle konstruktioner for at få de sidste dråber performance ud af maskinen. Det er meget muligt, at fejlraten er så høj, at fejlen er druknet i mængden, eller at den statiske analyse giver op overfor netop denne del af koden.

  • 4
  • 0
Peter Sjøntoft

Hvis følgende to ting rent faktisk er korrekte:

hypotese A ... rimer ikke på nogen måde med det indtryk jeg får af folk der har arbejdet i, hos og med Apple omkring sikkerhedskritisk software.

og

Det her er utvivlsomt kommet som en overraskelse for alle Apples medarbejder pånær en enkelt.

Giver det så ikke sig selv at Eve må have ansvaret for kvalitetskontrollen?

Peter

  • 0
  • 0
Jesper Louis Andersen
  • 1
  • 0
Log ind eller Opret konto for at kommentere