Петербургский программист Андрей Леонов получил рекордный гонорар от Facebook: компания выплатила ему 40 тысяч долларов за то, что он обнаружил уязвимость соцсети при обработке изображений.
Леонов рассказал «Бумаге», как смог заработать на невнимательности разработчиков Facebook, чем грозила ошибка в соцсети и как программисты в России и за рубежом за деньги ищут слабые места в программах.
Андрей Леонов
Как найти уязвимость в Facebook и почему это не хакерство
Я работаю в отделе безопасности IT-компании SEMrush, которая разрабатывает инструменты для онлайн-маркетинга. И в свободное время занимаюсь поиском уязвимостей на сайтах, у которых есть открытая программа поощрения исследований.
В чем заключается суть уязвимости? На Facebook есть страница, где можно расшарить новость: написать содержание поста, прикрепить фотографию. Часть скрипта отвечает за обработку изображения, то есть запрашивает его с одного сервера и перекачивает на сервер Facebook. Так вот эта часть была построена с помощью уязвимой библиотеки ImageMagick — это очень известная и распространенная библиотека, которая позволяет производить некие манипуляции с изображением, в частности, менять их размер и формат. В конце апреля прошлого года несколько исследователей безопасности обнаружили, что она уязвима к нескольким типам уязвимости, и к началу мая ImageMagick выпустили исправления.
Когда я наткнулся на эту страницу, то подумал, что раз тут происходит конвертация, то, наверное, можно ее проверить. Но, честно говоря, последнее, о чем я думал, так это о том, что Facebook где-то забыл обновить библиотеку с уязвимой версии на неуязвимую. Ты этого не ожидаешь, но, с другой стороны, в такой большой инфраструктуре, как Facebook, такое возможно. Представьте: у них 10 000 серверов и, допустим, на двадцати они забыли обновить.
Для пользователя всё работало. Но при определенных воздействиях можно было исполнить код на серверах компании Facebook, то есть получить доступ к данным, которые там хранятся. Какие там были данные, я, естественно, не знаю, потому что, по правилам участия в программе Facebook и других компаний, исследователь не имеет права лезть дальше. Он находит какую-то точку входа — и на ней должен остановиться, потому что иначе в лучшем случае лишится выплаты, в худшем — к нему применят все возможные меры как к хакеру уже в плохом смысле слова.
Изображение из блога Андрея Леонова
От чего зависит сумма гонорара
Какие-то репутационные выгоды, естественно, тут есть, потому что, когда ты находишь что-то крупное, в данной тусовке о тебе узнают. Но я не создал никакого академического знания, а просто нашел место, где забыли обновить программу. Тот же Реджинальдо Сильве (бразилец, который получил от Facebook предыдущую рекордную сумму в 33,5 тысячи долларов — прим. «Бумаги») свел воедино несколько малозначимых факторов, и у него была технически сложная вещь.
До момента выплаты прошло около 2,5 недель, но вообще это зависит от контекста. Например, какая-то уязвимость может требовать длительной оценки степени той угрозы, которую она в себе несла. Facebook подтвердил, что данная уязвимость не была проэксплуатирована ни разу, то есть никто ей не воспользовался. Но если бы ее кто-то применил, тогда, я уверен, они вначале бы провели доскональное внутреннее расследование.
Сумма зависит от нескольких факторов. Во-первых, Facebook, как и Google, в принципе очень щедр на выплаты. За то, за что в среднем по рынку платят от 200 до 1000 долларов, они платят от 5 до 10 тысяч. Второй аспект — это классификация самих уязвимостей. Удаленное исполнение кода — это максимальный рейтинг в классификации, потому что я фактически могу делать всё то же, что и хозяин сервера. Дальше, есть различия в угрозе: одно дело, если это сервер, на котором нет ничего ценного, и другое, если на нем хранится база всех клиентов. Я допускаю, что в моем случае это давало доступ к какой-то важной информации, но не уверен, так как не имел права смотреть.
Как компании платят исследователям в России
и на Западе
В 2011 году Facebook был одной из первых компаний, которые публично объявили, что они готовы взаимодействовать с исследователями безопасности и выплачивать им деньги. Кроме них так сделали Google и Mozilla. Где-то к 2013-му так стали поступать многие. Существуют также приватные программы: если компания не хочет объявлять о своей программе публично или не хочет, чтобы доступ к ней имело большое число людей, потому что это огромные накладные расходы. Допустим, у меня есть сайт, я позвал десять человек, которые нашли десять уязвимостей. Я могу исправить эти проблемы комплексно сразу везде — так, что следующие исследователи их уже не найдут. А если я позову сразу 10 тысяч человек, то они найдут много чего и это будет очень дорого.
При этом надо понимать, что за счет больших выплат Facebook и его новых функций, которые часто выходят, много людей следит за ним и проверяет его. Сообщество таких людей, как я, — это, наверное, 40–50 тысяч человек во всем мире. Если хотя бы половина регулярно смотрит Facebook, то вероятность, что я там вообще что-то найду, 1:25 000. Кроме того, нужно еще быть первым, потом что деньги получает только первый.
Западных компаний больше, но все крупные российские IT-компании тоже в этом участвуют: «Яндекс», Mail.ru, «ВКонтакте», «Одноклассники». Выплаты разнятся, но на рынке находятся посередине: не занижают и не завышают. Все понимают, что, какую бы команду ты в свою компанию ни нанял, полностью избежать того, что у тебя где-то что-то вылезет, невозможно.