История, которую я сейчас расскажу, — это классика современного багхантинга. Пять парней, три месяца, 55 уязвимостей в сервисах Apple. И всё это — не про взлом железа или iOS, а про веб-сервисы. Оказывается, даже у такой махины, как Apple, есть проблемы с безопасностью облачных сервисов.
Я перерыл их отчет, выбрал три самых интересных дыры. Тут будет и XSS в почтовике iCloud, позволяющий разослать червя по всем контактам жертвы, и SSRF, который открыл доступ к исходникам iOS, и банальная (но от этого не менее опасная) ошибка с паролем по умолчанию на закрытом форуме для преподавателей.
---
Как всё начиналось: разведка
Сэм Карри, двадцатилетний парень, случайно узнал, что Apple платит не только за уязвимости в железе и iOS, но и за дыры в веб-сервисах. Он собрал команду из четырех других исследователей, и они начали копать.
Первым делом они поняли масштаб. Apple принадлежит огромный диапазон IP-адресов — 17.0.0.0/8. Внутри — 25 тысяч веб-серверов, 10 тысяч в домене apple.com, еще 7 тысяч уникальных доменов, и даже свой собственный TLD .apple. Они просканировали всё, что можно, нашли кучу интересного (включая уязвимый VPN-сервер и утечку токенов в ошибках) и сосредоточились на самых перспективных целях.
---
Дыра первая. Форум для преподавателей: пароль, который был у всех
Что атаковали: ade.apple.com — закрытый форум Apple Distinguished Educators.
Суть: разработчики прикрутили к форуму Jive свой модуль авторизации через Apple ID, но в коде регистрационной формы зачем-то оставили скрытое поле password с одним и тем же значением для всех.
В форме было:
Код:
<input id="password" type="hidden" value="###INvALID#%!3">
Исследователи предположили, что где-то в Jive есть способ войти с логином и паролем, минуя Apple ID. Нашли функцию cs_login, сформировали запрос и начали перебирать логины. Перебирали всего минуту — трехсимвольные имена, пароль один и тот же.
Сервер ответил успехом.
Они залогинились. Дальше — нашли админку (она открывалась по /admin/; — точка с запятой в конце творит чудеса), нашли админскую учетку с полными правами. С такими правами можно было выполнять код на сервере, лезть во внутреннюю сеть Apple и управлять учетками пользователей.
---
Дыра вторая. XSS в iCloud: как я могу украсть твои фото и разослать червя по всем контактам
Что атаковали: почтовый сервис iCloud (icloud.com).
Суть: в Apple решили, что обрабатывать письма на клиенте — хорошая идея. Письмо превращается в JSON, который потом обрабатывается JavaScript'ом прямо в браузере.
Сэм Карри нашел, что если в письме два CSS-тега <style>, и в первом из них не закрыть тег, то парсер склеивает их в один. Он отправил себе письмо:
Код:
<style></sty</style>
<style>le><sсript>alert(1)</sсript></style>
Когда он открыл письмо, парсер собрал это в:
Код:
<style></style><sсript>alert(1)</sсript></style>
Алерт сработал. Это была XSS в домене icloud.com.
Теперь у злоумышленника есть возможность выполнять произвольный JavaScript от имени жертвы. А значит — запрашивать API iCloud, читать фотографии, документы, календари, список контактов.
Карри написал Proof of Concept, который:
1. Получает URL всех фотографий жертвы через API iCloud.
2. Вставляет их в письмо.
3. Отправляет это письмо самому себе.
4. А затем — по списку контактов жертвы.
Технически это почтовый червь. Он распространяется сам, ворует все данные из iCloud и рассылает себя дальше.
---
Дыра третья. SSRF в iCloud: доступ к исходникам iOS
Что атаковали: всё тот же почтовик iCloud, функция "Open in Pages".
Суть: в iCloud можно открыть вложение в приложении Pages. При этом формируется HTTP-запрос с параметром url, который указывает на файл. Исследователи попробовали заменить этот URL на произвольный — сервер ругался.
Тогда они добавили @ourdomain.com после разрешенного адреса. Например: https://p37-mailws.icloud.com@ourdomain.com.
Сервер воспринял p37-mailws.icloud.com как логин, а ourdomain.com — как реальный адрес. И отправил запрос туда.
Дальше — больше. Оказалось, что можно читать любые файлы, доступные серверу. Исследователи написали скрипт, который обходил внутренние ресурсы Apple. Они нашли репозиторий Maven с исходниками приложений Apple. В том числе — компонентов iOS.
Таким образом, SSRF-уязвимость дала доступ к исходному коду операционной системы Apple.
---
Что еще нашли
Кроме этих трех, команда нашла еще 52 уязвимости:
· Обход аутентификации до уровня глобального администратора.
· Command Injection из-за неочищенного имени файла.
· RCE через забытый админский инструмент.
· SQL-инъекции в Vertica.
· Blind XSS во внутреннем портале поддержки.
· Выполнение PhantomJS на сервере, что дало доступ к внутренним ресурсам и ключам AWS IAM.
---
Что в итоге
Apple закрыла большинство дыр в течение нескольких часов после баг-репорта. Заплатила исследователям 288 500 долларов.
Мораль:
· Даже у гигантов вроде Apple есть дыры.
· Веб-сервисы — не менее лакомая цель, чем операционные системы.
· XSS в почтовике — это не просто «алерт», это потенциальный червь, ворующий все данные.
· SSRF — это доступ к внутренней сети и исходникам.
· А иногда достаточно просто перебрать логины, если пароль у всех одинаковый.


