Вы, вероятно, думаете, как и я, что все можно исправить с помощью программного обеспечения, но похоже, что последний класс атак требует большего, чем просто программное обеспечение для исправления. Исследователи Google убеждены, что с этим справится только замена оборудования.
Если вы следили за продолжающейся катастрофой медленного поезда, которая представляет собой попытки исправить атаки по побочным каналам, изобретенные в прошлом году, то заключение Google вас не удивит. Проблема в том, что современные процессоры запускают несколько программ на одном и том же оборудовании без полной изоляции между ними. На самом деле отсутствие изоляции сделано намеренно, потому что может ускорить процесс. Например, если у одного потока есть данные в кэше, которые нужны другому потоку, то данные будут извлечены быстрее, чем новый поток унаследовал «холодный» кеш. Все эти архитектурные особенности — чудо, но они не учитывают, насколько злым может быть мир. Теплый кеш может показать, просто отсчитывая время, необходимое для извлечения данных, с чем работал другой поток. После некоторых очень практических демонстраций выяснилось, что такая временная атака может достаточно надежно привести к утечке больших объемов данных.
Детали всех этих атак сложны, но общая идея проста — общее состояние любого вида может привести к утечке данных, если мы достаточно изобретательны. Сначала кажется, что эти дефекты локализованы и представляют собой своего рода ошибку в конструкции конкретных процессоров, но похоже, что все мы попали в одну и ту же ловушку:
«В результате нашей работы над Spectre мы теперь знаем, что утечки информации могут затронуть все процессоры, выполняющие предположения, независимо от архитектуры набора команд, производителя, тактовой частоты, виртуализации или разрешения таймера».
То есть ошибка является частью общей микроархитектуры, которую почти все процессоры приняли в попытке стать более эффективными.
«Уязвимости из-за спекулятивного выполнения не являются ошибками процессора, а более правильно считаются фундаментальными недостатками дизайна, поскольку они не возникают из-за ошибок. К сожалению, эти фундаментальные недостатки дизайна десятилетиями игнорировались ведущими умами».
В новой статье исследователей Google делается вывод о том, что универсальное устройство чтения существует на большинстве современных процессоров. Более того, обычное исправление снижения точности таймера, доступного для языка, не помогает, поскольку существуют процедуры «усиления», которые могут увеличить разницу во времени, используемую в атаке.
Чтобы доказать, что это возможно, исследовательская группа Google заявляет:
«… мы разработали доказательства концепции на C ++, JavaScript и WebAssembly для всех обнаруженных уязвимостей. Нам удалось получить утечку более 1 КБ / с из гаджетов варианта 1 на C ++ с помощью rdtsc с точностью 99,99% и более 10 КБ / с из JavaScript. используя таймер с низким разрешением «.
Они также попытались реализовать защиту от атак и пришли к выводу, что ни одно из них не было идеальным. Использование барьеров памяти замедлило работу чуть менее чем в 3 раза. Часто используемый подход ретполина замедлял работу в 1,5 раза. Во всех случаях замедление было неприемлемым для большинства применений. Важнее. подход, который они назвали «вариантом 4», нельзя было смягчить с помощью программного обеспечения.
Тревожит и заключение к статье:
«На протяжении десятилетий сообщество предполагало, что безопасность языка программирования, усиленная статическими и динамическими проверками, может гарантировать конфиденциальность между вычислениями в одном и том же адресном пространстве. Наша работа обнаружила множество уязвимостей в сегодняшних языках, которые при запуске на современных процессорах позволяют создавать универсальные гаджет чтения, который полностью разрушает языковую конфиденциальность …
Компьютерные системы стали чрезвычайно сложными, преследуя, казалось бы, главную цель — производительность. Нам чрезвычайно удалось сделать их более быстрыми и мощными, но также и более сложными, чему способствовали наши многочисленные способы создания абстракций. Башня абстракций позволила нам обрести уверенность в наших разработках за счет отдельных рассуждений и проверок, отделения аппаратного обеспечения от программного обеспечения и введения границ безопасности. Но мы снова видим, что наши абстракции просачиваются, побочные каналы существуют за пределами наших моделей, и теперь, глубоко в аппаратном обеспечении, которое мы не должны были видеть, есть уязвимости в тех самых микросхемах, которые мы развернули по всему миру. Наши модели, наши ментальные модели ошибочны; мы все время жертвовали безопасностью на производительность и сложность и не знали об этом. Как это ни печально, но сегодня защита требует еще большего усложнения программных средств защиты, большинство из которых, как мы знаем, являются неполными. А сложность еще больше усложняет эти три открытые проблемы. Возможно, Spectre слишком уместно названо, так как кажется, что ему суждено преследовать нас в течение долгого времени ».
Похоже, мы должны смириться с тем простым фактом, что все наши машины подвержены такого рода атакам и, если мошеннический процесс работает на той же машине вместе с нашим процессом, он может прочитать все содержимое памяти. Это, конечно, особенно беспокоит облачные вычисления, где виртуальные машины, принадлежащие разным компаниям, обычно работают на одном и том же оборудовании.
Пока производители оборудования не найдут решение, кажется, что это век полностью небезопасных вычислений.