Уязвимость в Android < 5.0 (ObjectInputStream)

    Как сообщает Jann Horn в рассылке Full Disclosure, в Android 5.0 включили патч, который исправляет уязвимость в объекте java.io.ObjectInputStream. До этого патча java.io.ObjectInputStream не проверял, является ли объект сериализируемым, перед его де-сериализацией.

    Атакующему достаточно создать экземпляр любого класса с конструктором без параметров и наполнить его поля случайными значениями. При срабатывании сборщика мусора, у этого экземпляра будет вызван метод finalize. В конечном итоге, если передать этот экземпляр в сервис system_service через Intents с Bundles, произойдет перезапись указателя на адрес, подконтрольный злоумышленнику, и если ему удастся записать нужный payload на этот адрес, код атакующего выполнится с привилегиями system_service.

    Хоть в Android и есть ASLR, из-за того, что все процессы запускаются путем форка от zygote, они все имеют примерно одинаковый memory map, так что его можно обойти.

    Автор также написал PoC и опубликовал его в рассылке.
    Об уязвимости было сообщено 22.06.2014 и ей присвоен номер CVE-2014-7911.
    Digital Security
    149.89
    Безопасность как искусство
    Share post

    Similar posts

    Comments 19

      –16
      Что, уже и Android стал?

      image
        +4
        А количество вариантов рута не подсказывало это?
        Ну и потом чем больше популярность тем больше «извращенцев» использую недокументированные возможности.
        Человеческий фаззинг более точечный чем машинный, но и бьет точнее
          0
          Всегда говорю: «Если один человек создал, то другой может это сломать»
            +2
            Причём здесь рут?
              0
              Действительно!
                0
                Возможностей получить права рута в Android не намного больше, чем с ванильным ядром Linux. В подавляющем большинстве случаев, пользователи ставят su вполне легальным способом — через анлок бута с прошивкой обновления. С тем же успехом можно бегать и орать, что linux/freebsd/macos дырявые и дают всем рута налево и направо.
                  0
                  Официальный анлок бута это меньшинство случаев. В большинстве получается рут через один из сплоитов, после записывается кастомный рекавери, а там уже да.
                  С линукс и макос сравнение некорректно.
                    0
                    Вы можете привести хоть один пример устройства, прокатывает выпущенного в последние пару лет, где такое? Потому что даже на Nexus 7 без анлока вас пошлют в дали дальние при попытке использования fastboot. С приходом ICS, работа с сервисными режимами кардинально поменялась и на уровне приложения и даже ядра повлиять на них не получится.
                      +1
                      LG G2
                        0
                        И где там эксплоиты? Телефон позволяет сделать ремаунт системного раздела с помощью adb не спрашивая ни о чем. Я хз зачем LG сделали так, но это не эксплоит и вообще не проблема Android-а. Судя по всему лыжа собирает прошивки в режиме дебага.
                          +1
                          Towelroot — я получил рут на заблокированном загрузчике Amazon Fire HDX 7, cправедливости ради, на момент выхода инструмента, почти все устройства в мире рутовались этим методом.
                          Инструмент theroot.ninja/ снимает защиту бутлоадера на HTC и Motorola (ну а дальше да, дело техники).
                            +1
                            Во втором методе, правда, уязвимость в qualcomm (CVE-2014-4325). LG G3 — рут при помощи purpledragon (вроде так), загрузчик заблокирован.
                              0
                              На сколько я помню, Towelroot использует уязвимость ядра Linux, которой подвержены все старые ядра, включая десктопные версии. Это технически не косяк андроида. У андроида в этом случае косяк в том, что обновления до юзеров частенько не доходят.

                              theroot ninja использует уязвимость в продуктах Qualcomm, как вы и написали. В тоже самое время получить S-Off на HTC One X с чипом Tegra невозможно без сервисного инструментария, никаких лазеек за почти три года так и не нашли. Но даже если бы и нашли, то это был бы железный косяк.

                              Так что напрашиваются два вывода:

                              1. получить рута обычно можно только через уязвимости ядра и в 99% случаев это косяк команды Торвальдса;
                              2. рут обычно не даёт никаких привилегий для глубокой модификации системы (бут не поменять, рекавери не прошить), но бывают казусы как у LG, когда производитель собирает на продакшен прошивки в дебаг режиме, но в этом случае рут не нужен.
                                +1
                                Ну и да, спасибо за примеры, а то на хабре в последнее время народ любит кидаться помидорами без пруфов, лишь бы поорать. С вами приятно вести диалог!
                    0
                    Так же как и джейл для iOS есть вариант его получения путем взлома с последующей эскалацией прав до уровня системы.
                      0
                      И много вы таких вариантов знаете? Ну кроме Towel root, который бага в самом ядре Linux.
                        0
                        А я не говорю, что вариантов много. Просто они существуют. И я уверен, что их нашли еще не все.
                        События вокруг openssl за последний год тому подтверждение
                –9
                Номер символичный: CVE-2014-7911
                  +10
                  Да ещё и 2014. Прям в честь уходящего года.

                Only users with full accounts can post comments. Log in, please.