Несколько лет назад инженеры Google начали работать над механизмом Address Space Isolation (ASI) для ядра Linux, который должен был защитить систему от атак с использованием спекулятивного выполнения команд процессора. Идея заключалась в том, чтобы создать универсальную защиту, а не разрабатывать отдельные заплатки для каждой новой уязвимости. Однако первый вариант ASI оказался практически непригоден из-за катастрофической просадки производительности: при работе с вводом-выводом скорость падала на 70%, что было неприемлемо.
Теперь ситуация изменилась. Благодаря оптимизациям накладные расходы при работе с I/O снизились до 13%, и инженер Google Брэндан Джекман вновь представил разработку сообществу Linux. По его словам, главное улучшение — решение проблемы с кэшом страниц, которая сильно замедляла работу системы. Ранее ASI использовался Google лишь для виртуальных машин KVM, а при работе с процессами на «голом» железе возникали серьёзные трудности.
Текущие тесты показывают: случайные чтения с помощью FIO всё ещё медленнее на 13% по сравнению с системой без ASI, а сборка ядра Linux замедляется примерно на 6–7%. Джекман признаёт, что это всё ещё хуже желаемого, но прогресс очевиден. Он считает, что оставшиеся потери производительности связаны в основном с ненужными выходами из ASI при переключении контекстов, очистке выделенных страниц памяти и операциях copy-on-write. Часть этих проблем можно устранить с помощью механизма ephmap, хотя его реализация требует осторожности, чтобы не открыть новые возможности для атак.
Теперь разработчики хотят понять, достаточно ли улучшений для того, чтобы двигаться к включению ASI в основную ветку ядра Linux. Джекман обратился к сообществу x86-разработчиков с вопросом, видят ли они «свет в конце туннеля» и какие дополнительные эксперименты стоит провести. Что ж, остаётся ждать, станет ли ASI стандартной защитой ядра Linux или так и останется экспериментом Google.