Что такое реверс-инжиниринг, и почему эта профессия востребована во все времена
Многим в детстве было интересно знать, как всё устроено и почему это работает. Почему реверс-инжиниринг сегодня столь важен не только для инженеров, но и для стратегии любой компании в любой стране?
Важность и актуальность реверс-инжиниринга можно проиллюстрировать одной фразой: «Инженеры создают продукты по чертежам. Реверс-инженеры создают чертежи по продуктам».
Реверс-инжиниринг — это способ познания вещей, когда у вас нет исходной документации и инструкций. Это один из самых эффективных способов поиска несовершенств в системах безопасности, дефектов в аппаратных, программных и других решениях на базе различных технологий. А также один из методов, который позволяет получить ответ на вопрос, как устроен продукт конкурента, и буквально посмотреть, что находится внутри: как всё работает, какие у него сильные и слабые стороны. Понимание продукта конкурентов и его сильных и слабых сторон позволяет избежать чужих ошибок, взять лучшие идеи и реализовать их собственными силами.
При этом копирование продукта не является задачей реверс-инжиниринга. В Positive Technologies мы рассматриваем реверс-инжиниринг с точки зрения возможности получения новых знаний.
Как технологии искусственного интеллекта изменили процесс реверс-инжиниринга? Что можно полностью автоматизировать, а какая работа по‑прежнему требует участия человека?
С помощью реверс-инжиниринга и ИИ можно автоматизировать огромное количество задач. Если мы говорим про реверс-инжиниринг программного обеспечения, здесь всё более или менее понятно: можно натренировать и настроить ИИ так, чтобы он работал с конкретным ПО. В поиске аппаратных уязвимостей пока дела обстоят не столь хорошо, поскольку такие задачи трудно формализуемы. Иными словами, если задача хорошо формализуется, технологии ИИ могут существенно помочь. Если задача формализуется плохо, то с помощью ИИ возможно существенно ускорить лишь некоторые операции.
ИИ пока не может полноценно заменить человека в низкоуровневых задачах, задачах исследования, особенно в задачах, связанных с аппаратной составляющей (физическими компонентами устройства. — «Сноб»).
Очевидно, что по мере развития технологий роль ИИ будет расти, все агенты будут становиться более обученными, а роль человека со временем уменьшится. Однако, на мой взгляд, человек ещё долгое время будет принимать активное участие в решении технических и технологических задач.
Реверс-инжиниринг позволяет злоумышленникам находить уязвимости и копировать приложения. Насколько российский бизнес осознаёт эту угрозу?
Большую угрозу сегодня представляют атаки с использованием ИИ-агентов. Их активно используют и киберпреступники, и те, кто защищается. Это битва меча и щита. И развитие идёт очень динамично. Уже скоро ИИ сможет эффективно искать уязвимости, оценивать степень критичности и комбинировать методы защиты и атаки. Роль человека в этих процессах снижается: мы однозадачны и медленны, наше обучение занимает много времени, а жизнь конечна. В свою очередь ИИ может делать очень многое методом проб и ошибок, причём за короткое время: попробовать 100 тысяч раз, и если в 99 999 случаях не получится, а один раз получится — это уже результат. Поэтому выстраивать защиту от атак при помощи ИИ нужно уже сегодня.
В каких отраслях наиболее остро стоит проблема защиты от хакерских атак?
Практически во всех, поскольку проводится цифровизация. Хакерские атаки актуальны для любой отрасли, и методы защиты точно так же актуальны для любой отрасли. Мир давно перестал быть полностью аналоговым. Вряд ли можно найти много мест, где компьютеры были бы полностью исключены из технологической цепочки: например, человек занимается конкретным физическим трудом, а ближайший условный ноутбук находится в 100 км от него.
Какие сферы чаще всего атакуют хакеры?
«Чёрные» хакеры идут туда, где могут реализовать свои цели. Целью киберпреступников обычно выступает либо деструктивное воздействие, либо кража денег. Если речь идёт о большой отрасли, им это интересно, и они будут направлять в это свои усилия. Если целью «чёрного» хакера является материальная выгода, он пойдёт в отрасль, где так или иначе сможет эти деньги получить.
Деньги циркулируют во всех отраслях. В некоторых случаях хакеры демонстрируют, что могут дестабилизировать ситуацию. Ради чего они это делают?
Ради того, чтобы продемонстрировать свои возможности, потешить своё эго, похвастаться достижениями перед другими, чтобы их заметили, о них написали в СМИ. Например, они могут всё отключить, могут зашифровать компьютер, чтобы получить выкуп за разблокировку. Все эти истории — про деньги и тщеславие.
Какие существуют методы защиты от недобросовестного реверс-инжиниринга?
Лучшие методы — это усложнение защиты и правильное проектирование. Термин security by design предполагает, что технологии безопасности встраиваются в архитектуру решения на этапе разработки. Главные проблемы с безопасностью возникают именно потому, что изначально архитектура строится без решений безопасности, в лучшем случае они добавляются в конце разработки. Решение, которое грамотно спроектировано с учётом подхода security by design, взломать гораздо сложнее, поскольку безопасность — это неотъемлемая часть архитектуры.
Без учёта требований безопасности вряд ли возможно сейчас выстраивать решения в сфере информационных технологий.
Безопасность всегда подразумевает дополнительные затраты. Каждый разработчик, каждый вендор решает для себя, насколько безопасность важна в том или ином решении и насколько необходимо реализовать эту функцию. На мой взгляд, безопасность является критически важным компонентом любого процесса.
Если мы утверждаем, что данные — это новая нефть, значит, говорить о том, что можно создать решение без функции безопасности, не заложенной на этапе проектирования, по меньшей мере странно. Потому подхода security by design нужно придерживаться во всех разрабатываемых решениях.
А можно ли взломать любую систему, даже с высокой степенью защиты?
Мы исходим из того, что взломать можно всё. Это аксиома. И это всегда вопрос ресурсов, которые требуются для взлома. Это вопрос либо времени, либо финансовых затрат, либо компетенции и оборудования и т. п. Если проектирование чипа или устройства, программы или целой экосистемы проходит с учётом принципа security by design, для взлома потребуется гораздо больше ресурсов: и более дорогое оборудование, и более высокая квалификация людей.
Но современные технологии эту разницу в компетенциях как раз могут существенно компенсировать: с помощью ИИ люди с меньшими компетенциями могут взламывать решения с большим успехом. Но если система изначально проектировалась с учётом актуальных технологий безопасности, взломать её всё ещё очень сложно.
Насколько меняется стоимость разработки с учётом принципов безопасности?
Это вопрос бизнеса: во сколько он оценивает риски безопасности и вероятность недопустимых событий (недопустимое событие — это критический инцидент [чаще всего кибератака или грубое нарушение процессов], который полностью останавливает работу организации, делает невозможным достижение её стратегических целей или приводит к катастрофическим последствиям. — «Сноб»), и насколько реализация рисков может оказаться дороже затрат на проектирование и разработку того или иного решения с учётом требований безопасности.
То есть скупой платит дважды.
Да, примерно так.
Почему при работе с вредоносным ПО и защите приложений важно понимать не только код, но и устройство «железа» — всего оборудования, в том числе процессоров, контроллеров?
Системы и решения стали очень сложными. Если мы говорим про ПО, оно работает на оборудовании — «железе». Невозможно построить нормальную защищённую систему на уровне ПО, если изначально она строится на базе уязвимого «железа» — это ставит под сомнение безопасность всей вышестоящей инфраструктуры. Есть такой термин — цепочка доверия. Корнем доверия является «железо». Если «железо» может быть легко скомпрометировано, то и всё, что работает выше (операционные системы и приложения), может быть скомпрометировано.
С какими главными трудностями сегодня сталкиваются специалисты по реверс-инжинирингу?
Во-первых, большой объём кода. Современные системы являются очень объёмными. Самописный код по-прежнему занимает значительную часть, но программисты используют большое количество сторонних библиотек. И если в стороннюю библиотеку внедрён вредоносный код, она может сделать уязвимой любую систему, в которую её интегрируют разработчики. Такие риски можно снизить за счёт некоторых разработок. Но основная сложность состоит как раз в том, что системы стали чрезвычайно сложными. Причём сложными стали и «железо», и ПО. Исследование безопасности таких систем требует высокого уровня компетенции.
У вашей компании сильный центр исследований и разработок. Как вы готовите кадры для этой сферы? Какие навыки — технические и нетехнические — становятся принципиально важными в современных условиях?
В этом году мы открыли совместную программу с МФТИ, где ребята будут обучаться аппаратному и программному реверс-инжинирингу и разработке систем защиты. Это не классический курс по подготовке специалистов по информационной безопасности, а очень близкая к реальному миру программа с задачами, которая позволит реализовать актуальные знания с минимальным лагом после получения знаний.
Я не критикую классические программы образования, но, как правило, выпускники понимают, что, пока они учились, реальный мир сильно изменился. Мир меняется каждый месяц. В этой программе делается упор на большое количество практики. Мы будем давать студентам как раз те задачи и знания, которые востребованы и актуальны здесь и сейчас, и у них не будет временного лага между получением знаний и их применением. По окончании программы они станут полноценными специалистами, а не кабинетными экспертами.
Какие навыки нужны для овладения профессией реверс-инженера?
Во-первых, нужно быть любознательным. Человеку должно быть интересно то, чем он занимается. Невозможно заниматься реверс-инжинирингом только потому, что за это хорошо платят или потому что это стало модно.
Вряд ли можно пойти учиться или работать по какой-то специальности, если с детства этим не интересоваться.
Не всегда структура образования совпадает с желаниями ребят. И не всегда на работе задачи совпадают с тем, чему учили. Медийное поле успешно популяризировало профессию хакера: люди понимают, кто это. При этом многим непонятно, чем занимается реверс-инженер и зачем нужна эта профессия.
Поясню: реверс-инжиниринг — профессия для тех, кто хочет докопаться до сути. Она требует серьёзных, фундаментальных знаний и особого склада ума. Его можно описать как смесь хакерского мышления, гена «неуспокоенности», внутренней тяги к действию и жажды каждый раз добираться до самой сути вещей.
В условиях, когда вводятся ограничения и нам приходится разбираться в технологиях, которых нас пытаются лишить, эта профессия очень важна и актуальна. Поэтому мы всячески её популяризируем. Например, в этом году мы сняли научно-документальный фильм, который рассказывает о ней. На YouTube его уже посмотрели более 500 тысяч раз, примерно столько же просмотров на других платформах.
Мы сняли его для ребят, которые ещё учатся в школе или поступили в вуз, но не знают, чем хотят заниматься. Мы хотели показать, насколько интересна профессия реверс-инженера, что она собой представляет, зачем нужна. Чтобы те, у кого есть запрос, но он ещё не сформулирован, поняли, где и в какой профессии можно реализовать любознательность и технический склад ума.
Какова обратная сторона этой профессии? Могут ли патенты защитить от подделок и ока любознательного инженера?
Патенты могут защитить от недобросовестного копирования, но не ока инженера. В России реверс-инжиниринг в исследовательских целях не запрещён законом. В нашем R&D-центре Positive Labs мы проверяем, насколько то или иное решение сложно взломать. К нам обращаются вендоры с просьбой оценить защищённость их решений. Либо мы проводим инициативные исследования для получения новых знаний, а информацию о найденных уязвимостях передаём вендору.
При этом в США и некоторых странах Европы действуют другие правовые нормы. Например, в некоторых случаях исследования могут быть не запрещены законодательно, но нарушать лицензионное соглашение. То есть вы можете зареверсить устройство или ПО, но нарвётесь на гражданский иск, если не получили разрешения от разработчика. Поэтому при исследованиях важно учитывать нюансы юрисдикций, в которых вы работаете, и своевременно консультироваться с юристами.
Здесь, наверное, правомерен вопрос бизнес-этики.
Если человек нашёл уязвимость в популярном технологическом изделии и начал рассказывать об этом всему миру: «Смотрите, я нашёл», — важно, чтобы эта информация дошла до производителя, который мог бы устранить недостаток и сделать изделие безопаснее.
У нас есть отличный инструмент — платформа Bug Bounty, которая позволяет компаниям проверять безопасность решений. Компании могут выйти на платформу и сказать: «Мы хотим проверить вот это и вот это. Мы готовы заплатить исследователям некоторую сумму за реализацию таких рисков». Дальше исследователи («белые» хакеры и реверс-инженеры) регистрируются на этой платформе, получают от компании исходные данные и пытаются их взломать. Если это удаётся, они направляют отчёт через платформу, производитель получает информацию об уязвимостях, устраняет ошибки и официально платит деньги исследователям.
Здесь получается очень хорошая стратегия win-win: компания говорит, что для неё наиболее актуально проверить, а хакеры работают в правовом поле и получают вознаграждение. Выплаты исчисляются сотнями тысяч и даже миллионами рублей. Компаний, которые выходят на программу Bug Bounty, становится всё больше. Люди понимают, что это очень эффективный и сравнительно дешёвый способ проверить свои решения.
Что ждёт реверс-инжиниринг в будущем и исчезнет ли профессия программиста с развитием ИИ?
Профессия программиста точно будет трансформироваться, потому что уже более 50% программного кода пишется с использованием ИИ, и эта доля будет расти. Есть вероятность, что ИИ будет писать 100% программного кода уже через год. Другой вопрос — насколько качественно ИИ пишет программный код и какие уязвимости могут возникать в процессе написания.
Профессия реверс-инженера, на мой взгляд, точно не умрёт, потому что кому-то придётся разбираться в том, как устроены те или иные технологические решения в условиях, когда нет доступа к документации, а также анализировать сгенерированный ИИ программный код.
Также нужно помнить о смене парадигм и научных школ и о том, что некоторые знания быстро забываются. Уже сейчас в интернете очень сложно найти информацию 15-летней давности. Сайты нормально не агрегируют данные, и вполне вероятен сценарий, что никто кроме реверс-инженера не сможет ответить на вопрос, как устроена технология 20-летней давности. Даже если устройство или программа есть в наличии и есть задача подключить их к современной системе — для этого нужно понимать, какие внести изменения, чтобы она соответствовала новым техническим требованиям и интерфейсам. Такую работу сможет сделать только реверс-инженер, потому что компания-разработчик может уже просто не существовать.
Смогут ли такую работу сделать специалисты, которых вы сейчас обучаете? Будeт ли у них необходимая квалификация?
Конечно. Мы даём базу и обучаем навыкам. Инструменты исследований будут меняться, но подходы останутся неизменными. Получившие высшее образование по программе нашего бакалавриата реверс-инженеры будут готовы к решению любых, даже самых нестандартных задач.
Беседовала Екатерина Кравченко