Box Overview
Компания
71,10
рейтинг
4 июля 2013 в 01:13

Разработка → Уязвимость в Android позволяет злоумышленникам превратить любое приложение в троян

Исследовательская группа Bluebox Security Labs недавно обнаружила уязвимость в модели обеспечения безопасности Android, которая позволяет изменить код приложения .apk, не повреждая криптографическую подпись приложения. Таким образом можно превращать любое подписанное приложение в троянскую программу. Причем подмены абсолютно никто не заметит. Ни Play Market, ни телефон, ни пользователь.
Эта уязвимость присутствует начиная с версии Android 1.6 «Donut» или по-другому говоря на любом телефоне, купленном не позже 4 лет назад. Или это почти 900 миллионов девайсов. Злоумышленники в зависимости от типа приложения могут использовать уязвимость для хищения данных или для создания мобильного ботнета.



Для частных лиц и предприятий (вредоносное приложение может получить доступ к отдельным данным, или проникнуть в предприятия) опасность достаточно велика, тем более, если учесть, что приложения, разработанные производителями устройств (например, HTC, Samsung, Motorola, LG) или третьих лиц, которые работают в сотрудничестве с производителем устройства, имеют особые привилегии в Android.

Внедрение кода в приложение от производителя устройства может предоставить полный доступ к системе Android и всем установленным приложениям (или их данным). У приложения тогда будет возможность не только считывать произвольные данные приложения на устройстве (электронная почта, SMS-сообщения, документы, и т.д.), но и будет шанс получить доступ к сохраненным паролям. Причем это не помешает нормально функционировать телефону и управлять любой функцией (сделать произвольные телефонные вызовы, отправить произвольные SMS-сообщения, включить камеру и записать вызов). Наконец, можно создать целый ботнет.



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

Уязвимость использует несоответствие, которое допускается при модификации приложения APK, при этом не повреждая криптографическую подпись приложения. Простыми словами, уязвимость позволяет обмануть Android и он будет думать, что приложение не было изменено.



В своей презентации Джефф расскажет о баге 8219321 в Android OS, о котором он сообщил в Google в феврале этого года, и об эксплойте, который работает практически на всех Android-устройствах, независимо от их возраста.

Снимок экрана демонстрирует, что Bluebox Security изменили приложение от производителя так, что теперь у них есть полный доступ к устройству. В данном случае компания изменила информацию о программном обеспечении устройства.



Злоумышленники могут использовать множество методов, чтобы распространить такие троянские приложения, включая отправку их по электронной почте, загружая их на сторонний Маркет, размещая их на любом веб-сайте. Некоторые из этих методов, особенно сторонние репозитории приложений, уже используются, чтобы распространить вредоносное программное обеспечение для Android. Используя Google Play, чтобы распространить приложение, которые было изменено, — не получится. Потому что Google обновил процесс записи приложения в Маркет, дабы блокировать приложения, которые содержат эту проблему.

Между прочим, Google был уведомлен относительно уязвимости еще в феврале, и компания поделилась информацией с их партнерами. И теперь партнерам нужно решить, когда выпустить обновление для устройств. Форристэл подтвердил, что одно устройство, Samsung S4, уже имеет заплатку, которая демонстрирует, что некоторые производители устройств уже начали выпускать патчи. Google еще не выпустил патч для своих Nexus устройств, но компания работает над этим.

Если у вас нет аккаунта на Хабрахабре, вы можете читать и комментировать наши статьи на сайте BoxOverview.com
Автор: @andrey_snegovik
Box Overview
рейтинг 71,10
Компания прекратила активность на сайте

Комментарии (68)

  • +34
    • +19
      Вы бы хоть картинку лучше нашли, чтоли.
      • +3
        Первая картинка по запросу в гугл. И алюминиевый сгодится
      • 0
        Да ладно, Android же :) В данном случае метал даже кстати (: А вот опубликованное ниже решето… какое то деревянное.
    • +38
      Могли бы и решето найти, а то что это за дуршлаг?
    • +45
      image

      Решето же!
      • +24
        Это сито — не стоит всегда доверять гугл-картинкам!
        • –16
          Решето и сито — синонимы.
          • +8
            Примерно как ВАЗ и ФИАТ.
            • +3
              Ну нет. Сито — это разновидность решета.
              • +16
                Как всегда, хабравчане умеют развить обсуждение, не относящееся к самой статье )
      • +2
    • +12
    • 0
      [deleted]
  • +16
    Без подробностей об уязвимости как-то совсем водянисто.
    • 0
      Что б было проще использовать уязвимость? Большинство андроид устройств не обновляются производителями и дырка никогда не будет закрыта.
      • +2
        Мне кажется хватит пальцев двух рук что бы перечислить тех кто обновляется )
      • +2
        Тогда зачем нужно было распространять информацию о том, что такая уязвимость существует? Рано или поздно эту уязвимость найдут и будут использовать, а тем более, с такой подсказкой.
        • +7
          Потому что исследовательская группа Bluebox Security Labs хочет известности и денег.
        • +2
          «срочно выкидывайте продавайте старые устройства и покупайте новые, теперь без бага!»
          • 0
            Срочно выкидывайте новые устройства и покупайте HTC Dream.
        • +1
          Чтобы пользователи знали, что их устройства уязвимы. Или вы предпочитаете блаженное неведение?
      • 0
        Оно так. Но я говорю о том, что без подробностей и новости то нет: Серьёзный Баг, о котором известно не больше, чем то что он существует.
        • НЛО прилетело и опубликовало эту надпись здесь
  • +11
    Я не очень понял, как приложение может модифицировать другие приложения без рут доступа. Кроме проверки подписей существуют еще и линуксовые права, которые не должны дать это сделать.
    • 0
      Тот же Play Store ведь как-то функционирует.
  • +1
    Распространять троянские приложения через гугл плей нельзя, но некоторые производители уже выкатывают патчи…

    По ссылке короткая заметка, которая начинается со слов «This presentation is a case study»… и никаких дальнейших ссылок. «This very presentation...» В выдаче гугла по номеру бага три страницы со ссылками на эту презентацию. А. Это такое тонкое предложение зарегистрироваться на блэкхэт ком и ничего там не найти?

    Похоже на сообщение от скайнета к моей паранойе, все мол ломается, расслабься. Секурь, не секурь. Да, я расслабился давно уже.
  • 0
  • +14
    Я уж было подумал что ализар… желтизна ведь! Ни одной подробности

    Такое возможно, НО только для системных приложении, которые модифицировать без рут-доступа невозможно, а если у вас рут без ограничений — то ССЗБ

    Как такое возможно для пользовательских приложений не представляю. В статье нет ни одной детали… Если вы поменяли код приложения и заменили classes.dex в пользовательском приложении (apk). Даже это дейтсвие уже требует рута… Но даже если вы все таки умудрились это сделать, вам надо еще обмануть Андроид чтобы он не успел обработать факт изменения файла apk. Ибо он сразу же проверит что там поменялось и сравнит все подписи…

    PS. Поверьте, проверено неоднократно, сам занимался прошивками > 1,5 лет начиная с Андроид 1.6. Имею статус Recognized Developer на XDA.
    • 0
      Может в dalvik cache можно поменять как-то без изменения apk?
      • 0
        Как вариант… Но, опять же, без рута никак.
        • +14
          Господа, в статье же явно сказано: распространяется зараженный apk.
          Т е одна из схем заражения выглядит так:
          1. пользователь скачивает программу (не вирус), скажем «калькулятор дифуров»
          2. в какой то момент источник скачивания (сторонний репозиторий / 4pda / etc) компрометируется, туда заливается «подправленный» apk
          3. пользователь обновляет программу. Ругани на то что «ключ не тот, автор не тот» не будет, соотв и вопросов не возникнет.

          Если кратко, то сейчас модифицировать чужой apk можно только изменив его подпись. Эта же уязвимость позволяет модифицировать apk без изменения оной.
          • –6
            Точно не проканает… Когда apk скачивается и устанавливается все подписи обязательно верифицируются. Иначе уже был бы нереальный зоопарк вирусов и троянов.

            Много раз проверено. Когда вы устанавлиаете apk поверх уже установленного, новый apk обязательно верифицируется.
            • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    М-да… Муть какая-то… Что значит: "… позволяет обмануть Android и он будет думать, что приложение не было изменено"?

    Он что, в каких-то ситуациях не проверяет валидность подписи? И что это за такая подпись, которая позволяет изменить приложение не изменив подпись? Такого в принципе не должно быть, иначе это никакая не подпись а просто имитация безопасности…
    • +1
      Подпись проверяется например при обновлении приложения в маркете.
      А вообще картинок в статье больше, чем смысла!
    • –1
      В приложении используется только SHA-1 подпись. У хэшей могут быть коллизии, даже статья с реализацией для md5 была. Может ли подобное использоваться для изменения бинарников таким образом, чтобы подписи совпадали?
    • +1
      И что это за такая подпись, которая позволяет изменить приложение не изменив подпись? Такого в принципе не должно быть, иначе это никакая не подпись а просто имитация безопасности…

      Вообще-то, если подпись является частью файла, а не поставляется отдельно, то подписать весь файл по понятным причинам невозможно. Т.е. вполне могут оставаться участки файла, которые можно модифицировать, не ломая подпись. Это, между прочим, можно проделывать с виндовой Authenticode подписью, и гугл уже давно это использует (например в инсталлере Google Chrome: при скачивании в него зашивается информация о пользователе, но подпись при этом не меняется). Другое дело, что работа приложения никак не должна зависеть от этих участков, а если это невозможно, то их тоже нужно верифицировать.
  • –32
    Кстати, только вчера купил себе Гугло-Nexux 7. Как только принес его домой и законнектился к интернету, сразу выскочило окно с информацией о том, что скачано и готово к установке обновление Android.

    Примечательно то, что аппарат произведен в мае этого года (то есть ему не больше 2 месяцев с момента производства). Не думаю, что он так настойчиво требовал обновиться ради самой свежей версии Android.

    Кстати, какая версия Android стояла в нем «с полки магазина», проверить, увы, не успел. Сейчас стоит 4.2.2. Что там установилось в этом «экстренном обновлении» — остается только догадываться.

    На моем смартфоне от Sony Ericsson стоит версия Android еще 2.3.4. При проверке обновлений кричит, что у меня самая свежая версия Android и самое свежее ПО от производителя.
    • +6
      Мимо, апдейт 4.2.2 на nexus 7 еще давно прилетал, так что никакой это не экстренный фикс.
    • +6
      Ваше невежество навлечет на вас настоящее цунами из минусов.
      • –7
        Объясните в двух словах. К кому я проявил невежество и как именно?
        Я лишь аккуратно высказал предположение. За что заминусовали, хоть скажите! Тем более как упомянули немного выше, апдейт 4.2.2 на nexus 7 прилетел давно, а аппарату всего 2 месяца от роду. Не может же быть, что на «конвейере» на него влепили старую ОС? Или может?
        • +2
          Устройству уже почти год. Какая разница, что лепят на конвейере? Для этого и нужен ota, что бы легко обновится.
    • +1
      А я вот вчера тапочки купил.

      Никаких фиксов не было. Предложениям обновиться на Android 4.2.2 уже не первый месяц.
      Скоро будет новая версия Android, вот туда смотреть и надо, а не в версии 2.3.4.
  • +2
    Круто, красивые картинки, скриншот с информацией о системе, ссылка на какой-то мутный баг, утверждение о том, что можно подменить ЭЦП файла. О да, мы должны в это поверить :)
    • +1
      Там не говорится о том, что можно подменить ЭЦП, в сообщении говорится о том, возможно обойти механизм проверки и валидации. И я склонен доверять этой новости, а если вы не верите, то подождите конференции, они пообещали опубликовать все подробности в своем блоге после неё (хотя вполне возможно, что Google может попросить их этого не делать).
      • 0
        Самое что меня смущает — отсутствие бага в багтрекере андроида.
        • +1
          Такой критический баг с описанием в багтрекере привел бы к тому, что очень много пользователей Android стали бы под угрозой. Поэтому я считаю, что баг есть, но он только во внутреннем багтрекере (если вы разработчик Android, то должны знать, что есть AOSP и внутренняя ветка в Google, где они разрабатывают свою систему. Более того, у них есть внутренний багтрекер). Более того, именно поэтому код для исправления бага и не появляется в AOSP, потому что не все производители смогут быстро сделать обновления для их продуктов. Поэтому я предполагаю, что этого доклада на конференции не будет, потому что он затрагивает интересы очень многих пользователей и корпораций. Bluebox хотела славы — она её получила, особенно, если Google официально попросит не представлять этот доклад.

          Хотя, как уже отмечали здесь, информации, которую раскрыла Bluebox, достаточно, чтобы начать поиск этой уязвимости, и мне кажется, что в ближайшее время мы услышим (или увидим) подтверждение тому. Сам вчера целый день копался в исходниках и у меня есть догадка, где зарыта собака.
  • +3
    Желтизна статьи просто зашкаливает.
  • 0
    Google уведомлена в феврале, но до сих пор не пропатчила свои же Nexus?! Что-то здесь не так.
    • 0
      Номер бага не гуглится, так что что-то здесь не так.
      • +1
        • 0
          Вот это другое дело!
        • +1
          то есть (вспоминая блог)
          The vulnerability involves discrepancies in how Android applications are cryptographically verified & installed
          фишка в том, что подписи проверяются для первого найденного файла в архиве, но при инсталляции распаковываются все, и выживает последний?
          • 0
            Ага, почти так. Проверяется второй файл, а выживает первый.

            googlesystem.blogspot.ru/2013/07/the-8219321-android-bug.html — The Android Bug 8219321 July 10, 2013:

            Actually, the bug is simple: APK files are ZIP archives and Android allows APK files to include files with the same name.

            «The entry which is verified for signature is the second one inside the APK, and the entry which ends up being installed is the first one inside the APK — the injected one that can contain the malicious payload and is not checked for signature at all.»
        • 0
          И за что мне минусов влепили, непонятно…
  • +7
    Если из всей воды втянуть суть, то получается, что рискуют те, кто ставит APK откуда попало, но они и так были в группе риска.
    • +1
      Ну все как в старые времена, самая большая дырка в безопасности это прокладка между стулом и монитором :)
  • +4
    Еще один аргумент в пользу официального маркета Google Play.
    Несмотря на все фейлы, конечному пользователю там всегда безопаснее, чем на стороне.
    • –1
      Причем подмены абсолютно никто не заметит. Ни Play Market, ни телефон, ни пользователь.
      • +1
        Используя Google Play, чтобы распространить приложение, которые было изменено, — не получится. Потому что Google обновил процесс записи приложения в Маркет, дабы блокировать приложения, которые содержат эту проблему.
        • –1
          Противоречие в статье.

          Но, к сожалению, Google Play еще далеко до системы фильтрации и проверки приложений как у App Store.
          • 0
            Не понимаю где тут противоречие, была уязвимость с заливкой приложения в маркет, гугл ее закрыл, о чем и написано. Причем тут система фильтрации приложений, если речь идет о конкретной уязвимости.
            • 0
              Наверное, потому что такая возможность имела место быть.
          • 0
            «Еще далеко» скорее всего потому, что они к этому никогда не шли.
  • 0
    Ссылка на блог компании
    bluebox.com/corporate-blog/bluebox-uncovers-android-master-key/
  • 0
    «Эта уязвимость присутствует начиная с версии Android 1.6 «Donut» или по-другому говоря на любом телефоне, купленном не позже 4 лет назад.»

    Не позже — это раньше 4 лет назад. То есть, это телефоны с версией
    • +1
      Кривой перевод. В оригинале «released in the last 4 years», то есть «выпущенные за последние 4 года».

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

Самое читаемое Разработка