Введение
Преимущество быть автором на Tom’s Hardware заключается не только в том, что можно попробовать в работе новейшие GPU и CPU. Конечно, всё это очень неплохо, но для меня гораздо интереснее возможность встречаться с людьми, благодаря которым вся эта магия была сотворена.
Сегодня нам посчастливилось взять ещё одно интервью с Чарли Миллером (Charlie Miller) из компании Independent Security Evaluators. Как знают постоянные читатели Tom’s Hardware, Чарли стал первым хакером, взломавшим iPhone, и при этом ему удавалось успешно взламывать полностью пропатченный ноутбук Apple MacBook каждый год на состязании CanSecWest Pwn2Own Contest.
Если вы не живёте в далёкой сибирской деревне, то наверняка знаете о сайте jailbreakme для iPhone и iPad, который был запущен в этом месяце, вскоре после того, как Библиотека Конгресса недвусмысленно позволила исключить взлом jailbreaking сотовых телефонов из DMCA. Хотя jailbreaking используется ещё с выхода оригинального iPhone, и миллионы пользователей телефонов на основе Android наслаждаются возможностью запускать любое приложение по своему вкусу (без какого-либо взлома), невероятная популярность и противоречивость iPhone 4 привели к тому, что эта тема не сходит с передовиц газет, причём про новый телефон написали даже New York Times и Wall Street Journal.
Наше интервью как раз посвящено тому, как осуществляется jailbreak, а также какие обходные пути в системе безопасности телефонов при этом используются. Не будем томить вас дальше, приступаем к вопросам и ответам.
Tom’s Hardware. Как обычно, мы начнём с признательности того, что ты потратил время на наши интервью.
Чарли Миллер. Без проблем. Я всегда охотно делюсь техническими деталями с людьми, которым интересно погрузиться в глубины безопасности.
Tom’s Hardware. Какие уязвимости были выявлены у iPhone и iPad совсем недавно?
Чарли Миллер. Есть две уязвимости. Первая касается удалённого выполнения кода в MobileSafari. Ошибка кроется в способе обработки некоторых шрифтов. Эксплойт использует PDF для вывода шрифта, но, как я предполагаю, другие способы тоже вполне возможны. Вторая уязвимость связана с поднятием локальных привилегий в окружении IOKit.
Tom’s Hardware. Как же сайт JailBreakMe использует эти уязвимости, чтобы выполнить взлом “jailbreaking”?
Чарли Миллер. Сначала jailbreakme запускает код внутри браузера MobileSafari с ошибкой шрифта. Впрочем, из-за архитектуры безопасности iOS, браузер MobileSafari работает как пользователь “mobile” в пределах песочницы. Пользователь “mobile” не может выполнять изменения в системной конфигурации; это может делать только администратор “root”. Более того, песочница ограничивает действия, которые может выполнять эксплойт. Например, песочница не позволит MobileSafari отослать SMS.
Собственно, в этот момент подключается второй эксплойт. Вторая уязвимость в IOKit позволяет коду выполняться с привилегиями пользователя root вместо пользователя mobile. Внутри контекста MobileSafari запускается второй эксплойт, который поднимает привилегии исполняемого кода до уровня root. Песочница не предназначена для ограничения процессов с правами root, поэтому в данный момент из неё можно легко “вылезти”. Теперь код может записывать в память ядра, все последние барьеры сняты. Эксплойт затем отменяет систему подписания кода, а также загружает динамические библиотеки, которые уже выполняют всю оставшуюся работу по взлому jailbreaking телефона.
Tom’s Hardware. Итак, песочница побеждена. Что ты можешь сказать насчёт песочницы настольного браузера Google Chrome, чем она отличается от MobileSafari?
Чарли Миллер. Песочницы похожи друг на друга тем, что они ограничивают типы действий, которые может выполнять код. Adobe Reader, кстати, тоже скоро будет работать в песочнице. На практике песочницы заставляют атакующих хакеров писать два эксплойта вместо одного, что и произошло в данном случае. Песочницы обеспечивают только дополнительный уровень защиты, они не снимают саму возможность выполнения эксплойтов.
Tom’s Hardware. Интересно. Помимо всего прочего я заметил, что весь процесс jailbreaking занимает всего несколько минут. Сколько времени из этого уходит на получение доступа root к телефону, чтобы разрешить удалённое выполнение, и сколько времени – на установку самого программного обеспечения, такого как Cydia?
Чарли Миллер. Эксплойт запускает код, поднимает его привилегии до уровня root и отключает систему подписания кода практически мгновенно. Всё дополнительное время выполняется jailbreak.
Что делает Jailbreakme?
Tom’s Hardware. Если бы сайт jailbreakme.com не обеспечивал индикатор выполнения, то все эти операции могли бы выполниться и без ведома пользователя?
Чарли Миллер. Конечно. Сайт jailbreakme не пытается скрыть своих действий. Он выполняет услугу для пользователей. Но вредоносный сайт может запустить этот код в фоне, и вы о нём не узнаете.
Tom’s Hardware. И если бы задание было небольшим, например, отсылка паролей или персональной информации, то оно могло бы выполниться почти мгновенно?
Чарли Миллер. Да. Выполнение принципиальных изменений у телефона, таких как jailbreaking, отнимает время. Но кража информации, то есть контактов, сообщений SMS и писем электронной, почты может произойти меньше, чем за секунду.
Tom’s Hardware. Позволь мне на секунду стать злоумышленником. Как мы можем узнать, что эта уязвимость, которая существовала в предыдущих версиях iOS, не была использована эксплойтом в тех или иных целях? В июне мы получили утечку более 100 000 адресов электронной почты владельцев iPad, включая директоров компаний и правительственных чиновников. Мог ли кто-нибудь выслать одному из них ссылку на вредоносный сайт, который затем устанавливал spyware или другой вредоносный код?
Чарли Миллер. Нет никаких способов узнать, использовалась ли эта уязвимость в прошлом.
Tom’s Hardware. Честно говоря, пугает. Как можно быть уверенным, что ни одно из приложений, доступных через App Store, не установит руткит тем или иным способом? В прошлом уже были прокси-серверы SOCKS, которые просачивались через официальный App Store, и есть случай с приложением Android Wallpaper, которое крадёт личную информацию.
Чарли Миллер. Хм… Теоретически приложение App Store может использовать тот же самый эксплойт с подъёмом привилегий, чтобы выбраться из песочницы и установить вредоносное ПО. Будучи профессиональным аудитором кода и инженером отладки ПО, я могу отметить, что для Apple просто невозможно проверить все приложения, которые проходят через App Store. Конечно, они могут сделать всё возможное, и постараются ограничить API, которые используют приложения, но это можно обойти. Недавно кто-то добавил приложение на Android Marketplace, которое включало локальный подъём привилегий и установку руткита.
Tom’s Hardware. Есть вероятность, что приложение сможет это сделать?
Чарли Миллер. Да, есть вероятность, что приложение сможет это сделать, но, насколько я знаю, пока ни одна программа из App Store этого не сделала.
Tom’s Hardware. Почему бит ARM XN-bit, также известный как NX-bit или XD-bit, не может предотвратить атаки переполнения буфера, подобно упомянутым.
Чарли Миллер. До внедрения Data Execution Prevention (DEP) в случае переполнения буфера процесс передавал выполнение на внедрённый пользователем код (shellcode). Однако DEP это предотвращает, поскольку процессор знает, что внедрённый код – это данные, которые не предполагают выполнение. В качестве обходного пути эксплойты используют так называемое ориентированное на возврат программирование (return oriented programming, ROP). То есть вместо перехода на внедрённый пользователем код, эксплойт переходит на код из реального процесса. В данном случае это код внутри MobileSafari и библиотек, которые требуются браузеру. Повторно используя некоторые участки кода из этого процесса, а эксплойт способен выполнить действия, которые необходимы для выполнения его задач общего назначения.
Tom’s Hardware. Так, если я правильно это понимаю, у iOS используется в том или ином виде DEP, и это предотвращает произвольное внедрение пользовательского кода. Но в качестве обходного пути можно использовать участки легального кода – что-то наподобие письма о шантаже, где слова вырезаны из газеты?
Чарли Миллер. Да, реализация DEP в iOS очень хороша. Аналогия с письмом о шантаже тоже кажется мне идеальной. Вы берёте кусочки существующего кода и склеиваете их вместе так, как вам нужно – но не так, как подразумевал их выполнение разработчик.
Tom’s Hardware. Как насчёт технологий, подобных ASLR и рандомизации стека? Не кажется ли тебе это хорошим решением?
Чарли Миллер. Да, в целом ASLR может победить ориентированное на возврат программирование, случайным образом меняя расположение легального кода, который планирует повторно использовать эксплойт. Если эксплойт не может найти кода, который он может использовать, то и ориентированное на возврат программирование применить не получится. У iPhone нет какой-либо реализации ASLR; все адреса полностью известны атакующему, если вы знаете версию прошивки телефона.
Будущее безопасности смартфонов
Tom’s Hardware. Что всё это означает для будущего безопасности смартфонов? Мы уже привыкли говорить, что MacOS X небезопасна, но угроз оказалось не так много. Просто они было экономически не оправданы. Macs должны достичь рыночной доли 16,6%, чтобы это оправдало себя. Впрочем, Белый дом работает на Mac, да и Google работает на Mac, так что у Mac всё же весьма высокий приоритет.
Но, как мне кажется, с iPhone ситуация хуже. Если я смогу получить контроль над iPhone, то я смогу добраться не только до личной информации, такой как телефонный номер владельца, но я также могу определить, каким мобильным банком пользуется владелец. Есть и некоторые перспективы с точки зрения социальной инженерии, поскольку многие владельцы iPhone используют один и тот же 4-значный PIN-код, например, у iPhone и банковской карты.
Чарли Миллер. Меня постоянно спрашивают о безопасности смартфонов. В истории безопасности iPhone, после выхода второй версии в 2008 году, появился только один публично доступный удалённый эксплойт против iPhone. Собственно, это как раз был эксплойт SMS, который я представлял в прошлом году на BlackHat, и этот эксплойт так и не вышел в дикую среду. Так что хотя телефоны iPhone теоретически уязвимы к атаке, мы просто не видели такие атаки на практике. Как мне казалось, не существует практически никакого риска удалённых атак против заводских iPhone, поскольку довольно сложно найти баг в Safari, выполнить ROP, затем выполнить подъём локальных привилегий или отключить обязательное подписание кода. Но данный эксплойт изменил моё мнение, и сейчас я вижу, что телефоны iPhone подвержены атаке, особенно пока не вышел патч.
Tom’s Hardware. Могут ли конечные пользователи ожидать, что Apple исправит эти уязвимости? Требует ли это много усилий, или достаточно просто изменить пару строчек кода, если проблема известна?
Чарли Миллер. Указанные “дыры” должны быть залатаны быстро, я бы сказал, в течение двух недель. У Apple достаточно сильная мотивация, чтобы исправить “дыры”, причём не столько из-за проблем с безопасностью, сколько из-за того, что компания не хочет, чтобы пользователи выполняли jailbreaking у телефонов. Исправление должно быть относительно простым, да и оно потребует незначительный объём тестирования, поскольку программное обеспечение работает только на десятке разных аппаратных конфигураций.
Tom’s Hardware. Apple всегда говорит об угрозе безопасности после jailbreaking. Но, чтобы прояснить ситуацию, сами уязвимости, которые позволяли выполняться неподписанному коду, всегда существовали на каждом iPhone или iPad, независимо от статуса jailbreak, не так ли?
Чарли Миллер. Да, jailbreaking действительно ослабляет безопасность устройства, обходя архитектуру безопасности, разработанную Apple (подписание кода, запуск приложений под правами пользователя mobile в песочнице и так далее). Но в данном случае эксплойт срабатывает и против полностью пропатченных заводских iPhone, которые не были подвергнуты jailbreaking. Перед нами первый такой пример после выхода iOS 2 – существование удалённого эксплойта. Раньше червь ikea срабатывал только на телефонах с активированным jailbreaking, но данный эксплойт будет сразу же работать на любых телефонах.
Tom’s Hardware. До этого у нас был эксплойт TIFF, который позволял взламывать телефоны iPhone первого поколения, не так ли? Не получили ли мы проблему такого же рода?
Чарли Миллер. Эксплойт TIFF также являлся уязвимостью удалённого выполнения кода в MobileSafari. Разница была в том, что в первые дни iOS (в 2007 году), безопасность iPhone была в младенческом состоянии. Браузер MobileSafari выполнялся с привилегиями root без песочницы на заводских телефонах. Поэтому в данном случае второго эксплойта не требовалось; любая уязвимость удалённого выполнения кода получала на телефоне полные административные права. Вы сами можете видеть, насколько улучшилась безопасность после выхода второй версии ОС.
Tom’s Hardware. Apple пытается объединить основной код между iOS4 и настольной Mac OSX. Хотя между двумя платформами есть очевидные архитектурные различия, можно ли использовать уязвимости iPhone и iPad для разработки эксплойта для настольной ОС?
Чарли Миллер. Как мне кажется, да; на данный момент я как раз проверяю такую возможность.
Tom’s Hardware. Тестировал ли ты Android, BlackBerry, Symbian или Windows Phone 7 за последнее время?
Чарли Миллер. Я также протестировал безопасность Android. Фактически, я написал эксплойт для web-браузера для телефона G1 в тот же день, когда он только вышел. Что касается сравнения с iPhone, то оно несколько проблематично, поскольку компании использовали разные подходы к безопасности телефонов. Но я бы сказал, что приблизительное сравнение сделать можно.
Tom’s Hardware. А каким телефоном ты сам пользуешься?
Чарли Миллер. Обычно я пользуюсь iPhone 3GS, но я утопил его пару дней назад, так что пришлось взять iPhone первого поколения, который я обычно использую для проверки взлома, тестирования ошибок. Как правило, я не предпринимаю каких-то особых мер защиты, при этом я беру этот телефон на такие “враждебные” мероприятия, как Blackhat и DEFCON. Как я уже говорил выше, раньше я считал, что весьма защищён от атак. И сегодня, пока не появится исправление этих уязвимостей, я буду очень аккуратно открывать ссылки в электронной почте и твиттере. Кстати, вы можете следить за мной в твиттере – 0xcharlie.
Tom’s Hardware. А свой MacBook ты по-прежнему везде берёшь?
Чарли Миллер. Да, я по-прежнему использую свой древний MacBook, на котором я побеждал в состязании Pwn2Own уже три раза. Но он уже явно доживает свой срок, поэтому вскоре я переключусь на один из MacBook Pro, которые я выиграл. И это будет грустный день, поскольку я очень привязался к своему компьютеру. Именно на нём я задумывался над тем, смогу ли я написать эксплойт под Mac OS X; я написал на нём Mac Hacker’s Handbook. И я буду по нему скучать.
Tom’s Hardware. Как продвигаются дела с инициативой “No More Free Bugs?”
Чарли Миллер. Весьма неплохо. Как только я начал говорить о No More Free Bugs, Google начала платить мне за уязвимости. И за последний месяц она подняла плату до более $3000 за каждую ошибку. Незадолго до этого Mozilla тоже подняла плату за найденные уязвимости безопасности с $500 до $3000. Я также наблюдаю существенное увеличение обращений к сторонним компаниям, в частности, хотелось бы отметить инициативу TippingPoint Zero Day Initiative (ZDI). Я не слежу за всеми этими событиями, но весьма неплохо, что они есть. Всё, что помогает выпускать программное обеспечение с меньшим количеством багов, мне нравится. Кстати, Microsoft и Apple по-прежнему не платят за уязвимости.
Tom’s Hardware. Твоя компания специализируется на проверке архитектуры, тестах проникновения и проверке исходного кода. Я понимаю смещение интересов, но какое влияние оказала каждая из этих услуг? Данный эксплойт появился просто потому, что Apple не повезло? Или его можно было предотвратить, если смотреть в прошлое?
Чарли Миллер. У компаний есть своя собственная удача, хорошая или плохая. Apple могла бы предотвратить много событий, хотя смотреть в прошлое всегда проще. Первое – путём аудита кода, что позволило бы находить уязвимости и исправлять их до того, как они будут найдены вне Apple. Например, в марте 2010, когда я давал интервью об аудите, я упомянул, что обнаружил 40-60 уязвимостей в Preview, под которые можно было бы написать эксплойты. Если я обнаружил такое количество багов, то в коде наверняка присутствуют многие сотни критических ошибок.
Затем правила песочницы должны быть более жёсткими. Я сомневаюсь, что есть какие-то причины, чтобы позволить web-браузеру взаимодействовать с IOKit так, как это произошло. Браузер должен отображать web-страницы, а не взаимодействовать с драйверами ядра.
Самое забавное в том, что если бы Apple предоставила более открытое устройство, то подобного вообще бы не произошло. Человек, который обнаружил эти баги и написал эксплойты, он не был исследователем безопасности или злым хакером; он был одним из тех пользователей, кто пытался взломать (jailbreak) свой телефон, и использовать его так, как ему хотелось. Если бы Apple позволила устанавливать независимые приложения сторонних разработчиков, то этот человек, вполне возможно, никогда бы не стал искать уязвимости.
Tom’s Hardware. Что ж, он оказал нам неплохую услугу. Он не только потратил своё время, чтобы продемонстрировать нам угрозы безопасности на смартфонах, но также предоставил возможность взломать (jailbreak) iOS4. Спасибо тебе за интервью!
Чарли Миллер. Всегда пожалуйста!
Обновление: ошибка с PDF была исправлена в версии 4.02 прошивки. В итоге Jailbreakme.com уже не работает. Владельцы взломанных (jailbroken) iPhone могут скачать исправление сторонних разработчиков через Cydia. К сожалению, владельцы оригинальных iPhone и iPod Touch не имеют доступа к исправленной версии iOS. Время отклика Apple по поводу данной уязвимости оказалось хорошим – в пределах двух недель.