SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

Өздеріңіз білетіндей, анклавта орындалатын код оның функционалдығында айтарлықтай шектеулі. Ол жүйелік қоңырауларды жасай алмайды. Ол енгізу/шығару операцияларын орындай алмайды. Ол хост қолданбасының код сегментінің негізгі мекенжайын білмейді. Ол хост қолданбасының кодын jmp немесе шақыра алмайды. Ол хост қолданбасын басқаратын мекенжай кеңістігінің құрылымы туралы түсінігі жоқ (мысалы, қай беттер салыстырылады немесе сол беттерде қандай деректер түрі орналасқан). Ол операциялық жүйеден хост қолданбасының жадының бір бөлігін оған салыстыруды сұрай алмайды (мысалы, /proc/pid/maps арқылы). Жазу әрекеттерін айтпағанда, хост қолданбасының ерікті жады аймағын соқыр оқуға аңғал әрекеттер ерте ме, кеш пе (бұрынғысы) анклав бағдарламасының мәжбүрлі тоқтатылуына әкеледі. Бұл анклав сұраған виртуалды мекенжай кеңістігі аймағы хост қолданбасы үшін қолжетімсіз болғанда орын алады.

Осындай қатал шындықтарды ескере отырып, вирус жазушысы өзінің зиянды мақсаттарына жету үшін SGX анклавтарын пайдалана алады ма?

– Оқуға болатын-болмайтынын көру үшін мекенжайларды тексеру үшін бұзыңыз
– Жазу мүмкіндігін анықтау үшін адрестерді бұзу
– Басқару ағынын қайта бағыттау үшін бұзу
– Жоғарыда аталған үш бұзақылық жауызға не береді?
– Зұлым адам ранзовари жасау үшін осы хакерлерді қалай пайдаланады

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

Жоғарыда айтылғандардың барлығына сүйене отырып, анклав тек негізгі қолданбаға қызмет көрсете алады және анклав өз бастамасын, соның ішінде зиянды бастамаларды жүзеге асыра алмайды деп жалпы қабылданған. Бұл анклавтардың вирус жазушылары үшін практикалық маңызы жоқ дегенді білдіреді. Бұл асығыс болжам SGX қорғанысының асимметриялық болуының себептерінің бірі болып табылады: хост қолданбасының коды анклав жадына қол жеткізе алмайды, ал анклав коды кез келген хост қолданбасының жады мекенжайын оқи және жаза алады.

Сондықтан, егер зиянды анклав коды хост қолданбасының атынан еркін жүйелік шақырулар жасай алса, оның атынан ерікті кодты орындаса, хост қолданбасының жадын сканерлеп, ондағы теріс пайдаланатын ROP тізбектерін таба алса, ол хост қолданбасын толық бақылауды басып алуы мүмкін. жасырын режим. Ол пайдаланушы файлдарын ұрлап, шифрлап қана қоймай, сонымен қатар пайдаланушы атынан әрекет ете алады. Мысалы, оның атынан фишингтік хаттарды жіберіңіз немесе DoS шабуылдарын жасаңыз. Тіпті ең заманауи қорғаныс механизмдерінен қорықпай, мысалы, канарейкаларды жинау және санитарлық тазарту.

Біз сізге шабуылдаушылар SGX мүмкіндіктерін өздерінің зиянды мақсаттары үшін пайдалану үшін жоғарыда сипатталған шектеулерді еңсеру үшін қолданатын бірнеше бұзақыларды көрсетеміз: ROP шабуылдары. Немесе хост қолданбасы процесі ретінде жасырылған ерікті кодты орындау үшін (зиянды бағдарлама жиі қолданатын қуысты өңдеуге ұқсас) немесе дайын зиянды бағдарламаны жасыру үшін (оның зиянды бағдарламалық құралын антивирустар мен басқа қорғаныс механизмдерінің қудалауынан сақтау үшін).

Мекенжайларды оқуға болатын-болмайтынын білу үшін бұзыңыз

Анклав виртуалды мекенжай кеңістігінің қандай диапазондары хост қолданбасы үшін қолжетімді екенін білмейтіндіктен және қол жетімсіз мекенжайды оқу әрекеті кезінде анклав жұмысын тоқтатуға мәжбүр болғандықтан, шабуылдаушыға қателік жолын табу міндеті тұр. мекенжай кеңістігін шыдамдылықпен сканерлеңіз. Қолжетімді виртуалды мекенжайларды салыстыру жолын табыңыз. Зұлым бұл мәселені Intel компаниясының TSX технологиясын теріс пайдалану арқылы шешеді. TSX жанама әсерлерінің бірін пайдаланады: егер жадқа қол жеткізу функциясы TSX транзакциясында орналастырылса, жарамсыз мекенжайларға қол жеткізуден туындайтын ерекшеліктер операциялық жүйеге жетпестен TSX арқылы басылады. Жарамсыз жад мекенжайына қол жеткізу әрекеті жасалса, бүкіл анклав бағдарламасы емес, тек ағымдағы транзакция тоқтатылады. Бұл. TSX анклавқа транзакция ішіндегі кез келген мекенжайға қауіпсіз қол жеткізуге мүмкіндік береді - құлдырау қаупінсіз.

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

егер көрсетілген мекенжай қолжетімді емес хост қолданбасында TSX орын алған ерекше жағдайды басады (ОЖ хабарланбайды) және транзакцияны тоқтатады. Қате коды анклав кодына қайтарылады, осылайша ол транзакцияның тоқтатылғанына әрекет ете алады. Бұл қате кодтары қарастырылып отырған мекенжай хост қолданбасында қолжетімді емес екенін көрсетеді.

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

Анклав ішінен TSX-ті бұл манипуляциялау қаскүнем үшін жақсы мүмкіндікке ие: анклав коды орындалған кезде аппараттық өнімділік есептегіштерінің көпшілігі жаңартылмағандықтан, анклав ішінде орындалған TSX транзакцияларын қадағалау мүмкін емес. Осылайша, TSX-тің зиянды манипуляциясы операциялық жүйеге мүлдем көрінбейтін болып қалады.

Сонымен қатар, жоғарыда аталған бұзу кез келген жүйелік қоңырауларға сүйенбейтіндіктен, оны жай ғана жүйелік қоңырауларды блоктау арқылы анықтауға немесе болдырмауға болмайды; әдетте жұмыртқаны аулауға қарсы күресте оң нәтиже береді.

Зұлым адам ROP тізбегін құруға жарамды гаджеттерді хост қолданбасының кодын іздеу үшін жоғарыда сипатталған бұзуды пайдаланады. Бұл ретте оған әрбір мекенжайды тексерудің қажеті жоқ. Виртуалды мекенжай кеңістігінің әрбір бетінен бір адресті тексеру жеткілікті. Барлық 16 гигабайт жадты тексеру шамамен 45 минутты алады (Intel i7-6700K құрылғысында). Нәтижесінде зұлым ROP тізбегін құруға жарамды орындалатын беттердің тізімін алады.

Жазу мүмкіндігі үшін мекенжайларды тексеруге арналған бұзу

ROP шабуылының анклав нұсқасын орындау үшін шабуылдаушы хост қолданбасының жазылатын пайдаланылмайтын жады аймақтарын іздей алуы керек. Шабуыл жасаушы бұл жад орындарын жалған стек жақтауын енгізу және пайдалы жүктемені (қабық кодын) енгізу үшін пайдаланады. Қорытындысы: зиянды анклав хост қолданбасынан өзіне жад бөлуді талап ете алмайды, бірақ оның орнына хост қолданбасы бөлген жадты теріс пайдалануы мүмкін. Әрине, ол анклавты құлатпай осындай аймақтарды тауып үлгерсе.

Зұлым бұл іздеуді TSX-тің басқа жанама әсерін пайдалану арқылы жүзеге асырады. Алдымен, алдыңғы жағдайдағыдай, ол адрестің бар-жоғын тексереді, содан кейін осы адреске сәйкес беттің жазылу мүмкіндігін тексереді. Бұл үшін зұлым адам келесі бұзуды пайдаланады: ол TSX транзакциясында жазу функциясын орналастырады және ол аяқталғаннан кейін, бірақ ол аяқталмай тұрып, транзакцияны мәжбүрлеп тоқтатады (анық аборт).

TSX транзакциясының қайтару кодын қарап, шабуылдаушы оның жазылу мүмкіндігін түсінеді. Егер бұл «ашық түсік» болса, зұлым адам жазбаны жалғастырған жағдайда сәтті болатынын түсінеді. Егер бет тек оқуға арналған болса, транзакция «анық тоқтатудан» басқа қатемен аяқталады.

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

Бұл TSX манипуляциясының қаскүнемге ұнайтын тағы бір ерекшелігі бар (аппараттық өнімділік есептегіштері арқылы қадағалау мүмкін еместігінен басқа): барлық жадты жазу пәрмендері транзакция сәтті болған жағдайда ғана орындалатындықтан, транзакцияны аяқтауға мәжбүрлеу зерттелетін жад ұяшығын қамтамасыз етеді. өзгеріссіз қалады.

Басқару ағынын қайта бағыттау үшін бұзу

Анклавтан ROP шабуылын орындаған кезде - дәстүрлі ROP шабуылдарынан айырмашылығы - шабуылдаушы шабуылға ұшыраған бағдарламадағы қателерді пайдаланбай (буфердің толып кетуі немесе сол сияқты) RIP регистрін басқара алады. Шабуылдаушы стекте сақталған RIP регистрінің мәнін тікелей қайта жаза алады. Атап айтқанда, ол осы регистрдің мәнін өзінің ROP тізбегімен алмастыра алады.

Дегенмен, егер ROP тізбегі ұзын болса, онда хост қолданбасы стекінің үлкен бөлігін қайта жазу деректердің бұзылуына және бағдарламаның күтпеген әрекетіне әкелуі мүмкін. Өз шабуылын жасырын жүзеге асыруға ұмтылған жауыздың бұл күйі көңілі толмайды. Сондықтан ол өзі үшін жалған уақытша стек жақтауын жасайды және оның ішінде ROP тізбегін сақтайды. Жалған стектің жақтауы нақты стекті өзгеріссіз қалдырып, кездейсоқ жазылатын жад орнына орналастырылады.

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

Жоғарыда аталған үш шабуыл зұлым адамға не береді?

(1) Біріншіден, зиянды анклав арқылы мекенжайларды оқуға болатын-болмайтынын тексеру үшін бұзыңыз, – хост қолданбасынан теріс пайдаланатын ROP гаджеттерін іздейді.

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

(2) Содан кейін жазылу мүмкіндігін анықтау үшін адрестерді бұзу, – зиянды анклав хост қолданбасының жадындағы пайдалы жүктемені енгізуге жарамды аймақтарды анықтайды.

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

(3) Одан кейін анклав (1)-қадамда табылған гаджеттерден ROP тізбегін жасайды және осы тізбекті негізгі қолданбалар стекіне енгізеді.

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

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

Зұлым адам ранзовари жасау үшін осы хакерлерді қалай пайдаланады

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

Қабылдауды жеңілдету үшін анықтамалар арқылы кейбір мнемотехниканы енгізейік:

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

Пайдалы жүктемені орындағаннан кейін хост қолданбасының қалыпты жұмысын қалпына келтіру үшін RSP және RBP регистрлерінің бастапқы мәндерін сақтаймыз:

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

Біз сәйкес стек жақтауын іздейміз («басқару ағынын қайта бағыттау үшін бұзу» тарауындағы кодты қараңыз).

Сәйкес ROP гаджеттерін табу:

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

Пайдалы жүктемені енгізу үшін орынды табу:

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

Біз ROP тізбегін саламыз:

SGX зиянды бағдарламасы: зұлымдар жаңа Intel технологиясын ол тағайындалған мақсаттардан басқа мақсаттарда қалай пайдаланады

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

Ақпарат көзі: www.habr.com

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