Вектор атаки 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.

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


  1. TrusTT
    13.09.2017 06:28

    Ну и как мне теперь слушать Bluetooth-наушники в метро?


    1. Cloud4Y Автор
      13.09.2017 06:31

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


      1. TrusTT
        13.09.2017 06:34
        +3

        Я вас понял
        image


      1. gkir
        13.09.2017 16:15

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

        При полностью выключенном (а не скрытом от всех) блютусе программа говорит, что устройство уязвимо. Отличнo.


        1. Germanets
          13.09.2017 16:36

          Каким конкретно способом программа проверяет устройство найти, увы, не удалось… Вполне вероятно, что для проверки текущего устройства включенный блютуз и не нужен, не будет же устройство само к себе подключатся) Вполне возможно, что достаточно просто выполнить несколько функций из загруженных библиотек, или же подключиться к уязвимым сервисам локально. А вот для тестирования удалённых устройств — блютуз вполне себе включается самой программой.


          1. sasha1024
            13.09.2017 17:38

            Ну да. Наверно, программа проверяет, установлено ли ПО с уязвимостями, а не включено ли оно. А то кто знает — вдруг в момент проверки что-то выключено, ты скажешь человеку «всё ок», а он потом запустит прогу — и привет.


            1. na_net_i_suda_net
              14.09.2017 19:25

              Все намного проще, для устройства на котором приложение установлено, просто проверяется Build.VERSION.SECURITY_PATCH, если он до 1 августа, тогда уязвим.
              Вообще все приложение — красивые анимашки, а в код посморишь, там 1 класс на всю логику(com.armis.blueborne_detector.VulnerabilityUtils).
              Для проверки устройств по близости, приложение по маку устанавливает производителя, ось и название устройства, на основе этих данных градирует устройста на 3 категории.


      1. wholeman
        15.09.2017 22:52

        Ага, дождёшься их, как же. У меня сейчас Samsung S4 и он меня вполне устраивает. Там есть такие прикольные штуки, как термометр и гигрометр. Но я сильно сомневаюсь, что Samsung выпустит патч для аппарата, отстающего на четыре поколения.
        Такой вопрос: а если «Режим модема» у меня выключен в настройках, BNEP и PAN же должны быть отключены, и RCE невозможно, только менее опасные уязвимости. Или всё-таки нет?


    1. pnetmon
      13.09.2017 07:59

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


      1. TrusTT
        13.09.2017 08:03
        -2

        Процитирую Википедию

        Внедрение кода в атаке «человек посередине» главным образом применяется для захвата уже авторизованной сессии, выполнения собственных команд на сервере и отправки ложных ответов клиенту.
        Атака «человек посередине» позволяет криптоаналитику вставлять свой код в электронные письма, SQL-выражения и веб-страницы (то есть позволяет осуществлять SQL-инъекции, HTML/script-инъекции или XSS-атаки), и даже модифицировать загружаемые пользователем бинарные файлы для того, чтобы получить доступ к учетной записи пользователя или изменить поведение программы, загруженной пользователем из интернета.


        1. diversenok
          13.09.2017 20:19

          Нормальные люди не запускают бинарные файлы, которые пришли по блютусу с наушников.


          1. TimsTims
            13.09.2017 23:07
            +2

            Вчитайтесь в статью. Там идёт эксплуатация уязвимости, чтение памяти побитово, и похищение ключей. Всё остальное — дело техники. Посмотрите ролик, там даже музыка не включена, не то что «запуск принимаемых файлов»… похоже вы вообще не поняли всю серьезность проблемы.


            1. diversenok
              13.09.2017 23:14

              С моей стороны это был сарказм.


  1. mokhin-denis
    13.09.2017 07:24

    У меня часы, уже вторые, с функцией смарт. Соединяются по BT с телефоном. Получается, включать BT нужно дома… (только если нет злоумышленника за стеной ))) Тогда все смартфункции часов идут лесом… Мдя…


  1. sim-dev
    13.09.2017 08:01
    +3

    Итак, в чём проблема? Bluetooth сложный.
    Проблема-то очевидна, но решение её «не продаваемое».
    Как только авторучку вы подключите к интернету, тут же у юристов прибавится работы с легитимностью подписей и утечкой кофиденциальной рукописной информации. Выход один — не подключать авторучку к интернету, но разве маркетологи на это пойдут?!
    Решение уязвимости блютуза прибавит еще тысчонку страниц в его спецификации, и все на голубом глазу будут думать, что это уменьшит уязвимость…

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


    1. geher
      13.09.2017 10:45
      +2

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

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


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


      1. areht
        13.09.2017 12:28
        -1

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

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


        1. geher
          13.09.2017 16:07
          +1

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


          1. areht
            13.09.2017 16:47

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


            1. geher
              13.09.2017 22:21

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


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


              1. areht
                13.09.2017 22:45

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

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

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

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


                1. geher
                  14.09.2017 08:33

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


    1. dmitry_dvm
      13.09.2017 12:33
      +7

      Эйнштейн просто компы не застал. 90% проблем так и чинятся.


      1. sasha1024
        13.09.2017 17:29

        :).


  1. AVX
    13.09.2017 08:34

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


    1. Dima_pb
      13.09.2017 13:34

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


  1. Protactinium236
    13.09.2017 08:47
    +2

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


    1. batyrmastyr
      13.09.2017 09:45

      Судя по статье, уязвимость LEAP не закрыта.


      1. Protactinium236
        13.09.2017 10:01

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


        то есть это нельзя понимать однозначно?


        1. batyrmastyr
          13.09.2017 11:08

          Похоже, невнимательно прочёл.


    1. AntonAlekseevich
      13.09.2017 10:17

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


      1. Protactinium236
        13.09.2017 10:26

        по поводу LEAP не беспокоюсь это для владельцев AirPods и AppleTV


        1. willyd
          14.09.2017 05:28

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


          1. Protactinium236
            14.09.2017 07:44

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


          1. navion
            15.09.2017 13:07

            Уже исправлено в iOS 10, а для старья (2011 года выпуска) обещают патч на 9.3.5.


  1. Fedcomp
    13.09.2017 13:00
    -1

    > Итак, в чём проблема? Bluetooth сложный.

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


    1. flatscode
      13.09.2017 16:08

      Bluetooth сложный

      То, что BT сложный заметно на практике, т.к. перебирая разные комбинации телефонов и BT-гарнитур у меня ни одна из них не работала на 100% без проблем. То здесь, то там всплывали разные косяки. То долгое подключение, то заикания звука, то какие-то странные подвисания.


      1. calg0n
        15.09.2017 11:32

        Видимо дело в смартфоне. Имею 6S и сколько гарнитур/наушников перепробовал, всё хорошо было. Из последнего даже дешманский китайский блютус адаптер в машине работал. Когда был Nexus во владении, тоже никаких косяков не было. Так что проблема явно не с гарнитурами.


    1. a1ien_n3t
      13.09.2017 17:48
      +1

      Проблема не в языке. Как уже не раз обсуждали в тойже теме heartbleed, что rust не панацея.
      Небезопасный код можно написать на любом языке.


  1. ASC7_Uni
    13.09.2017 15:13

    Компания Microsoft выпустила обновления для системы безопасности в июле.

    Может кто-нибудь подсказать конкретные номера обновлений?


    1. navion
      13.09.2017 19:41

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


      1. dark_snow
        15.09.2017 11:34

        а для 7 и хр?


        1. navion
          15.09.2017 13:05

          Я поспешил с месяцем, во вторник вышел сентбярьский пакет для 7 и выше.


          1. dark_snow
            15.09.2017 14:57

            еще бы для хр ибо есть пара устройств с ней (выше никак по ресурсам ибо проц т7200 и 2гб озу)


  1. Jogger
    13.09.2017 18:36
    -1

    Спасибо что предупредили, а то я как раз задумался о покупки bluetooth гарнитуры. Теперь не стану покупать.


  1. sasha1024
    13.09.2017 18:57

    Есть ещё такая статья, старше на 9 минут.


  1. justaguest
    13.09.2017 19:19

    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)


  1. technic93
    13.09.2017 20:12

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


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


  1. KarasikovSergey
    14.09.2017 16:07

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

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

    Очень хотелось бы взглянуть на PoC