Главная » Хабрахабр » Security Week 24: Rowhammer в Android и сложность аппаратных уязвимостей

Security Week 24: Rowhammer в Android и сложность аппаратных уязвимостей

Люблю читать научные работы, исследующие компьютерные уязвимости. В них есть то, чего индустрии инфобезопасности часто не хватает, а именно — осторожности при формулировке определенных допущений. Это достоинство, но есть и недостаток: как правило, практическая польза или вред от свежеобнаруженного факта неочевидны, слишком уж фундаментальные феномены подвергаются исследованию. В этом году мы немало узнали о новых аппаратных уязвимостях, начиная со Spectre и Meltdown, и обычно эти новые знания появляются в виде научной работы. Качества этих аппаратных проблем соответствующие: им подвержены целые классы устройств, их трудно (а то и вовсе невозможно) полностью закрыть софтовой заплаткой, потенциальный ущерб тоже непонятен. Да что там говорить, иногда сложно понять, как они вообще работают.

Четыре года назад была обнаружена принципиальная возможность изменить «соседний» бит в модуле оперативной памяти регулярными операциями чтения/записи. Примерно так выходит с уязвимостями класса Rowhammer. На прошлой неделе сборная команда ученых из разных стран показала практическую атаку на Android-смартфоны RAMpage (новость, исследование). С тех пор появились новые исследования, показывающие, как применить эту особенность плотно упакованных чипов памяти для практических атак. Попробуем разобраться (спойлер: пока непонятно).
Напомню, атака Rowhammer использует фундаментальные особенности чипов памяти. Насколько эта атака реально опасна? Обычно это не представляет проблемы, так как через определенные промежутки времени заряды во всех ячейках обновляются. Конкретно, изменение заряда при записи в определенную ячейку (точнее, ряд ячеек) влияет и на соседние ячейки (ряды) тоже. Приспособить данную особенность памяти для какой-нибудь реальной атаки непросто: требуется правильная комбинация прав доступа к системе, расположения кода в памяти, прямой доступ к памяти без кэширования и прочая, и прочая. Но если достаточно часто и много производить операции чтения-записи (десятки и сотни тысяч раз), можно изменить значение в ячейках памяти, к которым у вас изначально не было доступа (все написанное выше — вульгарное упрощение, граничащее с криминалом, а истина содержится только в оригинальной научной работе). Не сразу, но за четыре года набралось немало примеров таких комбинаций, и Rowhammer из милой теории превратился в суровую практику.


Когда нужна картинка про компьютеры, молотки и безопасность

Эта атака обходит заплатки, внедренные в Android после обнаружения (примерно той же группой исследователей) атаки Drammer в 2016 году. Не буду даже пытаться пересказать простыми словами атаку RAMpage. 1. Комбинация нескольких ранее известных методов, обеспечивающих прямой доступ к оперативной памяти в нужном месте, и особенностей современной версии Android (в эксперименте использовался телефон LG G4 с Android 7. 1) позволила получить права суперпользователя на полностью запатченном телефоне.

Более того, митигация (ей тоже придумали имя — GuardION) позволяет включить обратно оптимизации, выключенные в Android после предыдущего исследования. Что нехарактерно для исследования по новой уязвимости, авторы RAMPage предлагают также способ закрыть уязвимость, причем с весьма небольшим падением производительности (по версии Google, падение там все же значительное).

Но так как это ученые, FAQ на этом сайте предельно честный: «Нет, это не Spectre, даже не рядом». В лучших традициях современного vulnerability marketing уязвимости (и заплатке) сделали сайт и логотипы. «Мы не знаем, подвержен ли ваш телефон, у нас были деньги только на один». «Нет, мы не покажем вам PoC». Предлагаемый код для митигации также доступен на GitHub. Правда, на сайте можно скачать приложение, которое позволит протестировать ваш гаджет на уязвимость самостоятельно. Хочется что-нибудь доброе сказать про фрагментацию Android и разницу между поддерживаемыми и используемыми, но как-нибудь в другой раз. В Google не склонны преувеличивать опасность исследования: атака «не работает на поддерживаемых устройствах с Google Android».

Исследователи чуть-чуть подняли планку практичности еще одной атаки, использующей аппаратную уязвимость. Что, если выражаться обычным русским языком, произошло? Google в курсе, и каким-то образом хотя бы в новых версиях Android держит проблему под контролем. Ее пока не применяет (и вряд ли будет) криминал, и вообще от состояния «получили рут в лаборатории» до «можем атаковать значительное количество устройств реальных пользователей» путь неблизкий. А именно: в появление какой-нибудь относительно легко (хотя бы как Meltdown) эксплуатируемой дыры, закрыть которую можно или покупкой нового устройства, или падением производительности в разы. Такие исследования требуют много времени, а опасность заключается в возможном резком переходе из количества (потраченных человеко-часов) в качество.

Тем временем другая группа исследователей вроде бы нашла еще одну аппаратную уязвимость, на сей раз в функции hyperthreading в процессорах Intel. Впрочем, предложение выше — это уже неосторожное допущение (но автору текста можно, он не ученый). А мейнтейнеры OpenBSD были настолько впечатлены результатами, что решили выключить поддержку функциональности процессоров в дистрибутиве полностью (с очевидными последствиями для производительности). Более того, уязвимость была применена для кражи ключа шифрования из процесса, выполняющегося в соседнем «треде» того же ядра. Продолжаем наблюдение. Исследовательская работа планируется к публикации на конференции Black Hat в августе.

Что же делать? Disclaimer: Ааааа, я забыл добавить дисклеймер в предыдущий пост. Меня уволят? Что будет со мной? Найдут уязвимость в кабелях питания? Земля налетит на небесную ось? Что это за место? Кто я? Дорогая редакция вообще рекомендует относиться к любым мнениям со здоровым скептицизмом. Такой яркий белый све Мнения, изложенные в этом дайджесте, могут не всегда совпадать с официальной позицией «Лаборатории Касперского».


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Юнит тестирование скриптов баз данных

Принимая удобство в использовании юнит тестов на моем любимом С++, я попытался перенести свой опыт на TSQL, тем более что новый работодатель любит полезную инициативу на местах и раздает плюшки за оное. Просмотрел несколько известных фреймворкoв я пришел к выводу, ...

Теория счастья. Введение в мерфологию

Продолжаю знакомить читателей Хабра с главами из своей книжки «Теория счастья» с подзаголовком «Математические основы законов подлости». Это ещё не изданная научно-популярная книжка, очень неформально рассказывающая о том, как математика позволяет с новой степенью осознанности взглянуть на мир и жизнь ...