Sårbarhet i Qualcomm-brikker som gjør at private nøkler kan trekkes ut fra TrustZone-lagring

Forskere fra NCC Group avdekket detaljer sårbarheter (CVE-2018-11976) i Qualcomm-brikker, som lar deg bestemme innholdet i private krypteringsnøkler som ligger i en isolert enklave Qualcomm QSEE (Qualcomm Secure Execution Environment), basert på ARM TrustZone-teknologi. Problemet viser seg i mest Snapdragon SoC, som har blitt utbredt i smarttelefoner basert på Android-plattformen. Reparasjonene som løser problemet er allerede inkludert i Android-oppdateringen for april og nye fastvareutgivelser for Qualcomm-brikker. Det tok Qualcomm mer enn ett år å forberede en løsning; informasjon om sårbarheten ble opprinnelig sendt til Qualcomm 19. mars 2018.

La oss huske at ARM TrustZone-teknologi lar deg lage maskinvareisolerte beskyttede miljøer som er fullstendig atskilt fra hovedsystemet og kjøres på en separat virtuell prosessor ved hjelp av et separat spesialisert operativsystem. Hovedformålet med TrustZone er å gi isolert utførelse av prosessorer for krypteringsnøkler, biometrisk autentisering, betalingsdata og annen konfidensiell informasjon. Interaksjon med hovedoperativsystemet utføres indirekte gjennom ekspedisjonsgrensesnittet. Private krypteringsnøkler lagres i et maskinvareisolert nøkkellager, som, hvis det implementeres riktig, kan forhindre lekkasje hvis det underliggende systemet er kompromittert.

Sårbarheten skyldes en feil i implementeringen av den elliptiske kurvebehandlingsalgoritmen, som førte til lekkasje av informasjon om fremdriften i databehandlingen. Forskere har utviklet en sidekanalangrepsteknikk som gjør det mulig å bruke eksisterende indirekte lekkasjer for å gjenopprette innholdet i private nøkler som ligger i en maskinvareisolert Android Keystore. Lekkasjer bestemmes basert på analyse av aktiviteten til grenprediksjonsblokken og endringer i tilgangstiden til data i minnet. I eksperimentet demonstrerte forskerne gjenopprettingen av 224- og 256-biters ECDSA-nøkler fra det maskinvareisolerte nøkkellageret som ble brukt i Nexus 5X-smarttelefonen. Å gjenopprette nøkkelen krevde generering av rundt 12 tusen digitale signaturer, noe som tok mer enn 14 timer. Verktøy som ble brukt til å utføre angrepet Cachegrab.

Hovedårsaken til problemet er deling av vanlige maskinvarekomponenter og hurtigbuffer for beregninger i TrustZone og i hovedsystemet - isolering utføres på nivå med logisk separasjon, men ved bruk av vanlige dataenheter og med spor av beregninger og informasjon om gren adresser som legges inn i den vanlige prosessorbufferen. Ved å bruke Prime+Probe-metoden, basert på å vurdere endringer i tilgangstid til bufret informasjon, er det mulig, ved å kontrollere tilstedeværelsen av visse mønstre i hurtigbufferen, å overvåke datastrømmer og tegn på kodeutførelse knyttet til beregninger av digitale signaturer i TrustZone med ganske høy nøyaktighet.

Mesteparten av tiden for å generere en digital signatur ved hjelp av ECDSA-nøkler i Qualcomm-brikker brukes til å utføre multiplikasjonsoperasjoner i en sløyfe ved å bruke en initialiseringsvektor som er uendret for hver signatur (nuncio). Hvis angriperen kan gjenopprette minst noen få biter med informasjon om denne vektoren, blir det mulig å utføre et angrep for å sekvensielt gjenopprette hele den private nøkkelen.

Når det gjelder Qualcomm, ble to steder hvor slik informasjon ble lekket identifisert i multiplikasjonsalgoritmen: når du utfører oppslagsoperasjoner i tabeller og i den betingede datainnhentingskoden basert på verdien av den siste biten i "nonce"-vektoren. Til tross for at Qualcomm-koden inneholder tiltak for å motvirke informasjonslekkasjer gjennom tredjepartskanaler, lar den utviklede angrepsmetoden deg omgå disse tiltakene og bestemme flere biter av «nonce»-verdien, som er nok til å gjenopprette 256-biters ECDSA-nøkler.

Kilde: opennet.ru

Legg til en kommentar