Анклавта құпия деректерді шығару немесе кодты орындау үшін Intel SGX жүйесіне шабуыл жасаңыз

Халық азаттық армиясының қорғаныс ғылыми-техникалық университетінің, Сингапур Ұлттық университетінің және ETH Цюрихтің зерттеушілері Intel SGX (Software Guard eXtensions) оқшауланған анклавтарына шабуыл жасаудың жаңа әдісін әзірледі. Шабуыл SmashEx деп аталады және Intel SGX үшін жұмыс уақыты құрамдастарының жұмысы кезінде ерекше жағдайларды өңдеу кезінде қайта кіру ақауларынан туындайды. Ұсынылған шабуыл әдісі операциялық жүйені басқара алатын болсаңыз, анклавта орналасқан құпия деректерді анықтауға немесе кодты анклав жадына көшіруді және оның орындалуын ұйымдастыруға мүмкіндік береді.

Эксплойт прототиптері Intel SGX SDK (CVE-2021-0186) және Microsoft Open Enclave (CVE-2021-33767) негізінде орындалу уақыты бар анклавтар үшін дайындалған. Бірінші жағдайда HTTPS үшін веб-серверде қолданылатын RSA кілтін шығару мүмкіндігі көрсетілді, ал екіншісінде анклав ішінде жұмыс істейтін cURL утилитасы арқылы алынған мазмұнды анықтау мүмкін болды. Бұл осалдық 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) пайда болды және пайдаланушы деңгейіндегі қолданбаларға мазмұнын оқуға және оқуға болмайтын жабық жад аумақтарын - анклавтарды бөлуге мүмкіндік беретін бірқатар нұсқауларды ұсынады. тіпті ring0, SMM және VMM режимдерінде орындалатын ядро ​​мен код арқылы өзгертілген. Анклавтағы кодқа басқаруды дәстүрлі көшіру функцияларын және регистрлермен және стекпен манипуляцияларды пайдалана отырып беру мүмкін емес - басқаруды анклавқа беру үшін арнайы жасалған жаңа нұсқаулар EENTER, EEXIT және ERESUME пайдаланылады, олар өкілеттіктерді тексеруді жүзеге асырады. Бұл жағдайда анклавқа орналастырылған код анклав ішіндегі функцияларға қол жеткізу үшін классикалық шақыру әдістерін және сыртқы функцияларды шақыру үшін арнайы нұсқауларды пайдалана алады. Анклав жады шифрлауы DRAM модуліне қосылу сияқты аппараттық шабуылдардан қорғау үшін пайдаланылады.

Анклавта құпия деректерді шығару немесе кодты орындау үшін Intel SGX жүйесіне шабуыл жасаңыз

Мәселе мынада, SGX технологиясы операциялық жүйеге аппараттық ерекшелікті шығару арқылы анклавты тоқтатуға мүмкіндік береді және анклавтар мұндай ерекшеліктерді атомдық өңдеуге арналған примитивтерді дұрыс орындамайды. Амалдық жүйе ядросы мен кәдімгі қолданбалардан айырмашылығы, анклавтар ішіндегі код асинхронды түрде шығарылған ерекше жағдайларды өңдеу кезінде атомдық әрекеттерді ұйымдастыруға арналған примитивтерге қол жеткізе алмайды. Көрсетілген атомдық примитивтерсіз анклавты кез келген уақытта үзіп, орындауға қайтаруға болады, тіпті анклав маңызды бөлімдерді орындайтын және қауіпті күйде болған кезде де (мысалы, процессор регистрлері сақталмаған/қалпына келтірілмеген кезде).

Анклавта құпия деректерді шығару немесе кодты орындау үшін Intel SGX жүйесіне шабуыл жасаңыз

Қалыпты жұмыс үшін SGX технологиясы конфигурацияланатын аппараттық ерекшеліктер арқылы анклавтың орындалуын үзуге мүмкіндік береді. Бұл мүмкіндік анклавтың орындалу орталарына анклав ішіндегі ерекше жағдайларды өңдеуді немесе сигналды өңдеуді жүзеге асыруға мүмкіндік береді, бірақ ол сонымен қатар қайта кіру қателерін тудыруы мүмкін. SmashEx шабуылы SDK-дағы кемшіліктерді пайдалануға негізделген, соның салдарынан ерекше жағдай өңдеушісін қайта шақыру жағдайы дұрыс өңделмейді. Маңыздысы, осалдықты пайдалану үшін шабуылдаушы анклавтың орындалуын тоқтата алуы керек, яғни. жүйе ортасының жұмысын бақылауы керек.

Ерекше жағдайды шығарғаннан кейін шабуылдаушы шағын уақыт терезесін алады, оның барысында енгізу параметрлерін басқару арқылы орындау ағынын ұстауға болады. Атап айтқанда, жүйеге рұқсатыңыз болса (анклавтан тыс орта), анклавқа кіру нұсқаулығын (EENTER) орындағаннан кейін бірден жаңа ерекшелік жасай аласыз, ол жүйеге басқаруды стек орнату сатысында қайтарады. анклав әлі аяқталмады, онда CPU регистрлерінің күйі де сақталады.

Содан кейін жүйе басқаруды анклавқа қайтара алады, бірақ үзіліс кезінде анклав стегі конфигурацияланбағандықтан, анклав жүйелік жадта орналасқан стекпен орындалады, оны қайтаруға бағытталған бағдарламалауды (ROP) қолдануға болады. ) пайдалану әдістері.Бағдарланған бағдарламалау). ROP техникасын пайдаланған кезде, шабуылдаушы өз кодын жадқа орналастыруға тырыспайды, бірақ жүктелген кітапханаларда бұрыннан бар машина нұсқауларының бөліктерімен жұмыс істейді, басқаруды қайтару нұсқауымен аяқталады (әдетте, бұл кітапхана функцияларының соңы). . Эксплойт жұмысы қалаған функционалдылықты алу үшін ұқсас блоктарға («гаджеттер») қоңыраулар тізбегін құрумен байланысты.

Анклавта құпия деректерді шығару немесе кодты орындау үшін Intel SGX жүйесіне шабуыл жасаңыз
Анклавта құпия деректерді шығару немесе кодты орындау үшін Intel SGX жүйесіне шабуыл жасаңыз


Ақпарат көзі: opennet.ru

пікір қалдыру