Google браузерде JavaScript орындау арқылы Spectre осалдықтарын пайдалануды көрсетеді

Google бұрын қосылған қорғау әдістерін айналып өтіп, браузерде JavaScript кодын орындау кезінде Spectre сыныбының осалдықтарын пайдалану мүмкіндігін көрсететін бірнеше эксплойт прототиптерін жариялады. Эксплойттарды ағымдағы қойындыдағы веб-мазмұнды өңдеу процесінің жадына қол жеткізу үшін пайдалануға болады. Эксплойт жұмысын тексеру үшін leaky.page веб-сайты іске қосылды және жұмыс логикасын сипаттайтын код GitHub сайтында орналастырылды.

Ұсынылған прототип Linux және Chrome 7 орнатылған ортада Intel Core i6500-88U процессорлары бар жүйелерге шабуыл жасауға арналған. Эксплуатацияны басқа орталар үшін пайдалану үшін өзгертулер қажет. Эксплуатация әдісі Intel процессорларына тән емес – тиісті бейімделуден кейін эксплойт ARM архитектурасына негізделген Apple M1 қоса алғанда, басқа өндірушілердің процессорлары бар жүйелерде жұмыс істеу үшін расталды. Кішігірім түзетулерден кейін эксплойт басқа операциялық жүйелерде және Chromium қозғалтқышына негізделген басқа браузерлерде де жұмыс істейді.

Стандартты Chrome 88 және Intel Skylake процессорларына негізделген ортада секундына 1 килобайт жылдамдықпен ағымдағы Chrome қойындысында (көрсеткіш процесі) веб-мазмұнды өңдеуге жауапты процестен деректерді ағып кету мүмкін болды. Бұған қоса, балама прототиптер әзірленді, мысалы, 8 микросекунд (5 миллисекунд) дәлдігімен performance.now() таймерін пайдаланған кезде тұрақтылықты төмендету есебінен ағу жылдамдығын 0.005 кБ/с дейін арттыруға мүмкіндік беретін эксплойт. ). Сондай-ақ бір миллисекундтық таймер дәлдігімен жұмыс істейтін нұсқа дайындалды, оны секундына шамамен 60 байт жылдамдықпен басқа процестің жадысына қол жеткізуді ұйымдастыруға болады.

Жарияланған демо-код үш бөліктен тұрады. Бірінші бөлік CPU нұсқауларын алыпсатарлық орындау нәтижесінде процессор кэшінде қалған деректерді қалпына келтіру үшін қажетті операциялардың орындалу уақытын бағалау үшін таймерді калибрлейді. Екінші бөлім JavaScript массивін бөлу кезінде пайдаланылатын жад орналасуын анықтайды.

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

Ұсынылған пайдалану әдісі performans.now() API арқылы қол жетімді жоғары дәлдіктегі таймерлерсіз және ортақ жадта массивтер жасауға мүмкіндік беретін SharedArrayBuffer түрін қолдаусыз орындауға мүмкіндік береді. Эксплуатацияға кодтың басқарылатын алыпсатарлық орындалуын тудыратын Spectre гаджеті және алыпсатарлық орындау кезінде алынған кэштелген деректерді анықтайтын бүйірлік арнаның ағу анализаторы кіреді.

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

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

Тәуекелді азайту үшін сайт иелеріне жақында енгізілген Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metdata Request, X-Frame- тақырыптарын пайдалану ұсынылады. Параметрлер, X -Content-Type-Options және SameSite Cookie. Бұл механизмдер шабуылдардан тікелей қорғамайды, бірақ олар сайт деректерін шабуылдаушының JavaScript кодын орындауға болатын процестерге ағып кетуден оқшаулауға мүмкіндік береді (ағып кету ағымдағы процестің жадынан орын алады, ол шабуылдаушы кодынан басқа , сол қойындыда ашылған басқа сайттағы деректерді де өңдей алады). Негізгі идея - әртүрлі процестерде сайт кодының орындалуын сенімсіз көздерден алынған үшінші тарап кодтарынан бөлу, мысалы, iframe арқылы енгізілген.



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

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