Хабрахабр

Исследователи из Google: для защиты от Spectre требуется изменение архитектуры процессоров, программные патчи не помогут

В январе 2018 года исследователи Google раскрыли в публичном доступе информацию о фундаментальной аппаратной уязвимости в большинстве современных процессоров, имеющих спекулятивное выполнение команд. Уязвимость Spectre (и смежная Meltdown) эксплуатирует механизм предсказания ветвлений в CPU и позволяет проводить чтение данных через сторонний канал в виде общей иерархии кэш-памяти. Другими словами, любое приложение на компьютере может получить доступ на чтение к произвольным местам памяти, что нарушает изоляцию программ, провоцирует утечку данных, отказ в обслуживании и прочие неприятности.

Хуже всего, что уязвимости подвержены практически все современные процессоры (кроме RISC и российского «Эльбруса»), потому что предсказание ветвлений стало фундаментальной частью архитектуры современных CPU, от которой невозможно отказаться без значительной потери производительности.
На самом деле исследователи нашли уязвимость ещё в середине 2017 года, просто о ней не сообщали широкой публике, чтобы у производителей процессоров и систем была возможность подготовить обновления микрокода и программного обеспечения.

Обновление доступно в виде пакетов для Red Hat Enterprise Linux, SUSE Linux Enterprise Server, CentOS, Fedora, Ubuntu, Debian и Chrome OS, позволяющих обновить микрокод без обновления BIOS. Поэтому сразу после официального анонса в первых числах января Intel выпустила обновление микрокода для большого числа актуальных и устаревших моделей процессоров. Правда, первые версии Линус Торвальдс назвал «абсолютнейшим мусором», а Intel попросила прекратить их установку, а потом перевыпустила. Обновление микрокода не отменяет необходимости применения KPTI-патчей к ядру Linux.

Не избежал приключений патч для Windows 10: компания Microsoft выпустила его, отозвала, потом выпустила снова. Обновления выпустили другие производители для своих продуктов, соответствующие патчи вышли для большинства операционных систем.

Казалось бы, на этом можно поставить точку. Но после всех этих приключений история вроде закончилась: вышли стабильные версии патчей и все, кто хотел, их установил. Спустя год, 14 февраля 2019 года, группа исследователей из Google опубликовала отчёт с говорящим названием «Spectre останется с нами. Но нет. Исследователи пришли к выводу, что только программными патчами полностью закрыть уязвимость невозможно. Анализ атак по сторонним каналам и спекулятивного исполнения». Для этого потребуется «значительная переработка процессоров».

Авторы пишут, что все процессоры со спекулятивным выполнением всегда будут подвержены различным атакам боковых каналов, несмотря на методы частичной защиты, которое могут быть реализованы в будущем. Из отчёта можно сделать вывод, что уязвимость действительно фундаментальная.

При этом не существует комплексной программной защиты, поскольку мы обнаружили, что зловредный код может создать универсальный механизм чтения всей памяти в том же адресном пространстве через сторонние каналы». В отчёте сказано: «Мы считаем, что на современном оборудовании спекулятивные уязвимости подрывают конфиденциальность, реализованную на программном уровне.

Но проблема в том, что Spectre — это не просто баг. Intel говорила, что намерена осуществить некоторые аппаратные изменения в процессорах для защиты от Spectre. Поэтому простыми патчами тут не обойтись. Исследователи считают, что это широкий класс уязвимостей, которые эксплуатируют механизм предсказания ветвлений.

Исследователи предложили несколько потенциальных решений, а именно:

  • полное отключение спекулятивного исполнения;
  • снижение точности таймера;
  • маскирование ветвлений (поскольку любую проверку безопасности, внедрённую в код в виде ветвления, можно обойти по самой природе предсказания ветвлений, то авторы предлагают вообще не рассматривать ветвления в проектировании механизмов безопасности).

Исследователи делают неутешительный вывод: «Наши модели, наши ментальные модели ошибочны; мы пожертвовали безопасностью ради производительности и сложности, и не знали об этом. Сейчас горькая ирония заключается в том, что для защиты требуется внедрение ещё большей сложности с помощью программных средства, большинство из которых, как мы знаем, являются неполными… Похоже, Spectre получил слишком удачное название, потому что ему суждено ещё долго нас преследовать».

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть