People's Liberation Army Defense Science and Technology Universityá Singapore National University ááŸáá·áº ETH Zurich ááá¯á·á០áá¯áá±áá®áá»á¬ážááẠáá®ážááŒá¬ážááœá²áá¬ážáá±á¬ á§áááá¬áá»á¬ážááᯠIntel SGX (Software Guard eXtensions) ááᯠááá¯ááºááá¯ááºááá·áº áááºážáááºážáá áºááᯠáá®ááœááºáá²á·ááŒáááºá ááá¯ááºááá¯ááºááŸá¯ááᯠSmashEx áá¯áá±á«áºááŒá®áž Intel SGX á¡ááœáẠruntime á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá¯ááºáá±á¬ááºáá±á ááºá¡ááœááºáž ááŒáœááºážáá»ááºá¡ááŒá±á¡áá±áá»á¬ážááᯠááá¯ááºááœááºáá¬ááœáẠááŒááºáááºáááºáá±á¬ááºááŸá¯ ááŒá¿áá¬áá»á¬ážááŒá±á¬áá·áº ááŒá áºáá±á«áºáá¬ááŒááºážááŒá áºáááºá á¡ááá¯ááŒá¯áá¬ážáá±á¬ ááá¯ááºááá¯ááºááŸá¯áááºážáááºážááẠááá·áºááœáẠáááºáááºááŸá¯á áá áºá¡á¬áž ááááºážáá»á¯ááºááá¯ááºáá«áá enclave ááœááºááŸááá±á¬ áá»áŸáá¯á·ááŸááºá¡áá»ááºá¡áááºáá»á¬ážááᯠáá¯á¶ážááŒááºááẠááá¯á·ááá¯áẠááá·áºáá¯ááºááᯠenclave á memory ááŸáá·áº áááºážááá¯ááºáá±á¬ááºááŸá¯ááœáẠá á¯á ááºážááẠááŒá áºááá¯ááºáááºá
Intel SGX SDK (CVE-2021-0186) ááŸáá·áº Microsoft Open Enclave (CVE-2021-33767) ááá¯á·á¡áá±á«áº á¡ááŒá±áá¶á á¡áá¯á¶ážáá»ááŒááºážááá¯ááºáᬠááŸá±á·ááŒá±ážáá¯á¶á á¶áá»á¬ážááᯠááŒááºáááºáá¬ážáá«áááºá áááááá á¹á ááœááºá HTTPS á¡ááœáẠáááºáá¬áá¬ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº RSA áá±á¬á·ááᯠáá¯ááºáá°ááá¯ááºááŸá¯ááᯠááá¯ááºááŒáá²á·ááŒá®áž áá¯áááááœááºá enclave á¡ááœááºážááœáẠáá¯ááºáá±á¬ááºáá±áá±á¬ cURL utility ááŸáááŸááá±á¬ á¡ááŒá±á¬ááºážá¡áá¬ááᯠáá¯á¶ážááŒááºááẠááŒá áºááá¯ááºáááºá Intel SGX SDK 2.13 ááŸáá·áº Open Enclave 0.17.1 ááá¯á·áááœááºááŸáááŸá¯áá»á¬ážááœáẠá¡á¬ážáááºážáá»ááºááᯠáááá¯ááááºááŒáá·áº ááŒá±ááŸááºážááŒá®ážááŒá áºáááºá Intel SGX SDK ááŸáá·áº Microsoft Open Enclave á¡ááŒááºá á¡á¬ážáááºážáá»ááºááẠGoogle Asylo SDKá EdgelessRTá Apache Teaclaveá Rust SGX SDKá SGX-LKLá CoSMIX ááŸáá·áº Veracruz ááá¯á·ááœááºáááºáž áá±á«áºáá¬áá«áááºá
SGX (Software Guard Extensions) áááºážááá¬ááẠááá¹áááá»áá¯ážááẠIntel Core áááá¯áááºáá¬áá»á¬áž (Skylake) ááœáẠáá±á«áºáá¬ááŒá®áž á¡áá¯á¶ážááŒá¯áá°á¡ááá·áº á¡ááá®áá±ážááŸááºážáá»á¬ážá¡á¬áž ááááºáá¬ážáá±á¬ ááŸááºáá¬ááºá§áááá¬áá»á¬ážááᯠááœá²áá±áááºááŸááºááẠááœáá·áºááŒá¯ááá·áº ááœáŸááºááŒá¬ážáá»ááºáá»á¬áž á¡ááœá²ááá¯áẠáá±ážáá±á¬ááºáá¬ážáááºááᯠááááááŒáá«á áá¯á·á kernel ááŸáá·áº ring0á SMM ááŸáá·áº VMM áá¯ááºáá»á¬ážááœáẠáá¯ááºáá±á¬ááºááá·áº áá¯ááºááá¯ááẠááœááºážáá¶áá¬ážáááºá á á¬áááºážááœááºážááŸá¯áá»á¬ážááŸáá·áº stack ááá¯á·ááŒáá·áº ááá¯ážáá¬áá¯ááºááŒááºážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáá·áº ááá¯ááºááœááºááŒá±ááŸááºážááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áᬠenclave ááŸá áá¯ááºááá¯á· ááááºážáá»á¯ááºááŸá¯ááᯠááœáŸá²ááŒá±á¬ááºážááẠáááŒá áºááá¯ááºáá« - á¡áá°ážáááºáá®ážáá¬ážáá±á¬ ááœáŸááºááŒá¬ážáá»ááºá¡áá ẠEENTERá EEXIT ááŸáá·áº ERESUME ááá¯á·ááᯠá¡á¬áá¬ááá¯ááºá á áºáá±ážááŸá¯áá»á¬ážáá¯ááºáá±á¬ááºááá·áº enclave ááá¯á· ááááºážáá»á¯ááºááœáŸá²ááŒá±á¬ááºážáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá«áááºá á€ááá á¹á ááœááºá enclave ááœááºááá·áºáá¬ážáá±á¬áá¯ááºááẠenclave á¡ááœááºážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯áááºáá±á¬ááºááŒáá·áºááŸá¯áááºááŸáá·áºááŒááºááá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯áá±á«áºááá¯áááºá¡áá°ážááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯áááºááŸá±ážááá¯ážáá±á«áºááá¯ááŸá¯áááºážáááºážáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá Enclave memory encryption ááᯠDRAM module ááŸáá·áº áá»áááºáááºááŒááºážáá²á·ááá¯á·áá±á¬ hardware attacks áá»á¬ážááᯠáá¬ááœááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá«áááºá
ááŒá¿áá¬ááŸá¬ SGX áááºážááá¬ááẠáá¬á·ááºáá²ááŒáœááºážáá»ááºáá áºáá¯á¡á¬áž áá áºáá»ááŒááºážááŒáá·áº áááºáááºááŸá¯á áá áºá¡á¬áž á¡ááá¯ááºážáá áºáá¯á¡á¬áž áá»ááºáá áºááẠááœáá·áºááŒá¯áá¬ážááŒá®ážá enclaves áá»á¬ážááẠááá¯ááŒáœááºážáá»ááºáá»á¬ážá¡á¬áž á¡ááºáááºááŒáá·áº ááá¯ááºááœááºááŒááºážá¡ááœáẠprimitives áá»á¬ážááᯠáá±á¬ááºážá áœá¬ á¡áá±á¬ááºá¡áááºááá±á¬áºááá¯ááºááŒááºážááŒá±á¬áá·áºááŒá áºáááºá áááºáááºááŸá¯á áá Ạkernel ááŸáá·áº áá¯á¶ááŸááºá¡ááá®áá±ážááŸááºážáá»á¬ážááŸáá·áºááá°áá²á enclaves á¡ááœááºážááŸá áá¯ááºáá»á¬ážááẠá¡ááºáááºáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá»áááºááœááºáá»áŸá¬ááŸááá±ážááá·áº ááŒáœááºážáá»ááºáá»á¬ážá¡á¬áž ááá¯ááºááœááºááá·áºá¡áá« á¡ááºáááºáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá á¯á ááºážáááºá¡ááœáẠprimitives áá»á¬ážááá¯á· áááºáá±á¬ááºááœáá·áºáááŸááá«á áááºááŸááºáá¬ážáá±á¬ atomic primitives áá»á¬ážááá«áá²á enclave ááẠá¡áá»áááºáááœá±áž ááŸá±á¬áá·áºááŸááºááá¯ááºááŒá®ážá enclave ááẠá¡áá±ážááŒá®ážáá±á¬á¡ááá¯ááºážáá»á¬ážááᯠáá¯ááºáá±á¬ááºáá±ááŒá®áž ááá¯á¶ááŒá¯á¶áá±á¬á¡ááŒá±á¡áá±ááœáẠááŸááá±ááá·áºá¡áá»áááºáá»á¬ážááœááºáááºá enclave ááẠá¡áá»áááºáááœá±áž ááŸá±á¬áá·áºááŸááºááá¯ááºááŒá®áž execution ááá¯á· ááŒááºááœá¬ážááá¯ááºáááºá
áá¯á¶ááŸááºáááºáááºááŸá¯á¡ááœááºá SGX áááºážááá¬ááẠááŒááºáááºáááºááŸááºááá¯ááºáá±á¬ áá¬á·ááºáá²ááŒáœááºážáá»ááºáá»á¬ážááŒáá·áº á¡ááŸá±á¬ááºá¡ááŸááºááŒá áºá á±ááẠááœáá·áºááŒá¯áá¬ážáááºá á€á¡ááºá¹áá«áááºááẠenclave runtime áááºáááºážáá»ááºáá»á¬ážááᯠá¡ááœááºážááá¯ááºážááŒáœááºážáá»áẠááá¯ááºááœááºááŒááºáž ááá¯á·ááá¯áẠá¡áá»ááºááŒáá¯ááºáá±á¬ááºááŒááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠááœáá·áºááŒá¯áá±á¬áºáááºážá áááºážááẠááŒááºáááºáááºáá±á¬ááºááŸá¯ á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááá¯áááºáž ááŒá áºá á±ááá¯ááºáááºá SmashEx ááá¯ááºááá¯ááºááŸá¯ááẠááŒáœááºážáá»ááºááá¯ááºááœááºáá°ááᯠáá±á¬ááºážá áœá¬áááá¯ááºááœááºááá¯ááºááŒááºážááŒá±á¬áá·áº SDK á¡ááœááºážááŸá áá»áá¯á·ááœááºážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážáá»ááŒááºážá¡áá±á«áº á¡ááŒá±áá¶áá¬ážáááºá á¡á¬ážáááºážáá»ááºááᯠá¡áá¯á¶ážáá»áááºá ááá¯ááºááá¯ááºáá°ááẠenclave ááá¯ááºáá±á¬ááºááŸá¯ááᯠááŸá±á¬áá·áºááŸááºááá¯ááºá áœááºážááŸáááẠá¡áá±ážááŒá®ážáá«áááºá á áá áºáááºáááºážáá»ááºá áááºáááºááŸá¯ááᯠááááºážáá»á¯ááºááááºá
ááŒáœááºážáá»ááºáá áºáá¯á¡á¬áž áá áºáááºááŒá®ážáá±á¬ááºá ááá¯ááºááá¯ááºáá°ááẠááá·áºááœááºážááŸá¯áá±á¬ááºáá»á¬ážááᯠááŒááºááŸááºááŒááºážá¡á¬ážááŒáá·áº execution thread á¡á¬áž ááŒá¬ážááŒááºááá·áºáá¬ážááá¯ááºááá·áº á¡áá»áááºáááºážááá¯ážáááºáá áºáá¯ááᯠáááºáá¶áááŸááááºááŒá áºáááºá á¡áá°ážáááŒáá·áºá áááºááẠá áá Ạ(á¡áááºážá¡ááŒááºáááºááŸá áááºáááºážáá»ááº) ááá¯á· áááºáá±á¬ááºááá¯ááºáá«áá áááºážá¡ááœáẠstack á áá áºááá·áºááœááºážáá±á¬á¡áá«ááœáẠá áá áºááá¯á· ááááºážáá»á¯ááºááŸá¯ ááŒááºáááºáá±á¬ááºááŸáááœá¬ážááá·áº enclave entry instruction (EENTER) ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒá®ážáá±á¬áẠááŒáœááºážáá»ááºá¡áá áºáá áºáá¯ááᯠáááºáá»ááºáá»ááºážáááºáá®ážááá¯ááºáá«áááºá enclave ááẠáááŒá®ážááŒááºáá±ážáá«á áááºážááœáẠCPU ááŸááºáá¯á¶áááºááŸá¯á¡ááŒá±á¡áá±ááá¯áááºáž ááááºážáááºážáá¬ážáááºá
ááá¯á·áá±á¬áẠá áá áºááẠááááºážáá»á¯ááºááŸá¯á¡á¬áž enclave ááá¯á· ááŒááºááœá¬ážááá¯ááºáá±á¬áºáááºáž enclave á stack ááẠinterrupt ááŒá áºáá»áááºááœáẠconfigure ááá¯ááºáá¬ážáá±á¬ááŒá±á¬áá·áº enclave ááẠreturn-oriented programming (ROP) ááœááºááŸááá±á¬ stack ááŒáá·áº execute áá¯ááºááœá¬ážáááºááŒá áºáá«áááºá ) exploitation techniques. Oriented Programming). ROP áááºážááá¬ááᯠá¡áá¯á¶ážááŒá¯áá±á¬á¡áá«á ááá¯ááºááá¯ááºáá°ááẠáááºážááá¯ááºááᯠááŸááºáá¬ááºááœáẠáá¬ážááẠáááŒáá¯ážá á¬ážáá±á¬áºáááºážá áááºáá¬ážááá·áº áá áºáá»á áºááá¯ááºáá»á¬ážááœáẠáááŸááá¬ážááŒá®ážááŒá áºáá±á¬ á ááºááœáŸááºááŒá¬ážáá»ááºá¡ááá¯ááºážáá»á¬ážááᯠáá¯ááºáá±á¬ááºáᬠááááºážáá»á¯ááºááŸá¯ááŒááºáá±ážááá·áº ááœáŸááºááŒá¬ážáá»ááºááŒáá·áº á¡áá¯á¶ážáááºááẠ(á ááºážáááºážá¡áá áááºážááá¯á·ááẠá á¬ááŒáá·áºááá¯ááºáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á¡áá¯á¶ážáá»á¬ážááŒá áºáááº) . exploit áá¡áá¯ááºááẠááá¯áá»ááºáá±á¬áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááá¯áááŸáááẠá¡áá¬ážáá°áá¯ááºááœááºáá»á¬áž ("áááºáá»ááºáá»á¬áž") ááá¯á·áá±á«áºááá¯ááŸá¯ááœááºážáááºáá áºáá¯áááºáá±á¬ááºááŒááºážááŸáááºážáááºáá¬áááºá
source: opennet.ru