Выявлена методика, которая позволяет вредоносным сайтам пользоваться браузером Edge

Эксперты из Google Project Zero обнародовали информацию о методике обхода механизма, защищающего браузер Microsoft Edge от эксплоитов.

Под защитным механизмом имеется в виду технология Arbitrary Code Guard (ACG), которую внедрили в Windows 10 Creators Update для противодействия кибератакам, которые подразумевают загрузку вредоносного кода в память. ACG позволяет переносить в память устройства лишь код, имеющий соответствующую подпись. Однако JIT-компиляторы, работающие в современных браузерах, могут быть источником проблем для ACG. Они преобразуют JavaScript в «родной» код, который может не иметь подписи и быть запущен в процессе контента. Чтобы JIT-компиляторы могли функционировать при активированном механизме ACG, Microsoft выделила динамическую компиляцию в браузере Edge как отдельный процесс, который запускается в изолированной песочнице.

В Microsoft утверждают, что процедура JIT компилиркет JavaScript в «родной» код и запускает его в запрашиваемом процессе контента. Сам по себе процесс контента не может отображать в память или изменять собственные страницы JIT-кода. Однако специалисты Google Project Zero выявили уязвимость в процедуре записи исполняемых данных в процессе контента при JIT-компиляции.

Методика, представленная экспертами, дает скомпрометированному процессу контента возможность определять, какой адрес в рамках JIT-процесса вызовет VirtualAllocEx() следующим, распределять участок памяти для записи по тому же адресу, который будет использован JIT-сервером, и записать туда полезную нагрузку для оперативного выполнения.

Эксперты сообщили о проблеме представителям Microsoft в середине ноября минувшего года, и через 90 дней, отведенных на исправление ошибки, обнародовали детальную информацию об уязвимости. Корпорация планировала внедрить уязвимость к февралю, но проблема оказалась гораздо сложнее. Вероятный выход патча запланирован на март.

JIT-компиляция (just-in-time compilation) или динамическая компиляция – технология, которая увеличивает производительность программных систем, использующих байт-код, посредством компиляции байт-кода в машинный код либо в иной формат во время работы программы.