Как стать автором
Обновить

Наш первый опыт сдачи уязвимости по программе Apple Security Bounty

Время на прочтение4 мин
Количество просмотров44K

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

На основе этой ситуации можем предположить, что Apple намеренно не регистрируется на площадках bug-bounty для сокрытия информации о найденных уязвимостях и их количестве, а также для усложнения получения вознаграждений.

Update: были опубликованы упоминания для всех платформ (iOS, iPadOS, watchOS, tvOS, macOS)

Эпилог

Так как информация об уязвимости была сообщена более 90-и дней назад, считаем необходимым опубликовать подробную информацию о ней.
Процесс выхода упоминания в обновлениях может затянуться (упоминание выйти позже, чем патч, не стоит волноваться). К вопросу о выплатах, каждый отдельная выплата - на усмотрении Apple, если вы подходите под их критерии, то вероятность выплаты выше.

Elaman Iskakov(@darling_x0r) and Alexey Katkov (@watman27).

Теги:
Хабы:
Всего голосов 210: ↑200 и ↓10+190
Комментарии56

Публикации