Алексей Хорошилов, ИСП РАН: Не рассчитывайте, что ИИ сможет самостоятельно разрабатывать безопасный код без участия человека

Алексей Хорошилов, ИСП РАН: Не рассчитывайте, что ИИ сможет самостоятельно разрабатывать безопасный код без участия человека

Разработка безопасного программного обеспечения (РБПО) постепенно становится обязательной частью инженерных процессов. Однако внедрение статического анализа, сканеров и других инструментов еще не означает, что компания действительно достигла зрелости. На практике многое зависит от культуры разработки, вовлеченности команд, поддержки руководства и способности встроить требования безопасности в повседневную работу, а не превратить их в формальность.

Алексей Хорошилов, руководитель центра исследований безопасности системного ПО ИСП РАН, в интервью для Кибер Медиа рассказал, какие практики РБПО уже стали нормой для российских компаний, почему главные проблемы связаны не со стандартами, а с их применением, как выстроить безопасную работу с open source-компонентами и какую роль в ближайшие годы сыграют ИИ и автоматизация.

Кибер Медиа: Какие элементы РБПО российские компании за последние несколько лет действительно научились внедрять на практике, а где разрыв между декларируемыми процессами и реальной инженерной практикой остается самым большим?

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

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

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

Если все процедуры безопасной разработки существуют где-то в стороне от основного процесса создания продукта, то зрелость близка к нулю

Кибер Медиа: Что сегодня является главным препятствием для зрелого внедрения РБПО в российских компаниях: нехватка специалистов, отсутствие культуры безопасности, давление сроков разработки или что-то другое? 

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

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

При этом свою роль играет и культура разработки. Если в организации, независимо от терминов «РБПО» и требований, прописанных в ГОСТах, уже сложилась культура аккуратной и зрелой разработки, то лучшие практики РБПО обычно внедряются достаточно легко. Даже если сотрудники не называют это РБПО, они уже следуют здравому смыслу и процедурам разработки, которые фактически существуют в компании. В таких организациях обычно находятся и специалисты, которым несложно освоить дополнительные аспекты РБПО, новые инструменты и практики.

Если же такой культуры нет, то внедрение РБПО упирается еще и в необходимость сначала сформировать эту культуру.

Кибер Медиа: Способствуют ли действующие российские стандарты повышению реальной защищенности продуктов, или фокус индустрии пока остается смещенным в сторону «закрытия галочек» для прохождения сертификации? Можно ли говорить о формировании российских подходов к РБПО с учетом международного опыта? 

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

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

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

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

Совместная работа позволяет применять лучшие практики РБПО и обеспечивать высокий уровень безопасности

Кибер Медиа: Насколько международные модели зрелости РБПО, такие как BSIMM, OWASP SAMM и Microsoft SDL, сохраняют актуальность для российских компаний? Есть ли области, где отечественная практика уже формирует собственные подходы?

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

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

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

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

Кибер Медиа: Как вы рекомендуете оценивать зрелость безопасной разработки? Какие метрики действительно отражают состояние процессов, а какие создают лишь ложное ощущение контроля?

Алексей Хорошилов: Для меня главный показатель зрелости безопасной разработки — это вовлеченность команды разработки в эти процессы. Если все процедуры безопасной разработки существуют где-то в стороне от основного процесса создания продукта, то зрелость близка к нулю. Чем сильнее они встроены непосредственно в работу продуктовой команды, тем выше зрелость.

Кибер Медиа: Если у компании ограниченные ресурсы на развитие РБПО, какие практики стоит внедрять в первую очередь? Где чаще всего достигается максимальный эффект при минимальных затратах? 

Алексей Хорошилов: Если у компании пока ничего не внедрено, то в первую очередь стоит смотреть в сторону контролируемого репозитория и композиционного анализа. Это позволит хотя бы в части заимствованных компонентов организовать защиту от угроз, связанных с цепочками поставок и уязвимостями в open source-компонентах.

Если говорить о собственном коде, то, наверное, имеет смысл сосредоточиться на трех основных практиках: 

  • статический анализ;
  • функциональное тестирование;
  • фаззинг-тестирование. 

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

Что касается функционального тестирования, то это необходимая составляющая любого зрелого процесса разработки ПО, а не только РБПО. Формирование системного подхода к тестированию — как на уровне модулей, так и на системном уровне — приносит ощутимую пользу и с точки зрения качества продукта, и с точки зрения безопасности.

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

В целом все эти подходы целесообразно использовать в комбинации. При этом на первом этапе глубину их внедрения можно ограничить самым базовым уровнем.

Кибер Медиа: Риски компрометации цепочек поставок ПО сегодня остаются одной из ключевых проблем индустрии. Как выстроить контроль сторонних компонентов и open-source библиотек так, чтобы не потерять скорость разработки? 

Алексей Хорошилов: В первую очередь необходимо сформировать контролируемый репозиторий заимствованных компонентов и организовать замкнутую среду сборки. Это нужно для того, чтобы во время сборки в продукт не попадало ничего, кроме кода, который хранится и анализируется в контролируемом репозитории. Без этого первого шага обеспечить безопасность цепочки поставок достаточно проблематично.

При этом здесь возникает определенное противоречие. С одной стороны, заимствованные open source-компоненты необходимо регулярно обновлять, чтобы устранять выявленные в них уязвимости. Чем быстрее обновление, тем лучше. С другой стороны, именно самые свежие версии могут оказаться скомпрометированными, если злоумышленники получили доступ к репозиторию или инфраструктуре распространения компонентов.

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

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

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

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

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

Кибер Медиа: Безопасность часто воспринимается разработчиками как досадный тормоз. Как выстроить взаимодействие между командами, чтобы процессы РБПО воспринимались как часть инженерной культуры, а не как дополнительная бюрократия?

Алексей Хорошилов: Это, скорее, творческий вопрос. Здесь нужно найти ключ к конкретной команде разработки. Универсального рецепта нет — в каждом случае задача решается индивидуально.

Из действительно работающих практик я бы выделил две. Первая — это поиск секьюрити-чемпионов. То есть представителей команды разработки, которые понимают цели РБПО, сами заинтересованы в этих практиках и помогают внедрять соответствующую культуру внутри своей команды.

Вторая практика — демонстрация на реальных примерах из кода команды тех проблем и потенциальных угроз, которые позволяют выявить и предотвратить практики РБПО.

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

Кибер Медиа: ИСП РАН исторически силен в математических методах верификации. Насколько оправдано применение формальных методов в коммерческой, промышленной разработке сегодня? Где проходит граница их практической и экономической применимости?Алексей Хорошилов: Формальных методов достаточно много. Есть тяжеловесные подходы, например, дедуктивная верификация, когда ставится задача доказать корректность кода. Такие методы действительно очень дороги, требуют участия высококвалифицированных специалистов и больших трудозатрат. Поэтому их обычно применяют только для самых критичных компонентов, в корректности которых необходимо быть уверенными практически на 100%. Да и далеко не в каждом продукте есть компоненты, критичность которых настолько высока.

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

Кроме того, упрощенные модели могут использоваться и для более практических задач, например, для тестирования. Это так называемое тестирование на основе моделей. Модели помогают генерировать интересные наборы тестовых данных, а также дополнительно оценивать корректность поведения продукта в процессе тестирования.

Такие практики оказываются экономически эффективными в гораздо большем числе случаев. Они позволяют повысить эффективность тестирования за счет математических методов, но при этом требуют значительно меньших затрат, чем классическая формальная верификация.

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

Кибер Медиа: Какие 2–3 неочевидных признака позволяют вам с первого взгляда понять, что организация действительно перешла к зрелой безопасной разработке, а не просто автоматизировала отдельные проверки и внедрила сканеры в пайплайн?

Алексей Хорошилов: Первое, на что я бы посмотрел, — это примеры выявленных проблем. Если команда может показать, какие ошибки внедренные практики безопасной разработки позволили обнаружить и устранить на ранних стадиях, то это будет хорошим подтверждением зрелости.

Если же мне скажут: «У нас все работает, все проверки проходят, все зеленое, никаких ошибок никогда не возникало», — я, скорее, отнесусь к этому с большим подозрением. В таком случае можно предположить, что безопасная разработка была внедрена скорее формально, чем по сути.

Дело не столько в самих стандартах, сколько в том, с какой целью организация их применяет

Кибер Медиа: Какую реальную роль в РБПО в ближайшие 3–5 лет будут играть ИИ и автоматизация? Какие процессы они действительно способны изменить, а где ожидания рынка пока завышены?

Алексей Хорошилов: Безусловно, технологии ИИ окажут большое влияние на процессы РБПО. Прежде всего хотелось бы ожидать, что они существенно помогут в выявлении ошибок. Уже существующие практики можно будет применять с меньшими затратами со стороны разработчиков. Кроме того, ИИ сможет взять на себя часть задач по фильтрации и первичному анализу результатов. Мне представляется, что это позволит повысить эффективность процессов за счет автоматизации тех задач, которые сегодня требуют значительного ручного труда.

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

Отдельно я бы отметил еще один аспект, связанный с заимствованными компонентами. Мы о нем не поговорили, но он тоже важен. Open source-компоненты разрабатываются под открытыми лицензиями, поэтому открывают дополнительные возможности для совместной работы над безопасностью. Выявлять и устранять уязвимости могут не только отдельные организации, но и все сообщество пользователей этих компонентов.

Опыт нашего центра показывает, что такой подход действительно работает. Даже если речь идет о таких масштабных проектах, как ядро Linux с десятками миллионов строк кода, совместная работа позволяет применять лучшие практики РБПО и обеспечивать высокий уровень безопасности. Сотрудничество вокруг open source-компонентов — еще один важный фактор повышения безопасности цепочки поставок.

похожие материалы

Стрелочка
Стрелочка
Дмитрий Беляев, ИБ-блогер: Открытый диалог сегодня — это не тренд, а необходимое условие устойчивости всей отрасли
Дмитрий Беляев, ИБ-блогер: Открытый диалог сегодня — это не тренд, а необходимое условие устойчивости всей отрасли

Дмитрий Беляев — победитель премии «Киберпросвет» в номинации «ИБ-инфлюенсер — за инициативы, повышающие доверие и прозрачность в безопасности».

Алексей Жуков, «Газпром-Медиа Холдинг»: Киберустойчивость — это то, что сохранит бизнесу жизнь, деньги и репутацию
Алексей Жуков, «Газпром-Медиа Холдинг»: Киберустойчивость — это то, что сохранит бизнесу жизнь, деньги и репутацию

Директор по информационной безопасности Цифровых активов «Газпром-Медиа Холдинга» Алексей Жуков специально для рассказал Кибер Медиа, как будет развиваться киберустойчивость в будущем и к чему стоит готовиться в условиях ускоренного проникновения ИИ.

Тимофей Матреницкий, «Актив»: Запад и Китай борются за цифровой фундамент Африки, но у России есть шанс предложить альтернативу
Тимофей Матреницкий, «Актив»: Запад и Китай борются за цифровой фундамент Африки, но у России есть шанс предложить альтернативу

Рынок ИБ Африки находится на ранней стадии зрелости, но уже демонстрирует устойчивый и ускоренный рост, постепенно превращаясь в поле стратегической конкуренции глобальных игроков.

Александр Сухомлин, «Ростелеком»: Главный вызов эпохи растущих угроз — удержать киберустойчивость
Александр Сухомлин, «Ростелеком»: Главный вызов эпохи растущих угроз — удержать киберустойчивость

Александр Сухомлин, директор департамента архитектуры ИБ «Ростелекома», рассказал Кибер Медиа о том, как обеспечивать надежную защиту систем без ущерба для бизнес-процессов, какими навыками должен обладать современный ИБ-архитектор и почему синергия ИТ и ИБ приобретает все большую ценность для киберустойчивости.

Алексей Лукацкий, Positive Technologies: Наращивание возможностей ТСПУ не может быть безграничным
Алексей Лукацкий, Positive Technologies: Наращивание возможностей ТСПУ не может быть безграничным

Алексей Лукацкий, Chief Evangelist Officer, Positive Technologies, в интервью для Кибер Медиа рассказал, как работают «белые списки» VPN, почему ТСПУ не справляются с нагрузкой, и возможна ли монополизация доступа.

Андрей Лёвкин, руководитель BI.ZONE Bug Bounty: ИИ «найдет» уязвимости там, где их нет
Андрей Лёвкин, руководитель BI.ZONE Bug Bounty: ИИ «найдет» уязвимости там, где их нет

В интервью для Кибер Медиа Андрей Лёвкин, руководитель продукта BI ZONE Bug Bounty, рассказал, когда багбаунти станет обязательным инструментом для проверки уровня защищенности, как внутренним командам кибербезопасности работать с внешними исследователями и чего ожидать от багбаунти в будущем.