Chrome жүйесіндегі Spectre осалдықтарын пайдаланудың жаңа әдісі

Американдық, австралиялық және израильдік университеттердің бір топ зерттеушілері Chromium қозғалтқышына негізделген браузерлердегі Spectre класындағы осалдықтарды пайдалану үшін жаңа бүйірлік арналы шабуыл әдісін ұсынды. Spook.js кодтық атымен аталған шабуыл JavaScript кодын іске қосу арқылы сайтты оқшаулау механизмін айналып өтуге және ағымдағы процестің бүкіл мекенжай кеңістігінің мазмұнын оқуға мүмкіндік береді, яғни. басқа қойындыларда іске қосылған, бірақ сол процесте өңделген беттердегі деректерге қол жеткізу.

Chrome әртүрлі сайттарды әртүрлі процестерде басқаратындықтан, практикалық шабуылдар жасау мүмкіндігі әртүрлі пайдаланушыларға өз беттерін орналастыруға мүмкіндік беретін қызметтермен шектеледі. Бұл әдіс шабуылдаушыға JavaScript кодын енгізу мүмкіндігі бар парақтан сол сайттан пайдаланушы ашқан басқа беттердің бар-жоғын анықтауға және олардан құпия ақпаратты, мысалы, тіркелгі деректерін немесе ауыстырылған банк деректемелерін шығаруға мүмкіндік береді. веб-пішіндердегі өрістерді автоматты толтыру жүйесі арқылы. Демонстрация ретінде, егер оның иесі басқа қойындыда сол қызметте орналасқан шабуылдаушылар блогын ашса, Tumblr қызметіндегі басқа біреудің блогына қалай шабуыл жасауға болатыны көрсетілген.

Әдісті пайдаланудың тағы бір нұсқасы - шабуылдаушы басқаратын қондырманы орнату кезінде басқа қондырмалардан деректерді шығаруға мүмкіндік беретін шолғыш қондырмаларына шабуыл. Мысал ретінде біз зиянды қондырманы орнату арқылы LastPass құпия сөз реттеушісінен құпия ақпаратты қалай шығаруға болатынын көрсетеміз.

Зерттеушілер CPUIntel i89-7K және i6700-7U бар жүйелерде Chrome 7600 жүйесінде жұмыс істейтін эксплойт прототипін жариялады. Эксплойтті жасау кезінде бұрын Google жариялаған JavaScript кодының прототиптері Spectre класындағы шабуылдарды жүзеге асыру үшін пайдаланылды. Зерттеушілер Intel және Apple M1 процессорлары негізіндегі жүйелер үшін жұмыс эксплойттарын дайындай алды, бұл жадты оқуды секундына 500 байт жылдамдықпен және 96% дәлдікпен ұйымдастыруға мүмкіндік береді. Бұл әдіс AMD процессорларына да қолданылады деп болжануда, бірақ толық функционалды эксплойтты дайындау мүмкін болмады.

Шабуыл Google Chrome, Microsoft Edge және Brave сияқты Chromium қозғалтқышына негізделген кез келген браузерлерге қолданылады. Сондай-ақ зерттеушілер бұл әдісті Firefox-пен жұмыс істеуге бейімдеуге болады деп есептейді, бірақ Firefox қозғалтқышы Chrome-дан айтарлықтай ерекшеленетіндіктен, мұндай эксплойт жасау жұмысы болашаққа қалдырылды.

Нұсқаулардың алыпсатарлық орындалуына байланысты браузер негізіндегі шабуылдардан қорғау үшін Chrome мекенжай кеңістігін сегменттеуді жүзеге асырады - құм жәшігінің оқшаулануы JavaScript-ке тек 32 биттік көрсеткіштермен жұмыс істеуге мүмкіндік береді және өңдегіштердің жадын бөлек 4 ГБ үймелерде бөліседі. Процестің бүкіл адрестік кеңістігіне қол жеткізуді қамтамасыз ету және 32-биттік шектеуді айналып өту үшін зерттеушілер JavaScript қозғалтқышын қате түрі бар нысанды өңдеуге мәжбүрлейтін Type Confusion деп аталатын әдісті пайдаланды, бұл 64-битті құруға мүмкіндік береді. екі 32-биттік мәндердің тіркесіміне негізделген көрсеткіш.

Шабуылдың мәні мынада: JavaScript қозғалтқышында арнайы жасалған зиянды нысанды өңдеу кезінде массивке қол жеткізетін нұсқауларды алыпсатарлық орындауға әкелетін жағдайлар жасалады. Нысан шабуылдаушы басқаратын өрістер 64 биттік көрсеткіш қолданылатын аймаққа орналастырылатындай етіп таңдалады. Зиянды нысанның түрі өңделетін массив түріне сәйкес келмейтіндіктен, қалыпты жағдайларда мұндай әрекеттер Chrome жүйесінде массивтерге қол жеткізу үшін пайдаланылатын кодты оңтайландыру механизмі арқылы бұғатталған. Бұл мәселені шешу үшін Type Confusion шабуылының коды шартты «if» блогына орналастырылады, ол қалыпты жағдайларда белсендірілмейді, бірақ егер процессор одан әрі тармақталуды дұрыс болжай алмаса, алыпсатарлық режимде орындалады.

Нәтижесінде, процессор генерацияланған 64 биттік көрсеткішке алыпсатарлық түрде қатынасады және сәтсіз болжамды анықтағаннан кейін күйді қайтарады, бірақ орындалу іздері ортақ кэште қалады және өзгерістерді талдайтын бүйірлік арна кэшті анықтау әдістері арқылы қалпына келтірілуі мүмкін. кэштелген және кэштелмеген деректерге қол жеткізу уақыты. JavaScript-те қол жетімді таймердің жеткіліксіз дәлдігі жағдайында кэш мазмұнын талдау үшін Google ұсынған әдіс пайдаланылады, ол процессорларда қолданылатын Tree-PLRU кэшті шығару стратегиясын алдайды және циклдар санын көбейту арқылы мүмкіндік береді. кэште мән бар және жоқ кезде уақыт айырмашылығын айтарлықтай арттырады. .

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

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