Google демонстрираше експлоатација на пропусти на Spectre преку извршување JavaScript во прелистувачот

Google објави неколку експлоат прототипови кои покажуваат можност за искористување на пропустите на класата Specter при извршување на JavaScript код во прелистувачот, заобиколувајќи ги претходно додадените методи за заштита. Експлоатите може да се користат за да се добие пристап до меморијата на процесот на обработка на веб-содржини во тековното јазиче. За да се тестира работата на експлоатот, беше отворена веб-страницата leaky.page, а кодот што ја опишува логиката на работата беше објавен на GitHub.

Предложениот прототип е дизајниран да ги напаѓа системите со процесори Intel Core i7-6500U во околина со Linux и Chrome 88. За користење на експлоатот за други средини, потребни се модификации. Методот на експлоатација не е специфичен за процесорите на Intel - по соодветната адаптација, беше потврдено дека експлоатот работи на системи со процесори од други производители, вклучувајќи го и Apple M1 базиран на архитектура ARM. По мали прилагодувања, експлоатот може да се изврши и во други оперативни системи и во други прелистувачи базирани на моторот Chromium.

Во средина базирана на стандардни процесори Chrome 88 и Intel Skylake, беше можно да се протекуваат податоци од процесот одговорен за обработка на веб-содржини во тековниот таб на Chrome (процес на рендерирање) со брзина од 1 килобајт во секунда. Дополнително, развиени се алтернативни прототипови, на пример, експлоатација што овозможува, по цена на намалување на стабилноста, да се зголеми стапката на истекување на 8 kB/s при користење на тајмерот performance.now() со точност од 5 микросекунди (0.005 милисекунди ). Беше подготвена и верзија која работеше со точност на тајмерот од една милисекунда, што можеше да се искористи за организирање пристап до меморијата на друг процес со брзина од околу 60 бајти во секунда.

Објавениот демо код се состои од три дела. Првиот дел го калибрира тајмерот за да го процени времето на извршување на операциите потребни за враќање на податоците што остануваат во кешот на процесорот како резултат на шпекулативно извршување на инструкциите на процесорот. Вториот дел го одредува распоредот на меморијата што се користи при доделување на низата JavaScript.

Третиот дел директно ја искористува ранливоста на Spectre за одредување на мемориската содржина на тековниот процес како резултат на создавање услови за шпекулативно извршување на одредени операции, чиј резултат е отфрлен од процесорот откако ќе утврди неуспешно предвидување, но трагите на извршувањето се депонирани во општата кеш меморија и може да се обнови со користење на методи за одредување на содржината на кешот од канали од трети страни кои ги анализираат промените во времето на пристап до кешираните и некешираните податоци.

Предложената техника на експлоатација овозможува да се направи без високопрецизни тајмери ​​достапни преку API-то на performance.now() и без поддршка за типот SharedArrayBuffer, кој овозможува создавање низи во споделена меморија. Искористувањето го вклучува гаџетот Spectre, кој предизвикува контролирано шпекулативно извршување на кодот, и анализатор на протекување на страничниот канал, кој открива кеширани податоци добиени за време на шпекулативно извршување.

Гаџетот се имплементира со помош на низа JavaScript во која се прави обид да се пристапи до област надвор од границите на тампонот, што влијае на состојбата на блокот за предвидување на гранката поради присуството на проверка на големината на баферот додадена од компајлерот (процесорот шпекулативно ја извршува пристап предвреме, но ја враќа состојбата по проверка). За да се анализира содржината на кешот во услови на недоволна точност на тајмерот, предложен е метод кој ја измамува стратегијата за иселување на кешот Tree-PLRU што се користи во процесорите и овозможува, со зголемување на бројот на циклуси, значително да се зголеми разликата во времето при враќање. вредност од кешот и кога нема вредност во кешот.

Забележано е дека Google објавил прототип на експлоатацијата со цел да ја покаже изводливоста на нападите користејќи ранливости од класата Spectre и да ги поттикне веб-програмерите да користат техники кои ги минимизираат ризиците од таквите напади. Во исто време, Google верува дека без значителна преработка на предложениот прототип, невозможно е да се создадат универзални експлоатации кои се подготвени не само за демонстрација, туку и за широка употреба.

За да се намали ризикот, сопствениците на сајтовите се охрабруваат да ги користат неодамна имплементираните заглавија Политика за отворач со вкрстено потекло (COOP), Политика за вградување на вкрстено потекло (COEP), политика за ресурси со вкрстено потекло (CORP), Барање за метаподатоци за преземање, X-Frame- Опции, X -Content-Type-Options и SameSite Cookie. Овие механизми не заштитуваат директно од напади, но ви дозволуваат да ги изолирате податоците на страницата од истекување во процеси во кои може да се изврши JavaScript кодот на напаѓачот (протекувањето се јавува од меморијата на тековниот процес, кој, покрај кодот на напаѓачот , исто така може да обработува податоци од друга локација отворена во истиот таб). Главната идеја е да се оддели извршувањето на кодот на страницата во различни процеси од кодот од трета страна добиен од несигурни извори, на пример, вклучени преку iframe.



Извор: opennet.ru

Додадете коментар