Эксплойт BlueBorne на Android, iOS, Linux и Windows: более 8 миллиардов устройств критически уязвимы

https://www.armis.com/blueborne/


Вектор атаки BlueBorne может потенциально повлиять на все устройства с Bluetooth, количество которых сегодня оценивается более чем в 8,2 миллиарда. Bluetooth является ведущим и наиболее распространенным протоколом для ближней связи и используется всеми устройствами — от обычных компьютеров и мобильных до IoT-устройств, таких как телевизоры, часы, автомобили и медицинские приборы.

Итак, в чём проблема? Bluetooth сложный. Эта чрезмерная сложность является прямым следствием огромной работы, которая была проведена при создании спецификации Bluetooth. Чтобы проиллюстрировать это отметим, что, в то время как спецификация WiFi (802.11) умещается на 450 страницах, объём спецификации Bluetooth достигает 2822 страниц. Результатом непрозрачности является большое количество уязвимостей, о части из которых мы расскажем в этой статье.

Спецификация Bluetooth имеет не менее 4 разных уровней фрагментации, как показано на диаграмме, взятой из спецификации:



Обзор BlueBorne


Вектор атаки BlueBorne состоит из нескольких этапов. Во-первых, злоумышленник обнаруживает активные соединения Bluetooth вокруг. Устройства могут быть идентифицированы, даже не находясь в режиме «обнаружения». Затем злоумышленник получает MAC-адреса уязвимых устройств. «Прощупав» устройство, злоумышленник определяет, какую операционную систему использует его жертва, и настраивает соответствующим образом эксплойт. Затем используя уязвимость в реализации протокола Bluetooth на соответствующей платформе, злоумышленник получает доступ, необходимый для достижения его злонамеренной цели. На этом этапе хакер может выбрать атаку «Man-in-The-Middle», «прослушивать» устройство или получить полный контроль с целью использования его в широком круге кибер-атак, таких как ботнет WireX.


Атака BlueBorne на Android


Как только злоумышленник определил, что его цель использует операционную систему Android, он может использовать четыре уязвимости, обнаруженные для этих устройств, или атаку Man-in-The-Middle.

Ниже приведена краткая демонстрация того, как с помощью BlueBorne злоумышленник может взять под свой контроль Android-устройство:



Уязвимость в Android, которая может привести к утечке информации (CVE-2017-0785


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

Уязвимость удаленного выполнения кода №1 (CVE-2017-0781)


Эта уязвимость находится в службе Bluetooth Network Encapsulation Protocol (BNEP). BNEP позволяет использовать Интернет через Bluetooth, превращая мобильный телефон с модемом в маршрутизатор, точку доступа в Интернет. Из-за недостатка в службе BNEP хакер может вызвать нарушение целостности информации в памяти, что позволит ему запускать код на устройстве. Из-за отсутствия надлежащей проверки авторизации запуск этой уязвимости не требует какого-либо взаимодействия с пользователем, поэтому он не узнает об атаке.

Уязвимость удаленного выполнения кода №2 (CVE-2017-0782)


Эта уязвимость похожа на предыдущую, но находится на более высоком уровне службы BNEP — профиле персональной сети (Personal Area Networking, PAN), который отвечает за установление сетевого соединения на основе IP между двумя устройствами. При этой атаке нарушение целостности информации в памяти также может быть использовано злоумышленником для получения полного контроля над зараженным устройством.

Man-in-The-Middle (CVE-2017-0783)


Атаки Man-in-The-Middle (MiTM) позволяют злоумышленнику перехватывать и изменять данные, поступающие на целевое устройство или с него. Чтобы реализовать атаку MiTM с использованием Wi-Fi, злоумышленнику потребуется специальное оборудование и запрос соединения целевого устройства с открытой WiFi-сетью. Уязвимость существует в PAN-профиле Bluetooth-стека и позволяет злоумышленнику создавать вредоносный сетевой интерфейс на устройстве жертвы, перенастраивать IP-маршрутизацию и принудительно передавать все сообщения через вредоносный сетевой интерфейс. Атака в очередной раз не требует взаимодействия с пользователем или какой-либо аутентификации, что делает её практически незаметной.

Атака BlueBorne на Windows


Мы обнаружили уязвимость в Windows, которая позволяет злоумышленнику провести атаку Man-in-The-Middle. Ниже краткая демонстрация этого:



Man-in-The-Middle №2 (CVE-2017-8628)


Эта уязвимость идентична той, которая обнаружена в операционной системе Android, и влияет на обе системы, поскольку они используют одни и те же принципы в реализации некоторых протоколов Bluetooth.

Атака BlueBorne на Linux


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

Вот краткое описание того, как с помощью BlueBorne хакер может взять под контроль Linux-устройство:



Утечка информации (CVE-2017-1000250)


Подобно уязвимости утечки информации в Android, эта уязвимость находится на сервере SDP, который отвечает за одну из важнейших особенностей Bluetooth — автоматическое подключение Bluetooth-устройств к службам, предоставляемым другими устройствами. Недостаток в SDP позволяет злоумышленнику отправлять набор запросов на сервер, заставляя его раскрывать бит памяти в ответ. Это может использоваться злоумышленником для получения конфиденциальных данных из процедур Bluetooth, которые могут содержать ключи шифрования.

Переполнение стека в BlueZ (CVE-2017-1000251)


Эта уязвимость была обнаружена в стеке Bluetooth Linux-ядра. Внутренний дефект в L2CAP (Logical link control and adaptation protocol), который используется для соединения между двумя устройствами, вызывает повреждение памяти, позволяющее выполнить код атакующего.

Атака BlueBorne на iOS


Armis раскрыл Apple сведения об этой атаке. Эксплойт был устранён в версии IOS 10 и версии Apple TV выше 7.2.2, однако эта уязвимость по-прежнему представляет большой риск для любого iOS-устройства до версии 10. Уязвимость может быть использована злоумышленником для выполнения кода с повышенными привилегиями.

Удаленное выполнение кода с помощью протокола Apple Low Energy Audio


Эта уязвимость была обнаружена в новом протоколе LEAP (Low energy audio protocol), разработанном Apple и работающим поверх Bluetooth. Протокол предназначен для потоковой передачи звука на периферийные устройства, например, гарнитуры или Siri Remote. Поскольку аудио-команды, отправленные с помощью LEAP, проверены не должным образом, злоумышленник может использовать повреждение памяти, чтобы получить полный контроль над устройством.

Как защититься от BlueBorne?


Уязвимости, которые могут распространяться по воздуху и между устройствами, представляют огромную угрозу для любой организации или отдельного лица. Существующие меры безопасности, включая защиту конечных точек, брандмауэры и решение сетевой безопасности, не предназначены для идентификации таких типов атак и связанных с ними уязвимостей. Их основная задача — блокировать атаки, которые могут распространяться через IP-соединения.

В ядре Linux проблема присутствует в коде функции l2cap_parse_conf_rsp, присутствующей начиная с ядра 3.3 (октябрь 2011 г.). Проблема была устранена 9 сентября. В ядрах Linux со включенной защитой от переполнения стека (CONFIG_CC_STACKPROTECTOR=y) уязвимость приводит только к краху ядра. Подобная защита по умолчанию включена в ядрах RHEL, CentOS, Fedora, Ubuntu и большинства стационарных дистрибутивов Linux. Поэтому в обычных дистрибутивах возможен лишь вызов краха, а основная опасность угрожает мобильным Linux-платформам, таким как Tizen.

Пользователи Android должны дождаться исправлений безопасности для своих устройств, так как это зависит от производителя конкретного устройства. Пока можно установить приложение «BlueBorne Vulnerability Scanner» (созданное командой Armis) из Google Play Store, чтобы проверить, уязвимы ли ваши устройства для атаки BlueBorne или нет.

«Компания Microsoft выпустила обновления для системы безопасности в июле. Клиенты, у которых включен Центр обновления Windows и применены обновления безопасности, были защищены автоматически. Мы выпустили обновление как можно скорее, но как ответственный отраслевой партнер, не раскрывали информацию, пока другие производители не разработали патчи», — отметил представитель Microsoft.

Всем пользователям до установки обновлений рекомендуется отключить по умолчанию Bluetooth и включать его только при необходимости.

Полные технические подробности с анализом кода можно узнать из Technical White Paper on BlueBorne.
Используете ли вы Bluetooth и как часто?

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

Метки:
Cloud4Y 103,34
#1 Корпоративный облачный провайдер
Поделиться публикацией
Комментарии 51
  • 0
    Ну и как мне теперь слушать Bluetooth-наушники в метро?
    • 0
      Пользователи Android должны дождаться исправлений безопасности для своих устройств, так как это зависит от производителя конкретного устройства. Пока можно установить приложение «BlueBorne Vulnerability Scanner» (созданное командой Armis) из Google Play Store, чтобы проверить, уязвимы ли ваши устройства для атаки BlueBorne или нет.
      • +3
        Я вас понял
        image
        • 0
          Пока можно установить приложение «BlueBorne Vulnerability Scanner» (созданное командой Armis) из Google Play Store, чтобы проверить, уязвимы ли ваши устройства для атаки BlueBorne или нет.

          При полностью выключенном (а не скрытом от всех) блютусе программа говорит, что устройство уязвимо. Отличнo.
          • 0
            Каким конкретно способом программа проверяет устройство найти, увы, не удалось… Вполне вероятно, что для проверки текущего устройства включенный блютуз и не нужен, не будет же устройство само к себе подключатся) Вполне возможно, что достаточно просто выполнить несколько функций из загруженных библиотек, или же подключиться к уязвимым сервисам локально. А вот для тестирования удалённых устройств — блютуз вполне себе включается самой программой.
            • 0
              Ну да. Наверно, программа проверяет, установлено ли ПО с уязвимостями, а не включено ли оно. А то кто знает — вдруг в момент проверки что-то выключено, ты скажешь человеку «всё ок», а он потом запустит прогу — и привет.
              • 0
                Все намного проще, для устройства на котором приложение установлено, просто проверяется Build.VERSION.SECURITY_PATCH, если он до 1 августа, тогда уязвим.
                Вообще все приложение — красивые анимашки, а в код посморишь, там 1 класс на всю логику(com.armis.blueborne_detector.VulnerabilityUtils).
                Для проверки устройств по близости, приложение по маку устанавливает производителя, ось и название устройства, на основе этих данных градирует устройста на 3 категории.
          • 0
            Ага, дождёшься их, как же. У меня сейчас Samsung S4 и он меня вполне устраивает. Там есть такие прикольные штуки, как термометр и гигрометр. Но я сильно сомневаюсь, что Samsung выпустит патч для аппарата, отстающего на четыре поколения.
            Такой вопрос: а если «Режим модема» у меня выключен в настройках, BNEP и PAN же должны быть отключены, и RCE невозможно, только менее опасные уязвимости. Или всё-таки нет?
          • 0

            Ну и какая утечка через наушники(на которые не будет обновлений)? Замена передаваемого трафика на свой: сигнал на динамики, сигнал с микрофона?

            • –2
              Процитирую Википедию
              Внедрение кода в атаке «человек посередине» главным образом применяется для захвата уже авторизованной сессии, выполнения собственных команд на сервере и отправки ложных ответов клиенту.
              Атака «человек посередине» позволяет криптоаналитику вставлять свой код в электронные письма, SQL-выражения и веб-страницы (то есть позволяет осуществлять SQL-инъекции, HTML/script-инъекции или XSS-атаки), и даже модифицировать загружаемые пользователем бинарные файлы для того, чтобы получить доступ к учетной записи пользователя или изменить поведение программы, загруженной пользователем из интернета.
              • 0
                Нормальные люди не запускают бинарные файлы, которые пришли по блютусу с наушников.
                • +2
                  Вчитайтесь в статью. Там идёт эксплуатация уязвимости, чтение памяти побитово, и похищение ключей. Всё остальное — дело техники. Посмотрите ролик, там даже музыка не включена, не то что «запуск принимаемых файлов»… похоже вы вообще не поняли всю серьезность проблемы.
                  • 0
                    С моей стороны это был сарказм.
          • 0
            У меня часы, уже вторые, с функцией смарт. Соединяются по BT с телефоном. Получается, включать BT нужно дома… (только если нет злоумышленника за стеной ))) Тогда все смартфункции часов идут лесом… Мдя…
            • +3
              Итак, в чём проблема? Bluetooth сложный.
              Проблема-то очевидна, но решение её «не продаваемое».
              Как только авторучку вы подключите к интернету, тут же у юристов прибавится работы с легитимностью подписей и утечкой кофиденциальной рукописной информации. Выход один — не подключать авторучку к интернету, но разве маркетологи на это пойдут?!
              Решение уязвимости блютуза прибавит еще тысчонку страниц в его спецификации, и все на голубом глазу будут думать, что это уменьшит уязвимость…

              Только идиоты делают одно и то же, всякий раз надеясь на другой результат. Если не ошибаюсь, слова приписывают Эйнштейну. Могучий старик.
              • +2
                Только идиоты делают одно и то же, всякий раз надеясь на другой результат.

                Человек набирает один и тот же номер и получает короткие гудки.
                Идиот! Там всегда будет занято.


                Я, конечно, понимаю, что имелось ввиду, но что сказано (или написано), то и имеем.
                И это общая проблема подобных громких абсолютных фраз

                • –1
                  Во-первых,
                  > Безумие — это точное повторение одного и того же действия. Раз за разом, в надежде на изменение. Это есть безумие.

                  Во-вторых, не важно всегда ли будет занято. Лучше найти другой номер.
                  • +1

                    Полагаю, достаточно стандартной является ситуация ожидания события, когда понять факт наступления события позволяет только выполнение некоторой процедуры проверки.
                    Ожидание освобождения абонента путем периодического набора его номера — только один из вариантов этой ситуации (я знаю о существовании телефонов с автоматическим дозвоном, но случаи бывают разные).

                    • 0
                      Раз уж вы в формализм хотите уйти… у вас в тексте «ожидание», а в цитате «надежда». Ну и «периодически» и «раз за разом» — тоже разные вещи.
                      • 0

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


                        "Периодически" и "раз за разом" на самом деле не так уж и далеко друг от друга.
                        Если совсем уж формально, то "периодически" — это "раз за разом с некоторым интервалом между событиями". Но в реальной жизни слово "периодически" не всегда означает наличие определенного периода, а потому можно считать, что смысл достаточно близок.

                        • 0
                          > Надежда — это про всего лишь про отсутствие гарантий ожидаемого.

                          Надежда — это при отсутствии объективных причин ожидать «ожидаемого».

                          > заставляет набирать номер раз за разом несмотря на ненулевую вероятность полной невозможности дозвониться

                          Мне кажется тут уместен только один вопрос: на которой итерации забирать в психушку?
                          • 0

                            При отсутствии объективных причин (за объективную причину вполне проходит отличная от нуля вероятность) мы имеем безнадежную ситуацию.
                            А насчет психушки после некоторого числа итераций (количество допустимых итераций определяется ситуацией) согласен. Раз за разом не означает бесконечное число попыток, а потому не вижу противоречий со своей позицией.

                • +7
                  Эйнштейн просто компы не застал. 90% проблем так и чинятся.
              • 0
                Что насчёт симбиана, байду и прочих? Для них нет рабочих эксплоитов?
                Каким образом хакер перенаправит трафик через «злонамеренный интерфейс», если в устройстве, например, просто нет возможности расшарить интернет по BT? Или вовсе не реализовано PAN.
                • 0

                  Естественно, что наибольшему риску взлома подлежат наиболее интересные с точки зрения хакера устройства, а не все подряд. Вряд ли кто будет специально ковырять байду ради сферической возможности взломать байду. Главное, что принципиально показан метод, а уж степень риска каждый определяет для себя сам.

                • +2

                  У владельцев iOS устройств как я понял проблем уже нет

                  • 0
                    Судя по статье, уязвимость LEAP не закрыта.
                    • 0
                      Armis раскрыл Apple сведения об этой атаке. Эксплойт был устранён в версии IOS 10 и версии Apple TV выше 7.2.2, однако эта уязвимость по-прежнему представляет большой риск для любого iOS-устройства до версии 10. Уязвимость может быть использована злоумышленником для выполнения кода с повышенными привилегиями.


                      то есть это нельзя понимать однозначно?
                      • 0
                        Похоже, невнимательно прочёл.
                    • 0

                      С iOS 10 нет. Более старые версии подвержены.

                      • 0
                        по поводу LEAP не беспокоюсь это для владельцев AirPods и AppleTV
                        • 0
                          Как я понимаю iPhone как раз уязвим. Только из описания непонятно должен ли быть атакущий аутентифицирован.
                          • 0

                            На следующей неделе выйдет иос11 и я уверен что там уже заплатка будет

                            • 0
                              Уже исправлено в iOS 10, а для старья (2011 года выпуска) обещают патч на 9.3.5.
                      • –1
                        > Итак, в чём проблема? Bluetooth сложный.

                        Проблема с тем же buffer overflow это несовершенство инструментов, а не просто сложность спецификации. Какой бы сложной спецификация не была, программа не должна позволять buffer overflow. Для этого есть rust например. Но йожики будут продолжать писать на C/C++ ведь на C/C++ пишут все. Как впрочем никто не будет ломать обратную совместимость чтобы сделать язык более статически анализируемым.
                        • 0
                          Bluetooth сложный

                          То, что BT сложный заметно на практике, т.к. перебирая разные комбинации телефонов и BT-гарнитур у меня ни одна из них не работала на 100% без проблем. То здесь, то там всплывали разные косяки. То долгое подключение, то заикания звука, то какие-то странные подвисания.
                          • 0
                            Видимо дело в смартфоне. Имею 6S и сколько гарнитур/наушников перепробовал, всё хорошо было. Из последнего даже дешманский китайский блютус адаптер в машине работал. Когда был Nexus во владении, тоже никаких косяков не было. Так что проблема явно не с гарнитурами.
                          • +1
                            Проблема не в языке. Как уже не раз обсуждали в тойже теме heartbleed, что rust не панацея.
                            Небезопасный код можно написать на любом языке.
                            • 0
                              Можно. Но есть языки которые страхуют от этого, а есть те которые «поощряют» это.
                          • 0
                            Компания Microsoft выпустила обновления для системы безопасности в июле.

                            Может кто-нибудь подсказать конкретные номера обновлений?
                            • 0
                              Так и называется «июльский пакет обновления», но его уже заменил октябрьский.
                              • 0
                                а для 7 и хр?
                                • 0
                                  Я поспешил с месяцем, во вторник вышел сентбярьский пакет для 7 и выше.
                                  • 0
                                    еще бы для хр ибо есть пара устройств с ней (выше никак по ресурсам ибо проц т7200 и 2гб озу)
                            • –1
                              Спасибо что предупредили, а то я как раз задумался о покупки bluetooth гарнитуры. Теперь не стану покупать.
                              • 0
                                Есть ещё такая статья, старше на 9 минут.
                                • 0
                                  Microsoft – Contacted on April 19, 2
                                  Microsoft – Contacted on April 19, 2017 after which details were shared. Updates were made on July 11. Public disclosure on September 12, 2017 as part of coordinated disclosure.
                                  [...]
                                  Linux – Contacted August 15 and 17, 2017. On September 5, 2017, we connected and provided the necessary information to the the Linux kernel security team and to the Linux distributions security contact list and conversations followed from there. Targeting updates for on or about September 12, 2017 for coordinated disclosure.
                                  017 after which details were shared. Updates were made on July 11. Public disclosure on September 12, 2017 as part of coordinated disclosure.
                                  [...]
                                  Linux – Contacted August 15 and 17, 2017. On September 5, 2017, we connected and provided the necessary information to the the Linux kernel security team and to the Linux distributions security contact list and conversations followed from there. Targeting updates for on or about September 12, 2017 for coordinated disclosure.

                                  MS получили детали 9 Апреля, и чинили 3 месяца, Linux получили детали 5 Сентября, и пофиксили за 4 дня (патч: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e860d2c904d1a9f38a24eb44c9f34b8f915a6ea3)

                                  • 0

                                    Там ошибка с переполнением происходит в момент сериализации каких то блютузных структур в буфер для отправки. Так вот размер буфера выделяется где то вначале процедуры сериализации либо 64 либо 128 байт (как я глянул в коде) потом происходит его наполнение разными данными, которые являются разными структурами, через if/else и switch/case, соответсвенно заранее спрогнозировать нужный размер буфера не возможно и получаем потенциальную возможность выхода за пределы массива.
                                    В патче теперь добавили проверку при каждой записи в этот буфер на переполнение и соответсвенно теперь по всему коду передается не только указатель но дополнительным аргуметом размер. Это является самым удобным представлением массива по мнению сишников.
                                    Вполне возможно стандарт синего зуба предполагает фиксированный размер пакета, но доказать то что любая комбинация тех самых if/else и switch/case выдает на выходе меньше чем N байт никто не удосужился, потому что цитата "протокол bluetooth сложный". А оказывается что ребята из armis придумали как подобрать такие параметры запроса чтобы "инвариант" нарушился.


                                    P.S. я не специальист по ядру и тем более блютузу так что все выше изложенное сказано на правах дилетанта

                                    • 0
                                      Если я правильно понял описание атаки, то для ее инициации надо знать bluetooth адрес атакуемого устройства. Если оно не находится в режиме обнаружения — то узнать его может быть не так уж и просто. Хорошо, если он совпадает с WiFi MAC адресом (так бывает), тогда будучи в одной сети можно получить его методом сканиварония. Если же нет — то потребуется специализированное устройство Ubertooth. То есть опасаться, что телефоны сами будут друг друга заражать наверное все же не стоит.
                                      Далее, для меня атака делится на две интересных части:

                                      1. Это ассоциация с bluetooth жертвы без участия жертвы, что само по себе уже круто (и без дальнейшего взлома можно так подключить устройство вывода аудио, или устройство ввода)
                                      2. Собственно shell-доступ с привилегированным пользователем (я так понял из демки, что пользователь bluetooth имеет очень широкие возможности доступа к памяти устройства)

                                      Очень хотелось бы взглянуть на PoC
                                      • 0
                                        Обновление прилетело и ладно
                                        image

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

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