Informasjon rundt EFAIL - sårbarhetene relatert til OpenPGP og S/MIME

Publisert: 12.06.2018

I den siste uken har det vært mange spekulasjoner og mye snakk både i media og i andre fora om de to separate sårbarhetene relatert til OpenPGP og S/MIME, også kalt "EFAIL". Mye av diskusjonen går ut på hvordan dette påvirker sikkerheten ved epost kryptert med PGP eller S/MIME. Vi ønsker å gi en bedre forståelse av saken.

Det er svært viktig å påpeke at ingen av disse sårbarhetene lar en angriper dekryptere meldinger uten at meldingsmottakerens private nøkkel blir benyttet for dekrypteringen. Det er altså ikke en sårbarhet i hvordan krypteringen gjøres i seg selv, men i hvordan epostklientene er behandler kryptert tekst.

Begge sårbarhetene benytter et scenario der angriper har fått tak i en kopi av de OpenPGP- eller S/MIME-krypterte meldingene de ønsker å dekryptere. Dette kan for eksempel gjøres ved hjelp av et Man-In-The-Middle-angrep eller ved å stjele meldinger fra en kompromittert epostboks.

Nedenfor kommer en beskrivelse av hver av sårbarhetene.

Sårbarhet 1 ("Direct Exfiltration")

Noen epostklienter kan lures til å dekryptere en melding og overføre den
dekrypterte meldingen tilbake til angriper.

Epostklienter kan settes opp til å automatisk dekryptere deler av en melding som er kryptert. La oss si at en angriper sender en epost til et offer som består av flere deler. En av delene kan være en uskyldig og
relevant melding, mens en annen del kan bygges opp slik at den avsluttes med første del av en bilde- eller lenke-tag i HTML (<). Videre følger den krypterte meldingen som angriper ønsker å dekryptere, før delen avsluttes med en avsluttende HTML-tag (>).

Selv om HTML-innholdet og den krypterte teksten ikke har samme innholdstype (MIME), blir ikke disse delene isolert av epostklienten. Den krypterte delen av meldingen kan bli automatisk dekryptert av epostklienten eller dekryptert av brukeren selv. Når epostklienten videre behandler HTML-koden
blir den dekrypterte meldingen håndtert som om den var en del av HTML-koden.

Dersom epostklienten deretter forsøker å laste bildet i HTML-koden, eller brukeren trykker på og besøker den genererte linken i eposten, vil hele den dekrypterte meldingen sendes som del av forespørselen for å laste bildet eller lenken. Det er dette som kan fanges opp av angriper i form av logger til webserveren som hoster dette innholdet.

Merk at utnyttelsen av denne sårbarheten ikke er begrenset til HTML-kode for eksfiltrasjon, men er brukt som et enkelt eksempel. Det anbefales forøvrig å se på grafikken i kilde [1] for en veldig god illustrasjon på denne feilen.

Sårbarhet 2 ("The CBC/CFB Gadget Attack")

Epostklienter som ikke verifiserer at en melding ble dekryptert uten feil før den vises, kan ende opp med å dekryptere meldinger som er modifisert til å eksfiltrere seg selv.

På grunn av måten S/MIME og OpenPGP krypterer meldinger er det potensielt mulig å injisere tekst i meldingen dersom man kjenner deler av den fra før. Da meldinger som sendes over epost ofte har en kjent struktur med standard headers osv., er dette ofte gjennomførbart.

En melding kan for eksempel injiseres med HTML-kode som eksfiltrerer meldingen på samme måte som i sårbarhet 1.

OpenPGP-standarden har lenge hatt en modifikasjonsbeskyttelse som skal forhindre denne typen angrep, men det er oppdaget at noen epostklienter viser meldingen selv om det kommer feilmeldinger under dekrypteringen.

Nedenfor vil vi gi noen eksempler på hva man kan gjøre for å begrense utnyttelsen av EFAIL:

Kortsiktig løsning: Ingen dekryptering i epostklienten

Den beste måten å beskytte seg mot EFAIL-angrep på er å kun dekryptere S/MIME eller PGP-epost i en separat applikasjon på utsiden av epostklienten. For å benytte denne metoden må man først fjerne S/MIME og PGP-privatnøkler fra epostklienten, for deretter å dekryptere innkommende kryptert epost i en separat applikasjon (for eksempel ved å kopiere og lime inn den krypterte meldingen). På denne måten kan ikke epostklienten åpne en eksfiltreringskanal. Dette er for øyeblikket den tryggeste løsningen, men
har også den ulempen at den gjør prosessen mer komplisert.

Kortsiktig løsning: Skru av HTML-rendering

EFAIL utnytter aktivt innhold, for det meste i form av HTML-tagger og stilark. Ved å skru av visningen av HTML-innhold i innkommende eposter vil den mest åpenbare måten å utnytte EFAIL på bli begrenset. Det er viktig å påpeke at det er andre mulige vektorer som ikke baserer seg på HTML, men de er vanskeligere å utnytte.

Mellomsiktig løsning: Patching

Enkelte leverandører kommer trolig til å publisere sikkerhetsoppdateringer som enten fikser EFAIL-sårbarhetene eller gjør de vanskeligere å utnytte. Vi anbefaler å holde et øye på hjemmesidene tilhørende epostklientene, eventuelt å godta de oppdateringene som dukker opp i selve
klienten når de foreligger.

Langsiktig løsning: Oppdatere OpenPGP og S/MIME-standardene

Eventuelle EFAIL-angrep vil utnytte designfeil og udefinert oppførsel i MIME, S/MIME og OpenPGP-standardene. Derfor må standardene oppdateres, men dette vil nok ta litt tid.

Vi fraråder sterkt å la være og kryptere epostene sine på bakgrunn av EFAIL. Som tidligere nevnt er det ikke selve krypteringsstandardene sårbarhetene finnes i.

Kilder:

  1. [1] https://efail.de