От 70% до 13%: Google улучшил защиту ядра Linux, но она всё ещё замедляет систему

Google тестирует новый вариант защиты от атак спекулятивного выполнения.


0xsmd6pa8ew3lr2jr8fonisvvaf4791l.jpg


Несколько лет назад инженеры Google начали работать над механизмом Address Space Isolation (ASI) для ядра Linux, который должен был защитить систему от атак с использованием спекулятивного выполнения команд процессора. Идея заключалась в том, чтобы создать универсальную защиту, а не разрабатывать отдельные заплатки для каждой новой уязвимости. Однако первый вариант ASI оказался практически непригоден из-за катастрофической просадки производительности: при работе с вводом-выводом скорость падала на 70%, что было неприемлемо.


bgzu56qt4shao9tlq4ij63wel7s80mgk.png


Теперь ситуация изменилась . Благодаря оптимизациям накладные расходы при работе с 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.