«Наш отдел существовал для того, чтобы все знали, какие в Checkpoint могучие специалисты по безопасности».

Говорим с Артёмом Скробовым, кибербезопасником и компайлер-инженером, про опыт работы в ARM, Huawei и Sony, про хакинг, компиляторы (а как же!) и исследования безопасности.

Артём Скробов начал программировать в 6 лет, успел поработать в Великобритании, Дании и Израиле и набрать больше миллиона просмотров блога на Хабре. Сейчас — занимается компиляторами в Sony.

Разузнали, зачем исследователю в сфере кибербезопасности сверхдисциплина, а компайлер-инженеру — сверхконцентрация, и ответили на вопросы “из зала” (они в конце текста). Делимся самым интересным!

Если хочешь поиграть — каждый раз нужно писать программу с нуля, неплохой челлендж.

Челлендж для дошкольника

Программирование заинтересовало меня еще до школы. Мой отец чинил электронику и однажды принёс домой советский клон Sinclair Spectrum со встроенным Basic. У компьютера не было дисковода и постоянной памяти, так что программы стирались каждый раз, когда мы его выключали. Если хочешь поиграть — каждый раз нужно писать программу с нуля, неплохой челлендж. Я начал читать книги по Basic и постепенно научился писать простые игрушки вроде угадывания числа.

Интервью подготовила команда проекта Veer – это беруши с регулировкой громкости для тех, кто решает сложные задачи головой. Veer помогают концентрироваться и работать продуктивно, даже если вокруг шумно.

Про боль и страдания хардварного производства читайте в нашем Телеграм-канале 

Компьютерные науки

После школы был матмех в Уральском университете по “компьютерным наукам”. Там было очень много математики и мало компьютеров. Программировали, в основном, мелом на доске, а  написать что-нибудь на компьютере можно было всего пару раз в неделю. 

Тогда я работал в СКБ Контур. У них был один интересный продукт – “Контур Предприятие”. Интересен он был тем, что внутри него поддерживалось программирование на Visual Basic. Вот у 1С, например, внутри есть собственный язык, чтобы программировать отчёты. В нашем продукте было сделано то же самое,  но с Visual Basic в качестве этого языка. Я кастомизировал продукт под запросы больших клиентов.

После университета я поступил в магистратуру в Технион – Израильский технологический институт. У меня есть задокументированные еврейские корни, так что уехать в Израиль было проще, а жить там можно было сколько угодно.

После магистратуры я получил интересное предложение из Дании и улетел работать туда.

Дания и UK

“Не для этого я заканчивал Технион”

В Дании я работал исследователем безопасности. Фирма продавала отчёты о том, что и где не так функционирует. Начальник решил, что выгоднее по дешевке покупать отчёты у других источников, а нам — проверять и переписывать их более профессиональным языком. Получается, исследований в нашей работе было крайне мало. Я подумал, что не для этого заканчивал Технион, и через полгода уволился.

Британия и вселенная компиляторов

Следующей точкой на карте, куда я отправился, стала Британия. Я устроился в ARM на должность компайлер-инженера. Особенность рабочей визы этой страны в том, что ты не имеешь права менять работу, поэтому все 4 года, что жил в Британии, я проработал в ARM над компиляторами. 

Процессоры с архитектурой ARM используются во многих портативных и мобильных устройствах. Без них не было бы мобильных телефонов, интернета вещей, холодильников и микроволновок. Даже жестких дисков не было бы, потому что, оказывается, на них тоже стоят процессоры ARM. Очень немногие компании делают что-то подобное. Самое интересное, что ARM продаёт свои наработки различным фирмам, которые потом между собой конкурируют. Все они добавляют к разработке какие-то свои свойства, условно говоря, секретный соус, а потом соревнуются — у кого этот соус получился более интересным.

У ARM есть три разных компилятора: один на основе GCC, один собственный, написанный с нуля, и ещё один, который с моим участием писали на основе LLVM. Меня нанимали как раз в то время, когда был создан третий отдел, ответственный за компилятор на LLVM. Только когда я пришел, оказалось, что работы для моего отдела ещё нет. Они ждали какого-то разрешения от юридического отдела, чтобы можно было начать публиковать код. В итоге мне поручили писать на “питоне” их внутреннюю систему, что-то типа Continuous Integration & testing. Я никогда в жизни не видел “питона”! Сказали: отлично, научишься.

Большой куш

Когда с юридическими формальностями разобрались, я, наконец, начал заниматься их собственным компилятором, а также новым, на LLVM. Этим проектом можно было заниматься бесконечно, но в 2016 году все акции ARM выкупила японская компания Softbank, причём, в полтора раза дороже рыночной цены.  До этого в ARM премии нам платили акциями, поэтому я получил хороший бонус в размере годовой зарплаты. У меня оказалось много свободных денег, я как раз женился и у меня по-прежнему было право постоянного проживания в Израиле. Так что я решил купить в Израиле дом и переехать.

Израиль 2.0 и Huawei 

В израильском отделении ARM не было свободных вакансий, так что я стал искать компанию, где были бы нужны программисты компиляторов. Вскоре я узнал, что в израильском отделении Huawei как раз пишут собственный компилятор для внутренней архитектуры, и подался туда. Оказывается, Huawei — один из мировых лидеров по производству базовых станций для сотовой связи. 

Базовые станции — это огромные шкафы, набитые электроникой, которую Huawei делает сама. Там их собственные процессоры с их собственными программами. Каждый раз, когда компания делает новые устройства, она может поменять процессор и перекомпилировать все программы. Процессоры Huawei используются в вышках Tele2, МТС и других операторов.

Работая в Huawei, я пошёл в магистратуру по лингвистике. Правда, прогадал с логистикой: Huawei находился не в Тель-Авиве, и дорога между университетом и работой съедала кучу времени. Я стал искать работу поближе и попал в Checkpoint.

Могучие специалисты по безопасности в Checkpoint

Сheckpoint выпускают антивирусы и аппаратные коробки Firewall. В этой компании я занимал должность Security Researcher. Наш отдел существовал для того, чтобы все знали, какие в Checkpoint могучие специалисты по безопасности. Мы были чем-то вроде пиар-службы и искали в известных продуктах уязвимости, чтобы потом написать об этом или рассказать на конференции. 

Например, я нашёл способ обрушить Инстаграм. Мы искали популярные приложения для андроида, пользующиеся очень старыми версиями библиотек, в которых есть известные уязвимости. Обнаружили, что приложение Инстаграм в то время пользовалось библиотекой ffmpeg четырехлетней давности. Уязвимости этой библиотеки были известны, так что, вполне можно было обрушить приложение. Кончилось всё, правда, прозаично: мы написали Инстаграму и они всё починили.

Если ты работаешь в кибербезопасности, важно быть на острие технологий, быть в курсе, что хакеры делают буквально в этом месяце. Старые уязвимости постоянно закрываются, но при этом становятся известны новые. В Checkpoint есть целый отдел, который занимается не столько исследованием вредоносных программ, сколько исследованием людей, которые эти программы пишут.

Не доверяйте расширениям для браузера

Мы спросили Артёма про правила безопасности для рядового пользователя, и кроме советов вроде хранить пароли в специальном менеджере вместо гуглдоков, мы узнали один неочевидный: не пользоваться расширениями для браузера. Даже пароли для менеджера паролей лучше перетаскивать через буфер обмена, не прибегая к автозаполняющему расширению. Например, на Хабре недавно была история про одно популярное расширение в Хроме, которое перекупили какие-то нечистоплотные люди и добавили в него нежелательную функциональность. Такие расширения могут залезать в содержимое ваших документов, что-нибудь там читать и отправлять эти данные разработчикам.

Зачем исследователю любить процесс, а не результат

Для того чтобы найти уязвимость, секьюрити-ресёчер использует реверс-инжиниринг — переводит машинный код в что-то, понятное человеку. Это то же самое, что делают компиляторы, только наоборот. 

Продукт моей работы — завершённое и опубликованное исследование. Это история не про быстрые результаты и требует больше терпения, чем обычная разработка. Вот как выглядел процесс у нас: 

  1. Одно исследование и подготовка публикации могло занимать до 4 месяцев. Мы всем отделом генерили идеи, куда будем “копать”. Смотрели на свеже-раскрытые проблемы в безопасности популярных продуктов и пробовали искать подобные.
  2. Месяц могли потратить на то, чтобы подтвердить гипотезу. Дальше решали, получится ли развить идею? Нашлось ли за ней что-то интересное? Часто через месяц выяснялось, что развивать идею некуда и надо бросать. То есть очень много времени уходило на поиск уязвимостей там, где их нет.
  3. Когда уязвимость всё же находилась, бывало, что вышестоящие отделы не разрешали публиковать материал. Либо будет слишком громкий скандал, либо, наоборот, — скучно. 

В общем, тут нужно любить процесс. Мне интересны были задачи, которыми мы занимались. Например, есть популярный инструмент IDA — дизассемблер, которым пользуются для реверс-инжиниринга. В нём поддерживается пара десятков процессоров, но мы решили исследовать код на процессоре, который там не поддерживался. Соответственно, я должен был дописать в него поддержку этого процессора, и это было круто.

Моей любви хватило на 2 года: удалось найти буквально пару классных “дырок” в безопасности, правда ещё одна застряла на публикации. 

Решил вернуться к компиляторами, и недавно устроился в Sony. Следующее поколение своих процессоров Sony собирается использовать в гораздо более широком наборе устройств, так что им нужно сделать компилятор, который подойдет для более широкого круга задач. Для этого меня и позвали.

Решил вернуться к компиляторами, и недавно устроился в Sony. Следующее поколение своих процессоров Sony собирается использовать в гораздо более широком наборе устройств, так что им нужно сделать компилятор, который подойдет для более широкого круга задач. Для этого меня и позвали.

Суперспособность компайлер-инженера – концентрация

У отдела компиляторов три основные задачи:

1. Работать над тем, чтобы компилятор поддерживал фишки процессора. Новые процессоры создаются, чтобы поддерживать какие-то новые возможности. Соответственно, нужно сделать компилятор, который эти возможности сможет использовать.

2. Сделать код быстрым и эффективным. Есть стандартные наборы бенчмарков для компиляторов, и довольно большую часть времени мы смотрим на скомпилированный код бенчмарков, и смотрим, что там можно ускорить.

3. Отслеживать, правильно ли работает компилятор. Нужно быть уверенными, что во время оптимизации компилятор не вносит в код ошибки.

В ARM, Huawei и Sony самым тяжёлым было сосредоточиться в шумном офисе

Основную часть рабочего времени я пишу алгоритм для программы, которая переводит код с языка программирования на машинный. Алгоритм довольно быстро становится очень сложным, его нужно постоянно вычитывать и смотреть, какой код компилятор генерирует, насколько он адекватен.

Очень тяжело держать в голове картину того, как код должен работать, когда рядом кто-то ходит и обсуждает, что он приготовил в прошлые выходные.

Для моей первой работы, в СКБ контур, концентрации не требовалось вообще. Работа там была более-менее механическая: я просто адаптировал отчеты и формы под требования конкретного заказчика. Если брать мой опыт в ARM, Huawei и Sony, где я имел дело со сложными алгоритмами, то самым тяжёлым в рабочем процессе для меня всегда было сосредоточиться в шумном офисе. Я никогда особо не отвлекался на серфинг по Фейсбуку, скажем, а вот разговоры окружающих всегда выбивают меня из колеи.

Японские колокольчики vs строительные наушники

Я экспериментировал с разными техническими средствами. Пробовал пенные беруши и шумоизолирующие наушники, как у строителей. Оказалось, что эти наушники настраивают так, чтобы они пропускали голос, потому что строителям очень важно друг друга слышать. Получается, они заглушали то, что мне не мешает, а вот разговоры пропускали свободно. Наушники с активным шумоподавлением тоже, кстати, не работают против голоса.

Ещё я пробовал всякие специальные шумы для концентрации: записи дождя, каких-то японских колокольчиков. Планировалось, что они будут перекрывать шум вокруг, но нет.

Мы отправляли Артёму на тест наши беруши, поэтому не можем не спросить, как ему Veer.

Неплохой эффект был от берушей Veer, которые я пару недель успел поносить в офисе до того, как мы перешли на удалёнку. Я мог находиться в них по 3-4 часа, в отличие от обычных берушей, которые довольно быстро начинали доставлять дискомфорт. В комплекте у Veer есть несколько анатомических насадок разных размеров. Мне подошла самая маленькая.

Конечно, полностью заглушить людей, которые громко общаются совсем рядом с тобой, очень сложно. Зато Veer эффективно глушат фоновые офисные шумы и разговоры.

Что дальше?

Будет любопытно, если однажды мой карьерный путь пройдёт через Google. В Дании я как-то встретился с одним товарищем с Хабра, который работает там над компилятором JavaScript внутри браузера Chrome. Тогда я узнал, что у Гугла есть отделение, работающее над компилятором, и оно расположено в Дании. Мой интерес поработать в Гугл связан с тем, что так результаты твоего труда увидят миллионы людей — все, кто пользуется Chrome. Результаты моей работы в ARM или, например, в Huawei, до обычных людей не доходили. 

Также было бы интересно создать какой-то B2C продукт. Например, какой-нибудь открытый и бесплатный аналог IDA. Все пользуются IDA и все от неё плюются, потому что она написана не людьми и не для людей. Программе уже лет 20 и по ней это видно. У меня есть необходимые скиллы, чтобы реализовать что-то такое, и идея сделать такой продукт меня бы очень воодушевила!

БЛИЦ — вопросы «из зала»

С вопросами нам помогли участники профильных чатов и каналов в телеграме. Например, канала Buratinopol, в котором пишут про хакинг, кибербезопасность, приватность, анонимность и СИ. Присоединиться к каналу можно здесь: https://t.me/joinchat/AAAAAE4ehmrouUKrc51Jlg

1. Легко стать хакером, если ты специалист по компиляторам?

На самом деле, навыки компайлер-инженеров и взломы — это  две разные истории, хотя небольшие пересечения есть. Не уверен, что с нашими скиллами можно пойти сигнализацию в магазине взламывать, но у нас есть хорошее понимание того, как пишется код для таких устройств. 

Хакер — расплывчатое понятие. Для меня хакинг — это не про взлом, а про то, как сделать с оборудованием то, что до тебя никто не делал.

2. Что может дать университет будущему безопаснику и стоит ли вообще его заканчивать?

Лично я очень рад, что получил университетское образование. Оно даёт кругозор и фундамент, который значительно упрощает дальнейшее самообразование. Я не могу сказать, что это необходимо, но это очень помогает ориентироваться. Сейчас в очень многих вузах есть специальность «компьютерная безопасность», которой во времена моей учёбы не было.

2. С чего лучше начать развивать свои скилы? 

Сейчас есть много открытых квестов, которые собирательно называются “Capture the flag”. Любой желающий может прийти и попробовать их взломать. Изначально это были соревнования между двумя командами: одна пыталась защитить свои флаги, а вторая пыталась эти флаги украсть. Обе команды параллельно атаковали и защищались. Таких соревнований, по-моему, уже не проводят. Всё превратилось в состязание одного человека против головоломок, придуманных кем-то другим.

Начинать можно с любого уровня. Ты проходишь их до тех пор, пока не встретишь головоломку, которую не сможешь решить. Человеку, который решил прийти в кибербезопасность, это даёт наработку опыта.

3. Нужна ли математика специалисту по информационной безопасности?

Школьная математика нужна, но нужна ли высшая математика — не уверен. Скорее нет, чем да.

4. Какие языки программирования нужно выучить для работы в кибербезопасности?

Обязательно нужно знать какой-нибудь ассемблер, а лучше сразу несколько. Например, Intel или ARM — популярные сейчас архитектуры. Хорошо бы знать MIPS — архитектуры, которые часто используются во всяких внедренных устройствах типа микроволновок.

В качестве первого языка мне очень нравится Python. Во время работы в ARM мы занимались волонтерством и раз в неделю проводили уроки Python для школьников. Десятилетние дети осваивают Python довольно легко. В кибербезопасности он не так полезен в практическом применении, но знание его даёт очень комфортный вход в тему.

5. Есть какая-то разница в зарплатах между рядовыми программистами и отделом кибербезопасности в крупных компаниях?

Поровну. От отдела это не зависит.

6. Какие есть основные инструменты поиска уязвимостей WEB приложений? Для защиты от брута? 


Основной инструмент исследования веб-приложений – это Burp Proxy. Он позволяет перехватывать и «на лету» исправлять запросы и ответы. Кроме него, используем tcpdump и/или Wireshark для записи трафика и его анализа «в оффлайне».

Стандартная защита от брута – задержка при повторной попытке аутентификации для одного и того же аккаунта, или с недавно использованного IP-адреса. От брута сразу многих аккаунтов с использованием большого набора прокси это не поможет. В этом случае надо смотреть на конкретную атаку и искать в ней паттерны.

7. Существует ли возможность создания защищенной системы сквозного шифрования при построении облака? Какие слабые места есть у современных алгоритмов шифрования с точки зрения применения квантовых вычислений?

Современные алгоритмы асимметричного шифрования, основанные на эллиптических кривых, предполагают, что дискретный логарифм в соответствующей группе невозможно вычислить за разумное время. Квантовый алгоритм для быстрого дискретного логарифмирования известен с 1994 года, но квантовые компьютеры достаточного размера для практического применения в ближайшие десять лет точно не будут созданы. Алгоритмы асимметричного шифрования используются с размером ключа от 256 бит, а предел возможностей квантовых компьютеров по состоянию на 2019 год — факторизация 4-битного числа.

8. Нейронные сети, в основном, создаются с применением готовых механизмов, например на Пайтоне. Насколько они уязвимы с точки зрения ИБ?

Неясна модель атаки: что у злоумышленника есть и чего он пытается достичь. У разных приложений, использующих НС, будут совершенно разные характеристики с точки зрения ИБ.

9. Есть ли способы взлома vm vare (виртуальной машины) в плане выхода за её пределы и получения доступа к компьютеру, на котором запущена данная машина?

Да, такие способы регулярно обнаруживаются и закрываются, список есть на https://en.wikipedia.org/wiki/Virtual_machine_escape

10. Какие будут базовые шаги по защите периметра сети? Какие существуют методы защиты от внутреннего нарушителя, ведь это самая актуальная угроза и от нее сложнее всего защититься?

Довольно интересный способ защиты от утечки внутренних документов — это внедрение в них меток, уникальных для каждого пользователя, например, https://www.gradiant.org/en/portfolio/shadow/

В остальном всё зависит от того, от чего именно предполагается защищаться. Например, никакие меры ИБ не помешают внутреннему саботёру закоротить электрическую розетку и оставить без электричества весь офис, или подать 220В из розетки в сетевое гнездо. Поскольку личности всех сотрудников известны, юридическая защита от причиняемого ими вреда будет более продуктивной, нежели техническая.

Интервью подготовила команда проекта Veer — это беруши с регулировкой громкости для тех, кто решает сложные задачи головой. Veer помогают концентрироваться и работать продуктивно, даже если вокруг шумно. Узнать подробнее и оформить предзаказ по специальной цене можно на официальном сайте.

Беруши Veer для продуктивной работы дома, в офисе, коворкинге и кафе
Беруши Veer для продуктивной работы дома, в офисе, коворкинге и кафе.