Intel Software Guard Extension (SGX) är en hårdvarubaserad betrodd körning miljö (TEE) som möjliggör säker beräkning utan att lita på någon underliggande programvara, såsom operativsystem eller till och med hårdvara firmware. Det ger starka säkerhetsgarantier, nämligen sekretess och integritet, till en enklave (dvs. ett program som körs på Intel SGX) genom solid hårdvarubaserad isolering. Men en ny kontrollerad-kanal attack (Xu et al., Oakland 2015), även om det är en out-of-scope attack enligt Intel SGX hotmodell, visade att en skadlig OS kan härleda grov-grained kontroll flöden av en enklave via en serie av sidfel, och en sådan sida-kanal kan vara svårt för säkerhetskänsliga program. I den här artikeln utforskar vi en ny, men ändå kritisk, sidokanalsattack mot Intel SGX, kallad en grenskuggningsattack, som kan avslöja finkorniga kontrollflöden (dvs. varje gren) av ett enklavprogram som körs på riktig SGX-hårdvara. Grundorsaken till denna attack är att Intel SGX inte rensar grenens historia när man byter från enklavläge till non-enclave-läge, vilket lämnar de finkorniga spåren till omvärlden genom en gren-prediction sidokanal. Att utnyttja kanalen är dock inte så enkelt i praktiken, eftersom 1) att mäta felpreskriptionsstraff som baseras på timing är alltför inkorrekt för att skilja mellan finkorniga kontrollflödesförändringar och 2) att kräva sofistikerad kontroll över enklavens utförande för att tvinga dess utförande till de intressanta kodblocken. För att övervinna dessa utmaningar utvecklade vi två nya exploateringstekniker: 1) Intel PT- och LBR-baserade historieinfererande tekniker och 2) APIC-baserad teknik för att kontrollera genomförandet av enklavprogram på ett finkornigt sätt. Som ett resultat kan vi demonstrera vår attack genom att bryta den senaste tidens säkerhetskonstruktioner, inklusive ORAM-system, Sanctum, SGX-Shield och T-SGX. Inte begränsa vårt arbete till själva attacken, vi noggrant studerat genomförbarheten av hårdvarubaserade lösningar (t.ex., filial historia clearing) och föreslog också en mjukvarubaserad motåtgärd, kallas Zigzagger, för att mildra grenen skuggning attack i praktiken. ArXiv:1611.06952v2 [cs.CR] 25 nov 2016 1 /* bignum.c */ 2 statiska int mpi_montmul(mbedtls_mpi *A, const mbedtls_mpi *B, 3 const mbedtls_mpi *N, mbedtls_mpi_uint mm, 4 const mbedtls_mpi *T) { 5 size_t i, n, m; 6 mbedtls_mpi_uint u0, u1, *d; 7 8 d = T->p; n = N->n; m = (B->n < n)? B-> n; 9 10 för (i = 0; i < n; i++) { 11 u0 = A->p[i]; 12 u1 = (d[0] + u0 * B->p[0]) * mm; 13 14 mpi_mul_hlp(m, B->p, d, u0); 15 mpi_mul_hlp(n, N->p, d, u1); 16 17 *d++ = u0, d[n+1] = 0; 18 } 19 20, om (mbedtls_mp_cmp_abs(A, N) >= 0) { 21  och mpi_sub_hlp(n, N->p, A->p); 22  till i = 1; 23  till 24 Den gren skuggning attack kan dra slutsatsen om en dummy subtraktion har utfört eller inte.
Nyligen, gren skuggattack REF, har rapporterats läcka finkornig information från SGX enklaver genom att utnyttja oklar gren historia när det finns en kontext övergång från enklav till icke-enklav läge.
Inferring Fine-grained Control Flow Inside SGX Enclaves with Branch Shadowing
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Computer Science']}