Когда я беседовал с доктором Миллером, он заверил меня, что на него и других, с кем он работал, никогда не подавали в суд, и даже не угрожали: «На любого можно подать в суд, но мы были очень профессиональны. Это честь и для них, и для нас. Они попросили не показывать некоторые детали в одной из наших будущих презентаций, но мы все равно это сделали, и никто не обратился в суд». Это не значит, что автомобильным компаниям понравилось то, что он делал. Несмотря на то, что доктор Миллер проводит одни из лучших публичных исследований в области взлома автомобилей, его никогда не приглашали рассказать о своих выводах. И однажды во время конференции, когда он попросил автомобильные компании о большей прозрачности в будущем, чтобы помочь автомобильным хакерам найти и искоренить больше ошибок, ответом был отказ. По причинам, которые, к сожалению, имеют тенденцию повторяться снова и снова в разных отраслях, те самые компании, которые могли бы извлечь максимальную выгоду из этих исследований, просто видели в них раздражителей, если не прямых врагов. К счастью, времена изменились, и доктор Миллер работает на Uber. Компания считает, что он поможет лучше защитить будущие автономные беспилотные автомобили.
Я впервые встретил доктора Миллера почти десять лет назад, когда он пытался стать высокооплачиваемым профессиональным искателем ошибок. Он получил степень бакалавра математики в Северо-Восточном университете штата Миссури (ныне Университет штата Трумэн) и докторскую степень по математике в Университете Нотр-Дам. Вы можете встретить доктора Миллера на прогулке в солнцезащитных очках в стиле Элтона Джона, а при знакомстве он непременно пошутит и будет забавно жестикулировать. Если вы думали о том, как может выглядеть профессионал по угону автомобилей, кандидат наук, вы вряд ли представляли себе Чарли Миллера.
До своей нынешней работы он пять лет трудился в Агентстве национальной безопасности (https://www.nsa.gov/), три года в компании Twitter, а еще несколько лет в консалтинговых и других фирмах. Опыт доктора Миллера и любовь к математике заставили его заинтересоваться криптографией, а сочетание этих двух факторов сделало его интересным для АНБ. Для тех, кто не знает, АНБ – ведущее агентство США по шифрованию/дешифрованию, а возможно, даже и мировой лидер в этой области. Залы АНБ полны самых ярких криптографов, и доктор Миллер оказался среди них.
Я спросил Чарли, как он стал многопрофильным специалистом в сфере ИБ и профессиональным автомобильным хакером, и вот что он сказал: «До АНБ я никогда не думал, что смогу этим заниматься [информационной безопасностью]. Я ее не изучал. АНБ наняло меня криптографом, и я думал, что это моя специальность. Предполагается, что в АНБ вы будете каждые полгода переезжать в разные офисы (т. е. отделы), чтобы ознакомиться с широким спектром технологий, которые интересуют АНБ. Они думали, что я выберу разные темы, но я пошел на хитрость, чтобы они обучили меня только информационной безопасности, а не криптографии. Другие темы ИБ казались намного интереснее, чем криптографические. Я обманывал своих руководителей, думая, что каждый офис – это совершенно новая тема, но вместо этого они были сосредоточены на нескольких более узких сферах ИБ. Через три года я столкнулся со многими классными штуками. Мне повезло, что я оказался в месте, где должен был учиться и получать за это деньги».
Я спросил доктора Миллера, как он заинтересовался взломом машин. Он сказал: «Я долгое время взламывал телефоны и компьютеры. Но демонстрация этого не вызывала никакого беспокойства зрителей. Однако, когда рулевое колесо и тормоз стали работать сами по себе, люди заволновались. Это был хак, который мне не пришлось рекламировать или продавать. Он продвигал сам себя и был доступен обычным людям. Мы не были первыми, кто взламывал машины. Мы построили свою работу на том, что обнаружили наши предшественники, чтобы использовать пределы того, куда это может нас привести».
На раннем этапе карьеры доктор Миллер сделал себе имя, выиграв не один хакерский конкурс Pwn2Own всего за несколько минут. Pwn2Own (https://en.wikipedia.org/wiki/Pwn2Own) – это конференция в Ванкувере, Канада. Его целью было предоставление денежных средств и других призов всем, кто мог взломать различные операционные системы и программное обеспечение, ошибки которых ранее не были публично известны. Каждый успешно продемонстрированный хак был новым «нулевым днем», который вожделен в хакерском мире и больше всего беспокоит вендоров.
На протяжении нескольких лет самым ярким событием конкурса Pwn2Own было участие доктора Миллера, который в течение менее чем нескольких минут использовал свои навыки, чтобы уйти с одним или несколькими крупными призами. Он делал это столько раз, что в конце концов конкурс стал известен как мероприятие, где каждый продукт будет взломан в течение пары минут после того, как доктор Миллер примется за работу. Несколько лет имя доктора Миллера было синонимом взлома автомобилей. Именно из-за его успеха во взломе некоторых из самых популярных операционных систем, браузеров и устройств люди обратили больше внимания, когда он начал говорить о взломе автомобилей. Его репутация опережала его. Не было сомнений, что он понимает, о чем говорит, и добьется успеха.
Секрет раннего успешного взлома доктора Миллера был связан с фаззингом. Существует множество способов поиска программных ошибок. Вы можете вручную испытать программное обеспечение путем анализа всей деятельности и вручную изменять входные сигналы для того, чтобы увидеть, к чему это приведет. Вы можете статически анализировать код, используя для проверки исходного кода ПО (или вручную просматривая его), которое ищет предопределенные ошибки кодирования. Или вы можете случайно наткнуться на ошибку при использовании программы в обычном режиме. На протяжении десятилетий эти три традиционных метода были способом обнаружения наиболее эксплуатируемых ошибок.
В конце 1990-х фаззинг стал невероятным источником ошибок, и любая программа разработчика программного обеспечения была обречена на несколько уязвимостей нулевого дня, если разработчики не тестировали собственные программы, прежде чем выпустить их. При тестировании другая программа (фаззер) автоматизирует процесс введения всех видов различных входных данных, обычно не ожидаемых программистом или языком программирования (например, очень длинных, содержащих случайные управляющие символы, «зарезервированные слова кодирования» и т. д.), в активную версию целевой программы, чтобы вызвать ошибку. Каждая найденная ошибка после этого проверяется программой фазз-испытания или вручную человеком, для того чтобы увидеть, можно ли использовать условие ошибки для того, чтобы эксплуатировать программу или основную операционную систему.
Вот как Доктор Миллер описывает свои успехи в фаззинге: «Я узнал о фаззинге в АНБ. Он понравился мне, потому что находил ошибки быстро и очень легко. Я запускал программу, шел смотреть телевизор, потом засыпал, просыпался и смотрел на результаты. Примерно в 2010 году на конференции Blackhat (http://blackhat.com/) я использовал фаззинг на сцене против некоторых конкурентов, чтобы найти ошибки. Они при этом использовали статический анализатор. Мне потребовалось несколько минут, чтобы фаззинг сработал, а через час я выиграл».
Примечание. Если вы заинтересованы в использовании программного обеспечения для фаззинга, доступно множество бесплатных и коммерческих продуктов. Microsoft предлагает достойный фаззинг бесплатно по адресу: https://www.microsoft.com/en-us/springfield/.
Я спросил доктора Миллера, почему его первые исследования были направлены в основном на продукты Apple. Он сказал: «Тогда у Apple было немного средств информационной безопасности, особенно защиты памяти в коде. И они не проводили собственные тесты. Я сделал это для них и нашел много ошибок, которые мог бы использовать в Pwn2Own. Microsoft и Microsoft Windows провели тестовый фаззинг, и их программы теперь имеют встроенную защиту памяти. Я не был нацелен на Apple, просто их ошибки было очень легко найти, а мне нравится легкий взлом».
В 2007 году он стал человеком, удаленно взломавшим iPhone и телефон на платформе Android в тот же день, когда он вышел (в 2008 году). Позже в этом году доктор Миллер нашел уязвимость нулевого дня в браузере Safari MacBook Air и выиграл 10 000 долларов. В 2009 и 2010 годах он снова взломал браузер Safari от Apple и продолжил успешно взламывать iPhone. В 2011 году он обнаружил дыры в безопасности iOS на iPad и iPhone. По сути, он показал, как приложение Apple может злонамеренно украсть информацию или иным образом взломать владельцев устройств Apple. Он создал демонстрационную программу, которую разместил в Apple App Store.
Работа доктора Миллера по поиску ошибок вызвала у Apple гнев. Они обвинили его в нарушении условий соглашения с разработчиком (что, в сущности, было правдой) и отняли у него право разрабатывать и публиковать их ПО. Он рассказал мне об этом инциденте: «Они сказали, что забирают мой ID разработчика Apple на год. Когда я подал заявку на восстановление, его не вернули. У меня до сих пор нет ID разработчика Apple». Многие люди, наблюдавшие за этим, полагали, что Apple усвоила печальный урок и примет доктора Миллера обратно.
Когда я впервые встретил Чарли, он отчаянно пытался получить хорошо оплачиваемую работу, связанную с поиском ошибок. В то время очень немногие люди зарабатывали на жизнь таким образом. Большинство людей, как доктор Миллер, вообще не получали зарплату. Было очень мало программ Bug bounty, предлагаемых вендорами публично, как сегодня. Единственные, кто получал большие деньги за новые уязвимости нулевого дня, были злонамеренные хакеры, часто спонсируемые плохими парнями и преступными группами. Иногда хакер «в белой шляпе» мог продать найденные ошибки законным компаниям, а затем перепродать их по самой высокой цене вендорам, чтобы они могли изучить ошибку и исправить ее. Это продолжается и сегодня.