Microsoft Edge тестирует отключение JIT-компилятора JavaScript для повышения безопасности
Microsoft проводила эксперименты и тестирование производительности со специальными сборками своего браузера Edge, в которых JIT-компилятор отключен. Цель эксперимента - увидеть, насколько это может положительно сказаться на безопасности.
JIT или интерпретатор «точно вовремя» - это модуль, в котором JavaScript обрабатывается и компилируется динамически, когда к коду обращается браузер. В то время как такие языки, как C ++ и C #, сначала обрабатываются компилятором, прежде чем выполнение станет возможным, интерпретатор JIT обрабатывает и оптимизирует JavaScript, поскольку он читается в реальном времени, как следует из названия.
Microsoft опубликовала статью под названием «Super Duper Secure Mode», посвященную эксперименту с отключением JIT-компилятора в Edge. Изюминкой этого изменения является то, что с выключенным JIT-компилятором браузер смог использовать несколько технологий защиты, несовместимых с JIT.
К ним относятся технология Intel Control-Flow Enforcement Technology (CET), а также Microsoft Arbitrary Code Guard - дополнительная мера по смягчению последствий, существующая в Windows.
В статье Microsoft, составленной Джонатаном Нормалом, который возглавляет исследование уязвимостей MS Edge, назван тот факт, что эти технологии несовместимы с JIT, «неудачным», поскольку интерпретатор работает с «ненадежным контентом», который должен быть как ограничен в разрешениях, так и заблокирован "насколько это возможно.
ZDNet сообщает, что, хотя внутреннее тестирование, проведенное Microsoft, утверждает, что пользователи почти не замечают какого-либо наблюдаемого замедления при отключенной JIT, внешние тесты производительности зафиксировали значительное снижение производительности.
Время загрузки страницы также было затронуто: Microsoft сообщает о регрессе «примерно на 17%», в то время как время запуска браузера немного улучшилось с отключенной JIT.
Пользователи, которые хотят протестировать режим Super Duper Secure самостоятельно, должны будут получить бета-версию браузера Edge и включить режим на странице настроек edge: // flags.
В настоящее время WebAssembly несовместим с режимом Super Duper Secure, и включен только Intel CET, но это, конечно, может быть изменено, поскольку режим дорабатывается и настраивается.