
POC для CVE-2025-24132 (AirBourne). В настоящее время просто вызывает переполнение и приводит к краху.
POC для CVE-2025-24132 (AirBourne). В настоящее время просто вызывает переполнение и приводит к сбою.
В попытке получить root-доступ к головному устройству моего автомобиля я исследовал и собрал всё, что узнал об эксплойте Airplay CVE-2025-24132 (названном Airbourne), обнаруженном компанией Oligo Security.
https://www.oligo.security/blog/airborne
Это мой первый проект по реверс-инжинирингу. Я ввязался в это, никогда не используя отладчик, имея очень мало опыта работы с Linux и программированием и никогда не прикасаясь к MacOS до середины проекта. Возможно, мне стоило начать с каких-нибудь CTF... Ну да ладно. Я работал над этим урывками последние несколько месяцев, просто чтобы проверить, смогу ли я это сделать.
Ушло несколько месяцев на получение уязвимой и исправленной копии бинарного файла для диффа, а затем ещё месяц на то, чтобы запустить их в эмуляторе.
Но, как оказалось, до уязвимого кода невозможно добраться в эмуляторе, поскольку он требует взаимодействия с физическим чипом MFi на логической плате. После двух месяцев борьбы, когда я не мог понять, почему не достигаю переполнения, и, наконец, осознав проблему, я смог «каннибализировать» бинарный файл, вырезав проверки ответов чипа MFi и заполнив те места, где он должен был бы вернуть данные, «мусором». Это, наконец, позволило мне достичь переполнения и понять достаточно, чтобы вызвать сбой на реальной системе.
Переполнение существует внутри обработки шифрования AES CTR. Размер ключа шифрования, передаваемого в пакете SETUP, не проверяется и считается равным 16, при этом создается буфер размером 16.
Эти сбои едва заметны, так как сервер обычно немедленно перезапускается и переподключается, что приводит лишь к кратковременной потере звука или чёрному экрану на несколько секунд в системе CarPlay. Мне пока не удалось выяснить, как они утекают память, поэтому на данный момент это применимо только к устройствам с отключенной защитой стека.
Найти способ утечки памяти для обхода защиты стека.
Это работает против блоков CarPlay или AirPlay, которые не требуют какой-либо авторизации. Если требуется сначала ввести PIN-код для сопряжения, это не сработает, так как задействованы дополнительные этапы сопряжения, которые не реализованы.
Для Bluetooth-устройств, чтобы не заниматься всей этой мутью с выяснением Bluetooth-сопряжения, можно просто скачать приложение типа Pyto и запустить скрипт прямо с телефона, как это делал я. Гораздо проще.
Я буду добавлять сюда известные исправленные устройства по мере их обнаружения.
Все AV-ресиверы Onkyo, поддерживающие Airplay, должны быть уязвимы к этому. Моим тестовым устройством был TX-NR656, который вообще не имеет никакой защиты стека. Устройства Crestron DM-NAX-8ZSA до прошивки 3.1 уязвимы и не имеют канареек, но процесс Airplay работает в контейнере. Головные устройства Kia CCNC имеют надлежащую защиту стека, и пока мне не удалось её обойти, но, согласно системным журналам, carplayserver работает от root.