Как говорят философы, лучший код — код, которого нет или который не нужно поддерживать. Эта мудрость объясняет, почему некоторые выдающиеся разработчики не пишут много нового кода, а наоборот — ставят целью поиск и удаление лишнего.
К ним относится хакер-самоучка Михал Залевски (Michal Zalewski), который входит в список самых влиятельных представителей индустрии ИБ. Он построил успешную карьеру от технического специалиста польского интернет-провайдера до директора по информационной безопасности Google, а в своей недавней книге даёт практические советы, как подготовиться к наступающему концу света. В общем, это разносторонняя и талантливая личность. На рисунке из Твиттера (вверху) Михал изображён с женой и собакой.
Михал Залевски родился 19 января 1981 года. В конце 90-х паренёк под ником lcamtuf стал активным участником списка почтовой рассылки Bugtraq — крупнейшего мирового сообщества по инфобезу, где заработал авторитет благодаря интересным эксплоитам.
В 19 лет он устроился техническим специалистом к польскому интернет-провайдеру TP Internet (Orange PL), а через год переехал в США на должность аналитика по безопасности в BindView (куплена Symantec). Потом была работа в T-Mobile Polska, должность директора по безопасности всей корпорации T-Mobile и переход в Google в 2007 году (там он поднимался по карьерной лестнице параллельно с ростом самой компании).
Михал заработал авторитет благодаря обнародованию серьёзных уязвимостей в браузерах Internet Explorer и Firefox. Разглашение багов привело к укреплению всех браузеров и повлияло на разработку браузера Chrome с принципиально новым механизмом изоляции процессов.
Если посмотреть сейчас на историю IT, то создаётся впечатление, что до Михала были дырявые браузеры с кучей уязвимостей, и он чуть ли не в одиночку изменил эту отрасль.
▍ Эксплоиты и исследования
Вот некоторые важные уязвимости, которые обнаружил lcamtuf за свою карьеру, а также лучшие его работы в области информационной безопасности:
- Первая фундаментальная исследовательская работа Залевски вышла в 2001 году. Это
математическое и геометрическое описание ISN-генераторов чисел в различных операционных системах и аппаратных устройствах для оценки случайности генерации номеров для TCP-пакетов с целью правдоподобного спуфинга и внедрения сторонних пакетов (продолжение, предупреждение CERT). Уязвимые алгоритмы генерируют в числовом 3D-пространстве явно различимые паттерны:
Наверное, никто раньше не демонстрировал слабости алгоритмов в виде 3D-графики, где различимость паттернов означает недетерминизм выдачи. - 2001 год. Потенциальные уязвимости в обработке сигналов при использовании стандартных хэндлеров типа
access(2)
,chdir(2)
,chmod(2)
,close(2)
,fork(2)
,getpid(2)
,open(2)
,pause(2)
,read(2)
,write(2)
и проч. Имеется в виду шаблонная эксплуатация злоумышленником некорректных кодовых конфигураций с хэндлерами, которые вызывают состояние гонки (signal race) и встречаются повсеместно, в том числе в ядре Linux и других опенсорсных программах. - 2001 год. Обнаружил уязвимость в протоколе SSH, которую через два года использовала Тринити в фильме «Матрица. Перезагрузка» (2003).
- 2002 год. Статья об опасности утилит типа tmpwatch.
- 2003 год. Переполнение буфера в sendmail (CA-2003-12).
- 2004 год. Объявил о запуске антиспамерского сервиса eProvisia LLC, который обеспечивает 100%-ю защиту от спама благодаря ручной фильтрации писем. На шутку купились многие компьютерные СМИ, включая ZDNet, Yahoo, Slashdot и др.
- 2005 год. Переполнение буфера Internet Explorer при использовании соответствующего файла JPEG (VU#965206).
- 2007 год. Уязвимость в схеме отображения закэшированных ресурсов WYCIWYG (What You Cache Is What You Get, «что кэшируешь, то и получаешь», по аналогии с WYCIWYG) в браузере Firefox. В те времена браузеры на движке Gecko использовали проприетарную схему загрузки ресурсов из кэша с отображением в адресной строке URI ресурса типа
wyciwyg://
.
Залевски продемонстрировал возможность стороннего доступа к кэшированным документам. То есть с одного сайта (сервера) можно было получать доступ к документам, которые записал другой сайт без надлежащей проверки принадлежности их домену.
Последствия несанкционированного доступа к кэшу понятны: злоумышленник может подменить его, внедрить произвольный контент и собственный код, всё это с оригинальным SSL-сертификатом.
На самом деле подобное отравление кэша — это не просто какой-то глюк, а фундаментальная слабость старых браузеров, которые не изолировали отдельные процессы и файлы разных сайтов друг от друга, а хранили всё в одном месте. Сейчас ситуация начинает меняться. Для сравнения, тот же Firefox постепенно внедряет state partitioning, то есть раздельное хранение ресурсов для разных доменов.
Также Михалу Залевски принадлежит пробинг истории посещённых страниц в браузере пользователя через трюки с алгеброй CSS и полное описание всех векторов веб-трекинга через браузеры.
Кстати, по современным тарифам bug bounty, Михалу даже не нужно строить корпоративную карьеру, чтобы заработать миллионы долларов, потому что настолько серьёзные 0day-уязвимости в браузерах сейчас очень хорошо оплачиваются. Официальное вознаграждение за функциональный эксплоит Chrome доходит до $40 000, а на чёрном рынке премиальные 0day можно продать гораздо дороже через специализированных брокеров-перепродавцов, таких как Zerodium (платит до $2,5 млн за эксплоит).
Причём современный рынок bug bounty тоже во многом сформировал именно Залевски, который в 2010 году запустил программу выплаты вознаграждений Google Vulnerability Reward Program. Это была первая подобная программа в мире — и она кардинально изменила мировой рынок эксплоитов, превратив хакинг в уважаемую и высокооплачиваемую профессию. Собственно, одним этим фактом он уже вписал своё имя в историю.
После прихода в Google парень не утратил прежние навыки и продолжил исследовательскую работу, сообщая о новых критических багах в Mac OS X и помогая Google выпускать более защищённые продукты. В Google он управлял командой из 100 специалистов по безопасности, а в 2018 году перешёл на работу в Snap, где под его началом работает уже 200 специалистов, которые обеспечивают безопасность платформы, приватность пользователей и занимаются поиском уязвимостей.
В общей сложности за всё время lcamtuf нашёл более сотни критических и серьёзных уязвимостей в браузерах, операционных системах и опенсорсных программах, таких как OpenSSH, GnuPG, PuTTY и многих других. Является лауреатом Lifetime Achievement Pwnie Award в виде специального готического пони.
▍ Программы и книги
Михал Залевски разработал несколько полезных инструментов для тестирования систем на предмет безопасности. Это десятки маленьких фаззеров и других утилит для тестирования и поиска уязвимостей. Вот самые известные из них, опубликованные в открытом доступе:
- Pof v3 — пассивный фингерпринтер трафика, впервые разработанный в 2000 году и перевыпущенный в 2014-м. Инструмент позволяет распознавать ОС и установленный софт, не вмешиваясь в канал и не делая никаких запросов, что особенно полезно в ситуации, когда активность Nmap не разрешается. Измерение аптайма, сетевой задержки, расстояний между узлами (топология сети), языковых настроек и проч. В той или иной форме ранние версии poif используются во многих опенсорсных программах, включая pfsense, Ettercap, PRADS, amavisd, milter, postgrey, fwknop, Satori и файрвол OpenBSD, а также в десятках коммерческих инструментов ИБ;
Сниппет выдачи - Ratproxy (2007) — полуавтоматический прокси для пассивного аудита веб-приложений и выявления потенциальных проблем веб-безопасности;
- American Fuzzy Lop (2014) — фаззер для поиска уязвимостей (afl-fuzz);
Например, в 2015 году Михал просто для демонстрации взял известную СУБД SQLite и за 30 минут с помощью своего фаззера обнаружил там 22 уязвимости. - Skipfish — высокопроизводительный веб-сканер (до 2000 запросов в секунду), который позже стал одним из компонентов;
- Google Cloud Scanner и другие инструменты.
Кроме программ, Залевски написал несколько довольно популярных книг по инфобезу:
- «Тишина в проводах» (Silence on the Wire, 2005) — анализ пассивных сигналов и разведка в компьютерной безопасности;
- «Спутанная сеть» (The Tangled Web, 2011) — подводные камни в безопасности браузеров.
У второй книги 2438 скачиваний на рутрекере, хотя она не переведена на русский.
В новой книжке «Практика Судного дня. Пользовательское руководство к Концу света» автор отошёл от технических вопросов и рассуждает о более высокоуровневом управлении рисками в повседневной жизни. Там разбираются практические вопросы типа создания финансовой подушки (глава 6), выбора актуальной профессии (глава 8), прокачивания физической формы (11), создания сообщества (12), обеспечения водой, выбора продуктов питания, инструментов, аварийной связи, вопросы активной самообороны и многое другое. Любопытно, что книга вышла в январе 2022 года.
Пример Михала Залевски демонстрирует, что можно стать выдающимся разработчиком, практически не имея примеров собственно «разработки». Написанного кода у него не так много, а главные достижения — не новые программы, а эксплоиты. То есть как бы не создание чего-то нового, а поиск уязвимостей в существующем мире, что само собой приводит к перерождению мира в лучшем виде. На языке химических аналогий, Михал работает не как действующее вещество в реакции (креативная сила разработки), а скорее как катализатор, который запускает эту реакцию в окружающем мире. Наверное, так действуют хакеры.
Ещё любопытный факт: у Залевски до сих пор нет никакого формального образования в области информатики (высшего или какого-либо другого), он не закончил ни одного курса и не получал никаких сертификатов.
▍ Офтоп из личного блога
- Семейные фото (жена, ребёнок, собака).
- Советы по фотографии для гиков (с интерактивными примерами).
- Коллекция денежных банкнот из стран с гиперинфляцией.
Статья на Дзене