Исследователи создали эксплоит для получения root-доступа к Android-смартфонам с помощью уязвимости Rowhammer



    Международная группа исследователей из Австрии, Нидерландов и США, информационной безопасности разработала атаку, позволяющую получить 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, которая проходит в эти дни в Вене. Детали обнаруженной уязвимости опубликованы на специальной информационной странице.
    Positive Technologies
    194,96
    Компания
    Поделиться публикацией

    Комментарии 33

      +2
      Если я правильно понимаю — физически — уязвимость может использоваться не только на андроид устройствах (точнее даже — не только на смартфонах и планшетах) но и на PC например и т.п. И операционной системой Андроид это также не ограничивается…
        +1
        Да
        0
        Нужен фоновый процесс которые обновляет критические области памяти. То есть простукивать ячейки с другой стороны.
          0
          В обратную сторону «выстукивать»?
            –1
            … для реализации техники Rowhammer нужно осуществить более 540 тыс. обращений к памяти за 64 миллисекунды, что усложняет взлом.

            Вот, так понятнее стало: память динамическая — 64 миллисекунды это очевидно период регенерации, то есть если между циклами регенерации успеть простукать бит он воспримется как родной. ECC поможет, но не спасет — парные ошибки обнаружены не будут. Выстукивать обратно — это фактически заниматься регенерацией причем очень неэффективно. Мда и правда проблема. Уменьшить период регенерации, скорее всего невозможно т.к. пресловутые 64 миллисекунды — это, вероятно, период распространения волны регенерации по всем сторокам памяти.
            Выход один — все время заниматься какой-нить ерундой, что бы отнимать время у зловреда и не давать простукать битики.
              0
              У высокочастотной DDR4-памяти период регенерации 32 мс и ниже.
                0
                Больше плотность (тонкий техпроцесс), меньшая емкость ячейки (против физики не попрешь) — необходимость более частой регенерации. Думаю, что «этот горький катаклизм который, я наблюдаю» (с) был известен инженерам еще при разработке чипа. Тут нужно деструктивное мышление, а созидатель думает — «ну кому в голову придет в голову перезаписывать ячейку 8.43 млн раз в секунду» (надеюсь правильно посчитал). Кстати, а что же кеш-память то? То есть L0-L1-L2 (что там у нас есть) с такой скоростью простреливаюся?
                  +6
                  Внезапно понял, что это напоминает из реальной жизни — бампинг!
                  видео

              0
              На уровне OS можно считать чексуммы критических участков памяти.
              Но это же такой оверхед выйдет…
                0
                Это ошибка железа и должна быть исправлена в железе.
                  0
                  Как вы исправите её в железе-то? Чипы памяти в каждом устройстве поменяете?
                  0
                  шифровать память? как на xbox360 где есть аппаратная поддержка этого
                +1
                Да ладно приложение на Android, его ещё нужно установить и запустить.
                Rowhammer можно использовать даже на Javascript.

                Используйте ECC-память, может поможет :)
                  +1
                  Помнится, показывали как в серверах rowhammer даже с ECC работал…
                  +1
                  Правильно ли я понял, что если тупо насиловать память, то она рано или поздно даёт критический сдвиг битов, который значит root = 1?
                    –2
                    Я как понял что таким простукиванием можно все что угодно сделать(настучать любую комбинацию). Хоть фильм записать на sd, хоть любые данные слить (именно простукиванием, а не через шел)
                      0
                      А как ПО узнает какие ячейки «простукивать»?
                      0
                      Почему то, теперь анекдот про способ взлома сервера Пентагона, не кажется таким уж нереальным )

                      На 74 357 181-й попытке- сервер согласился, что у него пароль «Мао Цзедун».
                        0

                        Да это со времён MySQL ещё не кажется, когда у них каждая 256-попытка входа с неправильным паролем проходила успешно.

                      0
                      А практическую пользу можно из этого извечь? То есть сделать рут на устройстве без перепрошивки и без риска поставить трояна?
                      Исходники этой штуки открыты?
                        0

                        Проще с dirtycow root получить.
                        Бинарник уже скомпилировал. Осталось понять как shadow редактировать

                          0
                          Вот у меня не получилось. Там не так всё просто как пишут.
                            0

                            У меня получилось. Дерзайте.

                              0
                              Вчера читал, так чем дело то закончилось?
                                0

                                Получил root, но загрузчик пока не победил.

                                  0
                                  А его вообще до этого так разблокировали, кто-нибудь?
                                    0

                                    Да, есть прецедент http:/bits-please.blogspot.de/2016/02/unlocking-motorola-bootloader.html
                                    Неизвестно пока, подвержен ли мой телефон этому хаку.

                          0
                          А нельзя ограничить частоту доступа к памяти?
                            0
                            Боюсь что так производительность её упадет
                            +1

                            В современных банковских смарткартах в OS предусмотрены методы для защиты от атак, основанных на порче памяти (ОЗУ и флеш).


                            И в рекомендациях, например (и не только), к созданию безопасных JavaCard апплетов есть рекомендации типа:


                            1. Не используйте boolean типы. Лучше всего использовать константы и сравнения с ними.
                            2. Используйте контрольные коды/блоки критичных данных и всегда их проверяйте перед использование данных.

                            Так что… проблема известная. Просто игнорируемая для устройств который не требуется сертификация и требования к безопасности считаются не существенными.

                              0
                              т.е. теоретически можно эксплуатировать уязвимость и в контейнерах, чтобы получить доступ к памяти хостовой ОС?
                                0

                                Учтите, что на серверах обычно всё-таки ECC, а с ним такое не проходит.

                                0
                                Вчера четыре раза запускал drammer(каждый запуск примерно по 4000 секунд) на LG Nexus 5, но либо надо запускать еще больше раз, либо на этом телефоне железо хорошее, либо я уже успел поставить какие-то патчи безопасности.
                                Взломать пока не вышло.

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое