Наш первый опыт сдачи уязвимости по программе Apple Security Bounty
Apple славятся заботой о своих пользователях в вопросах безопасности и удобства пользования. Они щедро вознаграждают исследователей безопасности, которые помогают исправить уязвимости в их продуктах. На международной арене у них одни из самых высоких вознаграждений. Однако все чаще их обвиняют в недобросовестном отношении к исследователям, нашедших уязвимости на их платформах. Пример выплат по уязвимостям в девайсах Apple.
Важно заметить что Apple не представлена ни на одной из bug-bounty площадок, все баг-репорты необходимо отправлять напрямую им. Что позволяет им контролировать всю информацию о найденных уязвимостях.
Только по открытой информации за прошлый год компания закрыла более десятка zero-day уязвимостей в iOS.
Давайте рассмотрим их программу вознаграждений поподробнее.
Apple Security Bounty
В рамках приверженности Apple обеспечению безопасности мы вознаграждаем исследователей, которые делятся с нами критическими проблемами и методами, используемыми для их использования. Мы уделяем первоочередное внимание устранению подтвержденных проблем как можно быстрее, чтобы максимально защитить клиентов. Apple предлагает общественное признание тем, кто представляет достоверные отчеты.
Требования на получение вознаграждения
Исследователи должны:
Быть первыми, кто сообщит о проблеме в службу безопасности продуктов Apple;
Предоставить четкий отчет, который включает рабочий эксплойт;
Не раскрывать проблему публично до того, как Apple выпустит рекомендации по безопасности для отчета.
Цепочка и отчет должны включать:
Как скомпилированную, так и ее исходный код;
Все необходимое для выполнения цепочки;
При необходимости образец неразрушающей полезной нагрузки.
А теперь посмотрим как на практике работает программа “Apple Security Bounty” на примере найденной нами DoS уязвимости.
SkyWalk 0-day (<XNU-8011.0.0.122.3)
Для того чтобы вызвать панику ядра необходимо подключиться к сети, которую раздаёт устройство под управлением операционной системы на основе XNU (macOS, iOS, iPadOS), и отправить два пакета на любой интернет ресурс с порта 0 на разные порты назначения. Результатом является зависание устройства с последующей перезагрузкой. Ниже приведен скриншот логов события (panic_full).
Из лога событий мы можем выделить:
Bug_type: 210.
Версия ядра: XNU-8011.0.0.122.3 (так же работает с младшими версиями)
Логи ведут нас по адресу “/Library/Caches/com.apple.xbs/Sources/xnu/xnu-7195.140.42/bsd/skywalk/namespace/netns.c” в компонент skywalk. Поиск по сети привел нас к книге “OS Internals” автора Jonathan Levin. В которой описывается “таинственный” компонент SkyWalk. В данной книге сказано, что это “незадокументированная сетевая подсистема”.
Уязвимость затрагивала устройства на ядре XNU и была протестирована на:
iPhone 12 Pro (iOS 15.0);
iPhone 11 (iOS 14.7.1);
iPhone Xr (iOS 14.6);
MacBook Air, 2020 M1 (macOS 12.0);
Macbook Pro (Retina 13, Mid 2014) (macOS 11.5.2).
Собрав всю эту информацию, написав PoC и отчет мы поспешили уведомить компанию. (Исходный код PoC)
Сообщенная проблема безопасности
Хронология Событий:
14 сентября мы отправили отчет product-security@apple.com с подробным описанием проблемы, как ее воспроизвести, а также с предоставлением исполняемого PoC и его исходного кода.
На следующий день, 15 сентября, мы получили письмо, в котором было сказано об инициации расследования, с просьбой сохранить информацию в тайне.
1 октября мы отправили еще одно письмо с целью узнать как проходит расследование и достаточно ли приложенных материалов.
5 октября пришло ответное сообщение. В нем говорилось о том, что проблема будет решена в ближайшем обновлении безопасности, а также уточнили, как нас можно упомянуть.
После этого был выпущен патч, который отключил возможность отправлять пакеты с порта 0, что делало невозможным атаку с устройств Apple. Однако воспроизвести атаку все также можно было с linux системы.
Спустя некоторое время вышло глобальное обновление, в котором уязвимость была окончательно закрыта на всех системах, при этом в списке исправлений отсутствовала данная уязвимость, ровно как и упоминания о нас.
27 октября мы отправили им письмо с просьбой разъяснить ситуацию, но ответа не последовало.
Спустя полтора месяца мы начали писать статью, периодически отправляли письма на product-security.
9 ноября нам ответили, что уязвимость подтверждена для iPhone и iPad, ей присвоен CVE-идентификатор (CVE-2021-30924).
От нас последовали вопросы: почему отклонены макбуки и можем ли мы рассчитывать на вознаграждение.
18 ноября, спустя 8 дней, мы все же были упомянуты в обновлении безопасности macOS 12.0.1, но упоминаний в обновлениях для iOS и iPadOS не последовало, хотя уязвимость была закрыта.
На этом общение со стороны Apple было завершено.
На основе этой ситуации можем предположить, что Apple намеренно не регистрируется на площадках bug-bounty для сокрытия информации о найденных уязвимостях и их количестве, а также для усложнения получения вознаграждений.
Update: были опубликованы упоминания для всех платформ (iOS, iPadOS, watchOS, tvOS, macOS)
Эпилог
Так как информация об уязвимости была сообщена более 90-и дней назад, считаем необходимым опубликовать подробную информацию о ней.
Процесс выхода упоминания в обновлениях может затянуться (упоминание выйти позже, чем патч, не стоит волноваться). К вопросу о выплатах, каждый отдельная выплата - на усмотрении Apple, если вы подходите под их критерии, то вероятность выплаты выше.
Elaman Iskakov(@darling_x0r) and Alexey Katkov (@watman27).