Международная группа исследователей из Австрии, Нидерландов и США, информационной безопасности разработала атаку, позволяющую получить root-доступ к большому количеству Android-устройств, пишет издание Ars Tehnica. Для этого эксплуатируется техника Rowhammer, позволяющая осуществлять манипуляции с данными, хранящимися в ячейках памяти. При этом, ранее считалось, что атаки с использованием уязвимости Rowhammer имеют ограниченные перспективы реального применения — новый эксплойт демонстрирует, что ей подвержено гораздо больше устройств, чем предполагалось (включая и работающие на ARM-чипах).
Исследователи создали специальное приложение-эксплойт Drammer, которое не требует для работы никаких особенных прав и не использует никаких Android-уязвимостей. Атака осуществляется с помощью уязвимости аппаратного обеспечения — аналогично описанной техники Rowhammer он «простукивает» биты памяти устройства, изменяя важные данные. Это позволяет получать root-доступ к гаджетам производства компаний LG, Motorola, Samsung, OnePlus и, возможно, других вендоров.
В чем проблема
Техника, Rowhammer была описана в одном из наших предыдущих материалов:
Память DDR представляет собой массив разбитых на блоки строк и столбцов. К ним обращаются различные приложения и операционная система. В каждом крупном участке памяти предусмотрена своя «песочница», получать доступ к которой может лишь определенный процесс или приложение.
Если запустить софт, который будет сотни и тысячи раз за долю секунды обращаться к конкретным строкам в таких участках («простукивая» их, как молотком — отсюда и название hammering), то в следствии определенных физических явлений, это может повлиять на соседний участок памяти. Это может привести к изменению значений битов в нем с нулей на единицы и наоборот.
Получив возможность влиять на содержание даже заблокированных областей памяти, злоумышленники могут осуществлять атаки, приводящие к повышению привилегий вплоть до административных. Соответственно, возможен запуск зловредного кода или перехват действий пользователей или программ.
Один из создателей эксплойта для атак на Android-смартфоны, исследователь по имени Виктор ван дер Веен (Victor van der Veen): «До недавнего времени мы даже не могли подумать о подобных багах железа, и софт никогда не писали так, чтобы их учитывать. Теперь мы можем использовать эти дыры безопасности для того, чтобы взламывать смартфоны и планшеты с высоким уровнем надежности и без необходимости использования уязвимостей программного обеспечения. И нет никакой возможности быстро выпустить патч, решающий проблему».
На данный момент с помощью Drammer root-доступ удалось получить к следующим устройствам: Nexus 4, Nexus 5 и G4 от LG, Moto G модели от 2013 и 2014 годов от Motorola, Galaxy S4 и Galaxy S5 от Samsung, а также One от OnePlus. В некоторых случаях не всегда удавалось добиться должного постоянства результатов — к примеру, получить root-доступ удалось лишь для 12 из 15 моделей Nexus 5, в случае Galaxy S5 скомпрометирован был один из двух испытываемых смартфонов.
Исследователи до конца не понимают, почему так происходит, но предполагают, что дело может быть в разном «возрасте» тестируемых устройств — более активное или длительное использование может приводить к «износу» ячеек памяти. Кроме того, возможно, чипы памяти от определенных производителей более устойчивы к уязвимости Rowhammer, чем другие, а разные поколения одного и того же смартфона могут использовать разные чипы.
Демонстрация работы
Исследователи опубликовали два демонстрационных видео работы Drammer для получения root-доступа на LG Nexus 5. На видео смартфон подключен к компьютеру по USB, однако для осуществления атаки это не обязательно.
Представленный на первом видео смартфон работает под управлением Android 6.0.1 с установленными патчами безопасности от 5 октября. Начиная примерно с 0:15 приложение начинает «простукивать» память и между 0:30 и 0:50 эксплойт добавляет новые записи в таблицу страниц памяти. На отметке 0:50 Drammer получает root-доступ и открывает шелл, дающий полный контроль над устройством.
На втором видео Drammer используется в связке с кодом, эксплуатирующим уязвимость Stagefright — она остается неисправленной на многих устройствах. В итоге атака позволяет получить контроль над ядром ОС. На видео можно увидеть, что эксплоит Stagefright также открывает шелл, однако по-прежнему имеет лишь ограниченные права и, к примеру, не может получить доступ к SD-карточки смартфона. В свою очередь, запущенный позже Drammer получает root-доступ (начиная с 3:30 на видео).
Исследователи оповестили инженеров Google о своей работе еще в июле 2016 года, и компания присвоила уязвимости наивысший, критический статус. Кроме того, исследователи получили $4000 в рамках программы Bug Bounty. Компания оповестила своих партнеров-производителей в октябре, а выпуск обновлений планируется в ноябре. Тем не менее, разработчики предупреждают, что даже тогда hardware-уязвимость Rowhammer не будет окончательно закрыта, атакующим просто станет сложнее ее использовать.
Подробный доклад о проделанной работе будет представлен на конференции ACM Conference on Computer and Communications Security, которая проходит в эти дни в Вене. Детали обнаруженной уязвимости опубликованы на специальной информационной странице.
Комментарии (27)
KonstantinSoloviov
25.10.2016 16:41Нужен фоновый процесс которые обновляет критические области памяти. То есть простукивать ячейки с другой стороны.
fishca
25.10.2016 17:25В обратную сторону «выстукивать»?
KonstantinSoloviov
25.10.2016 18:27-1… для реализации техники Rowhammer нужно осуществить более 540 тыс. обращений к памяти за 64 миллисекунды, что усложняет взлом.
Вот, так понятнее стало: память динамическая — 64 миллисекунды это очевидно период регенерации, то есть если между циклами регенерации успеть простукать бит он воспримется как родной. ECC поможет, но не спасет — парные ошибки обнаружены не будут. Выстукивать обратно — это фактически заниматься регенерацией причем очень неэффективно. Мда и правда проблема. Уменьшить период регенерации, скорее всего невозможно т.к. пресловутые 64 миллисекунды — это, вероятно, период распространения волны регенерации по всем сторокам памяти.
Выход один — все время заниматься какой-нить ерундой, что бы отнимать время у зловреда и не давать простукать битики.ValdikSS
25.10.2016 18:35У высокочастотной DDR4-памяти период регенерации 32 мс и ниже.
KonstantinSoloviov
25.10.2016 20:49Больше плотность (тонкий техпроцесс), меньшая емкость ячейки (против физики не попрешь) — необходимость более частой регенерации. Думаю, что «этот горький катаклизм который, я наблюдаю» (с) был известен инженерам еще при разработке чипа. Тут нужно деструктивное мышление, а созидатель думает — «ну кому в голову придет в голову перезаписывать ячейку 8.43 млн раз в секунду» (надеюсь правильно посчитал). Кстати, а что же кеш-память то? То есть L0-L1-L2 (что там у нас есть) с такой скоростью простреливаюся?
KonstantinSoloviov
25.10.2016 21:23+6Внезапно понял, что это напоминает из реальной жизни — бампинг!
видеоGoodkat
25.10.2016 17:34На уровне OS можно считать чексуммы критических участков памяти.
Но это же такой оверхед выйдет…
Goodkat
25.10.2016 17:32+1Да ладно приложение на Android, его ещё нужно установить и запустить.
Rowhammer можно использовать даже на Javascript.
Используйте ECC-память, может поможет :)
TimsTims
25.10.2016 17:55+1Правильно ли я понял, что если тупо насиловать память, то она рано или поздно даёт критический сдвиг битов, который значит root = 1?
Assada
25.10.2016 18:26-2Я как понял что таким простукиванием можно все что угодно сделать(настучать любую комбинацию). Хоть фильм записать на sd, хоть любые данные слить (именно простукиванием, а не через шел)
smind
27.10.2016 16:36Почему то, теперь анекдот про способ взлома сервера Пентагона, не кажется таким уж нереальным )
На 74 357 181-й попытке- сервер согласился, что у него пароль «Мао Цзедун».
ChALkeRx
27.10.2016 17:14Да это со времён MySQL ещё не кажется, когда у них каждая 256-попытка входа с неправильным паролем проходила успешно.
NeoCode
25.10.2016 17:57А практическую пользу можно из этого извечь? То есть сделать рут на устройстве без перепрошивки и без риска поставить трояна?
Исходники этой штуки открыты?
kay
25.10.2016 22:42Проще с dirtycow root получить.
Бинарник уже скомпилировал. Осталось понять как shadow редактировать
mmMike
26.10.2016 06:06+1В современных банковских смарткартах в OS предусмотрены методы для защиты от атак, основанных на порче памяти (ОЗУ и флеш).
И в рекомендациях, например (и не только), к созданию безопасных JavaCard апплетов есть рекомендации типа:
- Не используйте boolean типы. Лучше всего использовать константы и сравнения с ними.
- Используйте контрольные коды/блоки критичных данных и всегда их проверяйте перед использование данных.
Так что… проблема известная. Просто игнорируемая для устройств который не требуется сертификация и требования к безопасности считаются не существенными.
wwarlock
02.11.2016 11:00Вчера четыре раза запускал drammer(каждый запуск примерно по 4000 секунд) на LG Nexus 5, но либо надо запускать еще больше раз, либо на этом телефоне железо хорошее, либо я уже успел поставить какие-то патчи безопасности.
Взломать пока не вышло.
gvrax
Если я правильно понимаю — физически — уязвимость может использоваться не только на андроид устройствах (точнее даже — не только на смартфонах и планшетах) но и на PC например и т.п. И операционной системой Андроид это также не ограничивается…
molnij
Да