На прошлой неделе исследователи из Швейцарской высшей технической школы Цюриха (ETH Zurich) опубликовали детали новой атаки. Она является развитием обнаруженной в 2018 году атаки Spectre v2. Название Retbleed связано с Retpoline — предложенным ранее способом защиты от Spectre v2 при компиляции наиболее уязвимого программного обеспечения (например, компонентов операционной системы или ПО для виртуализации).
![](https://habrastorage.org/r/w1560/webt/x-/a6/cp/x-a6cpxdwh1ndpqeo0qkhrv4mzq.png)
Retbleed предлагает пути обхода Retpoline и тем самым показывает, что этот метод не так надежен, как считалось ранее. При этом Retpoline наносил минимальный ущерб производительности ПО, скомпилированного с его использованием. По оценкам исследователей, эффективные программные средства защиты от Retbleed приведут к падению производительности в пределах 14–39 процентов для уже выпущенных процессоров.
Источники информации:
В предыдущих сериях
Исследовательская работа об уязвимостях и связанных с ними атаках Spectre вышла в начале 2018 года. В ней были описаны два варианта атаки, каждый из которых использует стандартную функциональность процессора — систему предсказания ветвлений (Branch Prediction). Второй вариант Spectre (он же Spectre v2, он же упоминается в новом исследовании как Spectre-BTI или Branch Target Injection) эксплуатирует предсказание ветвлений для кражи секретов. Для реализации атаки требуется наличие в атакуемой программе кода, подверженного уязвимости.
В атакующей программе (она теоретически может быть выполнена с любыми привилегиями, вплоть до кода веб-страницы в браузере) создаются такие условия для тренировки Branch Prediction, что в какой-то момент спекулятивно выполняется подверженный уязвимости код в атакуемой программе. В результате, например, осуществляется доступ к недоступной для атакующего информации. Несмотря на то что предсказание оказывается неверным и результаты вычислений отбрасываются, они сохраняются в кэш-памяти процессора и могут быть извлечены оттуда по сторонним каналам (подробнее атака была описана на Хабре в этой статье).
Retpoline
Атаки Spectre достаточно сложно реализовать. С 2018 года вышло немало теоретических работ, которые представили новые варианты атаки (в том числе по сети). Максимально приближенная к реальности атака (с помощью Spectre v1) была показана в 2021 году. При посещении вредоносной страницы в браузере Google могли быть похищены данные, грубо говоря, из соседней вкладки (или из расширения для браузера): пароль от соцсети, данные из менеджера паролей и тому подобное. После этого вышел патч для браузера, который усилил изоляцию данных и закрыл возможность такой атаки.
Хотя для обычных пользователей атаки типа Spectre вряд ли представляют угрозу в настоящее время, в специализированных задачах, возможно, потребуется предусмотреть защиту. Вариантов решения проблемы примерно столько же, сколько и вариантов Spectre, включая программные и аппаратные «патчи». Retpoline является одним из таких методов. Суть защиты заключается в подмене ряда инструкций при компиляции ПО, что предположительно делает невозможным проведение атак. Преимущество Retpoline в его эффективности. В тестах на сайте Phoronix потеря производительности при использовании Retpoline составила не более 5%. При других, более строгих вариантах ограничения работы Branch Predition, потеря производительности может достигать 25%.
Сомнения в надежности такого привлекательного метода появились уже в январе 2018 года. В защиту Retpoline тогда высказался в своей характерной манере Линус Торвальдс. Его цитата про то, что Retpoline для ядра Linux будет достаточно, вставлена в работу Retbleed. В назидание.
Retbleed
Исследование Retbleed дополняет предыдущие работы, изучающие работу Branch Prediction в современных процессорах. Краткий вердикт авторов: инструкции возврата (результат применения Retpoline), которые ранее считались неуязвимыми для атаки типа Spectre, на самом деле также уязвимы. Таких потенциально эксплуатируемых инструкций в ядре Linux нашлось достаточно. Была показана и практическая атака — кража пароля суперпользователя:
Общие результаты исследования сведены в эту таблицу:
![](https://habrastorage.org/r/w1560/webt/zf/u8/6g/zfu86gd3np4zadnep-jwhhluiv0.png)
Уязвимость Retbleed была подтверждена для процессоров AMD поколений Zen 1 и Zen 2, а также для процессоров Intel поколений Cofee Lake и Kaby Lake. Также можно сделать вывод, что метод защиты от атак Spectre, известный как IBRS (Indirect Branch Restricted Speculation), в отличие от Retpoline действительно защищает — правда, ценой падения производительности. Скорость извлечения данных с помощью атаки Retbleed традиционно медленная: 219 байт в секунду на процессорах Intel и 3,9 килобайта в секунду на процессорах AMD.
С предсказанием ветвлений в процессорах AMD вообще все немного отличается. В одностраничном дополнении к Retbleed исследователи вводят понятие Phantom JMPs: при некоторых условиях можно заставить систему Branch Prediction выполнить произвольную инструкцию, даже если в атакуемом коде ее нет. Впрочем, тут же следует оговорка, что в реальных атаках такой вариант Spectre реализовать будет еще сложнее, чем обычный.
В своем бюллетене компания Intel рекомендует использовать метод защиты IBRS, который на аппаратном уровне уже внедрен в процессоры поколения Alder Lake (и они не подвержены атаке Retbleed, как показано в таблице выше). Для существующих процессоров защиту от Retbleed можно реализовать лишь на уровне ПО. По данным авторов работы Retbleed, в случае ядра Linux это приводит к падению производительности до 39% для процессоров Intel и до 14% для процессоров AMD. В Windows IBRS используется по умолчанию. В целом можно сделать вывод, что простой метод защиты от Spectre v2 оказался неэффективен, и в случаях, когда это действительно необходимо, придется использовать более сложные способы, с более серьезным падением производительности.
Что еще произошло
Из магазина приложений Google Play были удалены 8 аппов с вредоносным довеском, известным как Autolycos. В случае установки они похищали деньги с мобильных счетов. Зараженные приложения активно рекламировались в соцсетях, всего у них более 7 миллионов загрузок.
Компания Microsoft опубликовала подробный отчет о фишинговой кампании, способной обходить двухфакторную аутентификацию. Целью атаки является бизнес.
![](https://habrastorage.org/webt/x-/a6/cp/x-a6cpxdwh1ndpqeo0qkhrv4mzq.png)
Retbleed предлагает пути обхода Retpoline и тем самым показывает, что этот метод не так надежен, как считалось ранее. При этом Retpoline наносил минимальный ущерб производительности ПО, скомпилированного с его использованием. По оценкам исследователей, эффективные программные средства защиты от Retbleed приведут к падению производительности в пределах 14–39 процентов для уже выпущенных процессоров.
Источники информации:
- Обзорная статья в издании Ars Technica.
- Исследовательская работа Retbleed.
- Дополнение к Retbleed, описывающее феномен Phantom JMPs в процессорах AMD.
- Бюллетень и обсуждение (запись вебинара) в блоге Intel.
- Бюллетень и подробные рекомендации для разработчиков компании AMD.
В предыдущих сериях
Исследовательская работа об уязвимостях и связанных с ними атаках Spectre вышла в начале 2018 года. В ней были описаны два варианта атаки, каждый из которых использует стандартную функциональность процессора — систему предсказания ветвлений (Branch Prediction). Второй вариант Spectre (он же Spectre v2, он же упоминается в новом исследовании как Spectre-BTI или Branch Target Injection) эксплуатирует предсказание ветвлений для кражи секретов. Для реализации атаки требуется наличие в атакуемой программе кода, подверженного уязвимости.
В атакующей программе (она теоретически может быть выполнена с любыми привилегиями, вплоть до кода веб-страницы в браузере) создаются такие условия для тренировки Branch Prediction, что в какой-то момент спекулятивно выполняется подверженный уязвимости код в атакуемой программе. В результате, например, осуществляется доступ к недоступной для атакующего информации. Несмотря на то что предсказание оказывается неверным и результаты вычислений отбрасываются, они сохраняются в кэш-памяти процессора и могут быть извлечены оттуда по сторонним каналам (подробнее атака была описана на Хабре в этой статье).
Retpoline
Атаки Spectre достаточно сложно реализовать. С 2018 года вышло немало теоретических работ, которые представили новые варианты атаки (в том числе по сети). Максимально приближенная к реальности атака (с помощью Spectre v1) была показана в 2021 году. При посещении вредоносной страницы в браузере Google могли быть похищены данные, грубо говоря, из соседней вкладки (или из расширения для браузера): пароль от соцсети, данные из менеджера паролей и тому подобное. После этого вышел патч для браузера, который усилил изоляцию данных и закрыл возможность такой атаки.
Хотя для обычных пользователей атаки типа Spectre вряд ли представляют угрозу в настоящее время, в специализированных задачах, возможно, потребуется предусмотреть защиту. Вариантов решения проблемы примерно столько же, сколько и вариантов Spectre, включая программные и аппаратные «патчи». Retpoline является одним из таких методов. Суть защиты заключается в подмене ряда инструкций при компиляции ПО, что предположительно делает невозможным проведение атак. Преимущество Retpoline в его эффективности. В тестах на сайте Phoronix потеря производительности при использовании Retpoline составила не более 5%. При других, более строгих вариантах ограничения работы Branch Predition, потеря производительности может достигать 25%.
Сомнения в надежности такого привлекательного метода появились уже в январе 2018 года. В защиту Retpoline тогда высказался в своей характерной манере Линус Торвальдс. Его цитата про то, что Retpoline для ядра Linux будет достаточно, вставлена в работу Retbleed. В назидание.
Retbleed
Исследование Retbleed дополняет предыдущие работы, изучающие работу Branch Prediction в современных процессорах. Краткий вердикт авторов: инструкции возврата (результат применения Retpoline), которые ранее считались неуязвимыми для атаки типа Spectre, на самом деле также уязвимы. Таких потенциально эксплуатируемых инструкций в ядре Linux нашлось достаточно. Была показана и практическая атака — кража пароля суперпользователя:
Общие результаты исследования сведены в эту таблицу:
![](https://habrastorage.org/webt/zf/u8/6g/zfu86gd3np4zadnep-jwhhluiv0.png)
Уязвимость Retbleed была подтверждена для процессоров AMD поколений Zen 1 и Zen 2, а также для процессоров Intel поколений Cofee Lake и Kaby Lake. Также можно сделать вывод, что метод защиты от атак Spectre, известный как IBRS (Indirect Branch Restricted Speculation), в отличие от Retpoline действительно защищает — правда, ценой падения производительности. Скорость извлечения данных с помощью атаки Retbleed традиционно медленная: 219 байт в секунду на процессорах Intel и 3,9 килобайта в секунду на процессорах AMD.
С предсказанием ветвлений в процессорах AMD вообще все немного отличается. В одностраничном дополнении к Retbleed исследователи вводят понятие Phantom JMPs: при некоторых условиях можно заставить систему Branch Prediction выполнить произвольную инструкцию, даже если в атакуемом коде ее нет. Впрочем, тут же следует оговорка, что в реальных атаках такой вариант Spectre реализовать будет еще сложнее, чем обычный.
В своем бюллетене компания Intel рекомендует использовать метод защиты IBRS, который на аппаратном уровне уже внедрен в процессоры поколения Alder Lake (и они не подвержены атаке Retbleed, как показано в таблице выше). Для существующих процессоров защиту от Retbleed можно реализовать лишь на уровне ПО. По данным авторов работы Retbleed, в случае ядра Linux это приводит к падению производительности до 39% для процессоров Intel и до 14% для процессоров AMD. В Windows IBRS используется по умолчанию. В целом можно сделать вывод, что простой метод защиты от Spectre v2 оказался неэффективен, и в случаях, когда это действительно необходимо, придется использовать более сложные способы, с более серьезным падением производительности.
Что еще произошло
Из магазина приложений Google Play были удалены 8 аппов с вредоносным довеском, известным как Autolycos. В случае установки они похищали деньги с мобильных счетов. Зараженные приложения активно рекламировались в соцсетях, всего у них более 7 миллионов загрузок.
Компания Microsoft опубликовала подробный отчет о фишинговой кампании, способной обходить двухфакторную аутентификацию. Целью атаки является бизнес.