В январе 2018 года исследователи Google раскрыли в публичном доступе информацию о фундаментальной аппаратной уязвимости в большинстве современных процессоров, имеющих спекулятивное выполнение команд. Уязвимость Spectre (и смежная Meltdown) эксплуатирует механизм предсказания ветвлений в CPU и позволяет проводить чтение данных через сторонний канал в виде общей иерархии кэш-памяти. Другими словами, любое приложение на компьютере может получить доступ на чтение к произвольным местам памяти, что нарушает изоляцию программ, провоцирует утечку данных, отказ в обслуживании и прочие неприятности.
Хуже всего, что уязвимости подвержены практически все современные процессоры (кроме RISC и российского «Эльбруса»), потому что предсказание ветвлений стало фундаментальной частью архитектуры современных CPU, от которой невозможно отказаться без значительной потери производительности.
На самом деле исследователи нашли уязвимость ещё в середине 2017 года, просто о ней не сообщали широкой публике, чтобы у производителей процессоров и систем была возможность подготовить обновления микрокода и программного обеспечения.
Поэтому сразу после официального анонса в первых числах января Intel выпустила обновление микрокода для большого числа актуальных и устаревших моделей процессоров. Обновление доступно в виде пакетов для Red Hat Enterprise Linux, SUSE Linux Enterprise Server, CentOS, Fedora, Ubuntu, Debian и Chrome OS, позволяющих обновить микрокод без обновления BIOS. Обновление микрокода не отменяет необходимости применения KPTI-патчей к ядру Linux. Правда, первые версии Линус Торвальдс назвал «абсолютнейшим мусором», а Intel попросила прекратить их установку, а потом перевыпустила.
Обновления выпустили другие производители для своих продуктов, соответствующие патчи вышли для большинства операционных систем. Не избежал приключений патч для Windows 10: компания Microsoft выпустила его, отозвала, потом выпустила снова.
Но после всех этих приключений история вроде закончилась: вышли стабильные версии патчей и все, кто хотел, их установил. Казалось бы, на этом можно поставить точку. Но нет. Спустя год, 14 февраля 2019 года, группа исследователей из Google опубликовала отчёт с говорящим названием «Spectre останется с нами. Анализ атак по сторонним каналам и спекулятивного исполнения». Исследователи пришли к выводу, что только программными патчами полностью закрыть уязвимость невозможно. Для этого потребуется «значительная переработка процессоров».
Из отчёта можно сделать вывод, что уязвимость действительно фундаментальная. Авторы пишут, что все процессоры со спекулятивным выполнением всегда будут подвержены различным атакам боковых каналов, несмотря на методы частичной защиты, которое могут быть реализованы в будущем.
В отчёте сказано: «Мы считаем, что на современном оборудовании спекулятивные уязвимости подрывают конфиденциальность, реализованную на программном уровне. При этом не существует комплексной программной защиты, поскольку мы обнаружили, что зловредный код может создать универсальный механизм чтения всей памяти в том же адресном пространстве через сторонние каналы».
Intel говорила, что намерена осуществить некоторые аппаратные изменения в процессорах для защиты от Spectre. Но проблема в том, что Spectre — это не просто баг. Исследователи считают, что это широкий класс уязвимостей, которые эксплуатируют механизм предсказания ветвлений. Поэтому простыми патчами тут не обойтись.
Исследователи предложили несколько потенциальных решений, а именно:
Исследователи делают неутешительный вывод: «Наши модели, наши ментальные модели ошибочны; мы пожертвовали безопасностью ради производительности и сложности, и не знали об этом. Сейчас горькая ирония заключается в том, что для защиты требуется внедрение ещё большей сложности с помощью программных средства, большинство из которых, как мы знаем, являются неполными… Похоже, Spectre получил слишком удачное название, потому что ему суждено ещё долго нас преследовать».
Хуже всего, что уязвимости подвержены практически все современные процессоры (кроме RISC и российского «Эльбруса»), потому что предсказание ветвлений стало фундаментальной частью архитектуры современных CPU, от которой невозможно отказаться без значительной потери производительности.
На самом деле исследователи нашли уязвимость ещё в середине 2017 года, просто о ней не сообщали широкой публике, чтобы у производителей процессоров и систем была возможность подготовить обновления микрокода и программного обеспечения.
Поэтому сразу после официального анонса в первых числах января Intel выпустила обновление микрокода для большого числа актуальных и устаревших моделей процессоров. Обновление доступно в виде пакетов для Red Hat Enterprise Linux, SUSE Linux Enterprise Server, CentOS, Fedora, Ubuntu, Debian и Chrome OS, позволяющих обновить микрокод без обновления BIOS. Обновление микрокода не отменяет необходимости применения KPTI-патчей к ядру Linux. Правда, первые версии Линус Торвальдс назвал «абсолютнейшим мусором», а Intel попросила прекратить их установку, а потом перевыпустила.
Обновления выпустили другие производители для своих продуктов, соответствующие патчи вышли для большинства операционных систем. Не избежал приключений патч для Windows 10: компания Microsoft выпустила его, отозвала, потом выпустила снова.
Но после всех этих приключений история вроде закончилась: вышли стабильные версии патчей и все, кто хотел, их установил. Казалось бы, на этом можно поставить точку. Но нет. Спустя год, 14 февраля 2019 года, группа исследователей из Google опубликовала отчёт с говорящим названием «Spectre останется с нами. Анализ атак по сторонним каналам и спекулятивного исполнения». Исследователи пришли к выводу, что только программными патчами полностью закрыть уязвимость невозможно. Для этого потребуется «значительная переработка процессоров».
Из отчёта можно сделать вывод, что уязвимость действительно фундаментальная. Авторы пишут, что все процессоры со спекулятивным выполнением всегда будут подвержены различным атакам боковых каналов, несмотря на методы частичной защиты, которое могут быть реализованы в будущем.
В отчёте сказано: «Мы считаем, что на современном оборудовании спекулятивные уязвимости подрывают конфиденциальность, реализованную на программном уровне. При этом не существует комплексной программной защиты, поскольку мы обнаружили, что зловредный код может создать универсальный механизм чтения всей памяти в том же адресном пространстве через сторонние каналы».
Intel говорила, что намерена осуществить некоторые аппаратные изменения в процессорах для защиты от Spectre. Но проблема в том, что Spectre — это не просто баг. Исследователи считают, что это широкий класс уязвимостей, которые эксплуатируют механизм предсказания ветвлений. Поэтому простыми патчами тут не обойтись.
Исследователи предложили несколько потенциальных решений, а именно:
- полное отключение спекулятивного исполнения;
- снижение точности таймера;
- маскирование ветвлений (поскольку любую проверку безопасности, внедрённую в код в виде ветвления, можно обойти по самой природе предсказания ветвлений, то авторы предлагают вообще не рассматривать ветвления в проектировании механизмов безопасности).
Исследователи делают неутешительный вывод: «Наши модели, наши ментальные модели ошибочны; мы пожертвовали безопасностью ради производительности и сложности, и не знали об этом. Сейчас горькая ирония заключается в том, что для защиты требуется внедрение ещё большей сложности с помощью программных средства, большинство из которых, как мы знаем, являются неполными… Похоже, Spectre получил слишком удачное название, потому что ему суждено ещё долго нас преследовать».