Инженер Google предложил программную защиту процессоров от атаки типа LVI
Некоторое время назад стало известно о новой уязвимости спекулятивной архитектуры процессоров Intel, которую назвали Load Value Injection (LVI). У компании Intel есть свое мнение об опасности LVI и рекомендации по ее смягчению. Свой вариант защиты от подобных атак предложил инженер компании Google. Но за безопасность придется расплатиться снижением производительности процессора в среднем на 7 %.
Ранее мы отмечали, что опасность LVI кроется не в конкретном механизме, обнаруженном исследователями, а в самом принципе LVI-атаки по побочным каналам, который был показан впервые. Тем самым было открыто новое направление для угроз, о которых ранее никто не подозревал (во всяком случае, об этом не говорилось в публичном пространстве). Поэтому ценность разработки специалиста Google Золя Бриджерса (Zola Bridges) заключается в том, что его заплатка смягчает опасность еще даже неизвестных новых атак по принципу LVI.
Ранее в ассемблер проекта GNU (GNU Assembler) были внесены изменения, которые снижали опасность уязвимости LVI. Эти изменения заключались в добавлении барьерных инструкций LFENCE, которые устанавливали строгую последовательность между обращениями к памяти до и после барьера. Тестирование патча на одном из процессоров Intel поколения Kaby Lake показало снижение производительности до 22 %.
Разработчик Google предложил свой патч с добавлением инструкций LFENCE в набор компиляторов LLVM, а защиту назвал SESES (Speculative Execution Side Effect Suppression). Предложенный им вариант защиты смягчает как угрозы LVI, так и другие подобные, например, Spectre V1/V4. Реализация SESES дает возможность компилятору добавлять инструкции LFENCE в нужных местах в процессе генерации машинного кода. Например, подставлять их перед каждой инструкцией чтения из памяти или записи в память.
Инструкции LFENCE запрещают упреждающее выполнение всех последующих инструкций, пока предыдущие операции чтения из памяти не будут завершены. Очевидно, что это влияет на производительность процессоров. Исследователь выяснил, что в среднем защита SESES снижала скорость выполнения задач с использованием защищенной библиотеки на 7,1 %. Разброс снижения производительности при этом составлял от 4 до 23 %. Первоначальный прогноз исследователей был более пессимистичным, предполагая снижение производительности до 19 раз.