Apple Wireless Direct Link (AWDL) — ключевой протокол в экосистеме Apple, его использует более миллиарда устройств iOS и macOS для связи между собой. Это запатентованное расширение стандарта IEEE 802.11 (Wi-Fi), которое интегрируется с Bluetooth Low Energy (BLE) и обеспечивает работу таких сервисов, как Apple AirDrop (технология передачи файлов по Wi-Fi и Bluetooth).
14 августа 2019 года на конференции USENIX Security 2019 раскрыт ряд серьёзных уязвимостей в этом протоколе, которые допускают атаки MiTM с незаметным изменением передаваемых файлов, атаки типа «отказ в обслуживании» с прерыванием связи, а также утечки конфиденциальных данных, которые подрывают рандомизацию MAC-адресов, позволяя идентифицировать пользователей и осуществлять долгосрочное отслеживание (см. ниже).
В связи с этим немецкие разработчики Милан Стют и Александр Хейнрих разработали OpenDrop — свободную и более безопасную альтернативу проприетарной технологии от Apple.
OpenDrop — консольная утилита, которая позволяет обмениваться файлами между устройствами непосредственно по WiFi. Уникальная особенность заключается в том, что она совместима с проприетарным протоколом Apple AirDrop для устройств Apple под управлением iOS и macOS. В настоящее время (и, вероятно, в обозримом будущем) OpenDrop поддерживает отправку файлов только на устройства Apple, свободные для обнаружения всеми, поскольку режим по умолчанию «только для контактов» (contacts only) требует сертификатов, подписанных Apple.
Разработчики оговариваются, что OpenDrop представляет собой экспериментальное программное обеспечение, созданное в рамках проекта Open Wireless Link по реверс-инжинирингу запатентованного протокола Apple. Поэтому он не поддерживает все функции AirDrop и может быть несовместим с будущими версиями AirDrop. OpenDrop не связан и не одобрен к использованию компанией Apple. Соответственно, опубликованный код можно использовать на свой страх и риск.
Технология AirDrop активно используется для распространение информации на акциях массового протеста в Гонконге
Для совместимости с Apple AirDrop требуется, чтобы целевая платформа поддерживала специфический канальный уровень Wi-Fi. Кроме того, требуется Python версии 3.6 или выше, а также несколько библиотек.
AirDrop работает исключительно через AWDL, он поддерживается только на macOS или в системах Linux со свободной реализацией AWDL, такой как OWL.
OpenDrop использует последние версии OpenSSL и libarchive. Поскольку macOS поставляется со старыми версиями этих библиотек, для работы нужно установить более новые версии, например, через Homebrew. В любом случае, нужно установить две переменные среды: LIBARCHIVE
и LIBCRYPTO
, соответственно.
Отправка файла представляет собой двухэтапную процедуру. Сначала вы обнаруживаете устройства в непосредственной близости с помощью команды find
. Остановите процесс, как только нашли устройство для приёма файлов.
$ opendrop find
Looking for receivers. Press enter to stop ...
Found index 0 ID eccb2f2dcfe7 name John’s iPhone
Found index 1 ID e63138ac6ba8 name Jane’s MacBook Pro
Затем можно отправить файл с помощью send
.
$ opendrop send -r 0 -f /path/to/some/file
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Uploading has been successful
Вместо индекса подходят идентификатор или имя. OpenDrop попытается интерпретировать входные данные в следующем порядке: сначала как индекс, затем как ID, и, наконец, как имя.
Получение файлов гораздо проще: достаточно запустить команду opendrop receive
. OpenDrop будет автоматически принимать все входящие файлы и помещать их в текущий каталог.
Конечно, у OpenDrop есть ряд ограничений. Например, он не может самостоятельно активировать приёмники macOS/iOS через Bluetooth Low Energy: устройства Apple запускают свой AWDL-интерфейс и сервер AirDrop только после получения специфического сообщения через Bluetooth LE. Таким образом, приёмники Apple AirDrop могут оказаться не обнаруженными, даже если они доступны для всех. В данный момент также не реализована одноранговая аутентификация, как в AirDrop. В частности, OpenDrop не проверяет, что сертификат TLS подписан корневым сертификатом Apple и что запись проверки идентификатора Apple ID правильна. Кроме того, OpenDrop автоматически принимает любой файл, который ему присылают, из-за отсутствия состояния соединения. Наконец, Apple AirDrop поддерживает отправку нескольких файлов одновременно, а OpenDrop может отправлять файлы только по одному.
Возможно, при содействии сообщества некоторые из этих ограничений можно преодолеть. Внести свой вклад предлагают в репозитории GitHub.
Уязвимости AWDL
На конференции USENIX Security 2019 была опубликована статья с первым анализом безопасности и конфиденциальности AWDL и его интеграции с BLE. Среди авторов статьи те же Милан Стют и Александр Хейнрих.
Они раскрыли несколько уязвимостей безопасности и нарушений конфиденциальности, начиная от недостатков дизайна и заканчивая ошибками в реализации. Как было сказано выше, эти ошибки приводят к атакам типа MiTM, DoS и утечкам конфиденциальности. Классификаторы уязвимостей: CVE-2019-8567, CVE-2019-8620, CVE-2019-8612 и CVE-2018-4368 (см. описание на иллюстрации ниже). Некоторые из них закрыты в последних версиях операционных систем от Apple (iOS 12.2 и iOS 13 beta).
Уязвимости затрагивают механизм обнаружения BLE AirDrop, синхронизацию AWDL, дизайн пользовательского интерфейса и реализацию драйверов Wi-Fi. В своём докладе авторы продемонстрировали, что атаки можно провести с использованием недорогого ($20) устройства micro:bit и стандартной карты Wi-Fi. Они также предлагают практические и эффективные контрмеры для защиты от этих атак.
После получения информации об уязвимости Apple смогла выпустить патч для защиты от DoS-атаки, но другие уязвимости безопасности «требуют пересмотра некоторых сервисов», пишут исследователи. Быстро устранить их не получится.
Автор: alizar