Руководители служб информационной безопасности (CISO) и так испытывали трудности, помогая разработчикам соблюдать принципы безопасного кодирования в условиях DevOps. Теперь, когда разработка с помощью ИИ меняет подходы к написанию и выпуску кода, эта проблема стремительно обостряется.
Если два года назад лишь около 14% корпоративных инженеров-программистов регулярно использовали ИИ-ассистентов для написания кода, то, по прогнозам Gartner, к 2028 году эта цифра вырастет до 90%. А исследования аналитических фирм, таких как Faros AI, показывают, как выглядит такое массовое внедрение на практике: разработчики, использующие ИИ, на 98% чаще объединяют пул-реквесты (PR).
Для команд безопасности такая скорость создает усугубляющуюся проблему. Кода становится больше, он создается быстрее, а времени на его проверку остается меньше. Теоретически, инструменты на базе ИИ могут помочь автоматизировать многие рутинные этапы проверки кода. Но на практике это пока не происходит с высокой точностью. И даже по мере повышения эффективности проверки кода с помощью ИИ, это вовсе не означает устаревание обучения разработчиков.
Просто обучение должно измениться. Поскольку ИИ-инструменты становятся лучше в обнаружении и исправлении распространенных ошибок на уровне кода, фокус обучения разработчиков в области безопасности смещается на более фундаментальные принципы, связанные с моделированием угроз для системных рисков ПО. Традиционные методы обучения должны уйти в прошлое. Среди лидеров в области безопасности существует консенсус: обучение разработчиков должно быть кратким, практическим и в основном интегрированным в цепочки инструментов разработчика.
Переориентация с результатов на эффекты
По мере развития ИИ-ассистированного кодирования, механика обнаружения распространенных уязвимостей на уровне кода все чаще будет выполняться самими инструментами. ИИ-ассистенты в сочетании со статическим анализом и автоматическим устранением ошибок смогут выявлять и исправлять многие ошибки построчного кода, на которых традиционно фокусировалось обучение разработчиков в области безопасности. Это те самые назойливые проблемы, такие как SQL-инъекции, межсайтовый скриптинг и небезопасные конфигурации, о которых команды безопасности твердили разработчикам десятилетиями.
Это должно заставить CISO переосмыслить свой подход к поддержке и обучению разработчиков. Ведь даже если автоматическое сканирование и исправление станет стандартом в ИИ-ассистированной разработке, процесс проверки при внесении изменений все равно, скорее всего, упустит множество слабых мест в безопасности.
«Код, сгенерированный ИИ, может быть синтаксически корректным, но контекстуально безрассудным, — говорит Анкит Гупта, старший инженер по безопасности в Exeter Finance и сторонник AppSec, который помогал разработчикам внедрять более безопасное ПО. — Разработчики вынуждены просеивать вывод ИИ, который является „правдоподобным, но недоверенным“. Это смещает фокус безопасной разработки с процесса создания на процесс валидации».
Вместо того чтобы готовить разработчиков к проверке кода построчно, акцент смещается на оценку того, насколько безопасно ведут себя их функции и возможности в контексте условий развертывания, говорит Хасан Ясар, сторонник безопасного DevOps и технический директор по быстрому внедрению высоконадежного ПО в Институте инженерии программного обеспечения Университета Карнеги — Меллона. По его словам, разработчикам особенно необходимо уметь выявлять риски в точках интеграции, архитектуре и логике.
«Мы переходим от результатов к эффектам, — говорит Ясар, объясняя, что цель состоит в том, чтобы разработчики критически оценивали, как их системы работают в реальном времени. — Эффекты — это те функции, которые мы предоставляем пользователям — работают ли эти функции так, как должны?»
Эмилио Пинна, директор и соучредитель платформы обучения разработчиков в области безопасности SecureFlag, говорит, что это представляет собой фундаментальный сдвиг в том, что должно охватывать обучение по повышению осведомленности о безопасности. «Пять лет назад отраслевое обучение учило конкретным шаблонам: „Не делайте этого. Всегда делайте так“. Сегодня обучение должно также фокусироваться на основополагающих принципах, чтобы разработчики могли оценивать любой код, независимо от того, как он был сгенерирован».
Разработчикам необходимо распознавать, когда код, сгенерированный ИИ, вносит небезопасные предположения, небезопасные настройки по умолчанию или интеграции, которые могут масштабировать уязвимости по системам. И поскольку в автоматизированные конвейеры разработки встроено больше механизмов обеспечения безопасности, разработчиков, в идеале, также следует обучать понимать, что улавливают автоматизированные шлюзы, а что по-прежнему требует человеческого суждения. «Осведомленность о безопасности в инженерии сместилась к системному подходу, а не к фокусировке на отдельных уязвимостях, — говорит Пинна. — Это включает такие вопросы, как управление идентификацией и доступом, зависимости и риски цепочки поставок».
Моделирование угроз как ключевая компетенция
Такое системное мышление также должно повысить потребность в большей грамотности разработчиков в области моделирования угроз, говорит Ясар. Он отмечает, что операционализация моделирования угроз в масштабе для команд по безопасности продуктов и инженерии исторически была сложной задачей. Одним из давних барьеров для практического моделирования угроз были знания, необходимые для построения эффективных моделей угроз. Команды с трудом понимали достаточно о контексте организации, о том, как используются приложения, об архитектуре и соответствующих рисках, чтобы связать все это воедино и выявить наиболее актуальные потенциальные угрозы.
ИИ может здесь помочь. Синтезируя организационный контекст и архитектурные шаблоны, ИИ может упростить создание моделей угроз, которые ранее требовали значительных ручных усилий, говорит Ясар. Но хотя ИИ может ускорить механику моделирования угроз, разработчикам по-прежнему необходимо понимать основы: как думать о границах доверия, как определять активы, которые стоит защищать, и как предвидеть, как злоумышленники могут злоупотреблять функциями. CISO, стремящиеся сместить обучение разработчиков от избегания уязвимостей, могут захотеть вместо этого начать внедрять навыки моделирования угроз как ключевую компетенцию.
Это означает, что техническим директорам (CTO) и CISO необходимо помочь разработчикам и остальной инженерной команде начать развивать «интуицию в моделировании угроз», говорит Майкл Белл, основатель и генеральный директор Suzu Labs. «Это не может быть простой проверкой „работает ли этот код?“. Это должно трансформироваться в „как это можно использовать во вред?“ — говорит он. — Мы снимаем с себя большую часть умственной нагрузки по написанию кода, так давайте же направим это освободившееся время и возможности на проверку генерируемого кода».
Белл считает, что развитие интуиции в моделировании угроз требует более высокого уровня практического и иммерсивного обучения, такого как работа в киберполигонах, где разработчикам показывают, как злоумышленники атакуют их приложения. «Поскольку ИИ берет на себя больше рутинной работы по кодированию, ценность человека смещается к суждению, — говорит он. — Практическое обучение развивает суждение так, как этого не делают лекции и видео».
Встраивание обучающих подсказок в защитные механизмы
Настоящая хитрость практического обучения заключается в том, чтобы найти способ предоставлять его разработчикам в условиях высокоскоростной инженерной среды. ИИ-ассистированное кодирование только ускоряет рабочие процессы и делает производственные ожидания еще более напряженными. CISO, просящий замедлить темп для обучения, вызовет немало скептических взглядов со стороны CTO, находящихся под давлением.
«Традиционные, статичные, одноразовые курсы не работают в современном жизненном цикле разработки, — говорит Пинна. — Эффективным оказывается непрерывное практическое обучение в лабораториях с реалистичными инженерными сценариями. Им также необходимо контекстуальное обучение в нужный момент».
Новый подход среди лидеров в области безопасного кодирования заключается в объединении платформенной инженерии с целенаправленной инженерной работой разработчиков, встраивая рекомендации по безопасности непосредственно в рабочие процессы и инструменты, которые разработчики уже используют. Вместо того чтобы ожидать, что разработчики запомнят то, что они узнали на прошлогоднем обучении, команды безопасности должны создавать защитные механизмы, которые обучают по мере обеспечения соблюдения, говорит Пинна.
«Команды безопасности создают защитные механизмы, которые масштабируются по конвейерам разработки, — говорит Пинна. — Эти механизмы превращают риски в руководство для разработчиков и гарантируют, что автоматизированные инструменты подкрепляют обучение. Цель состоит в том, чтобы обучение и обеспечение соблюдения работали вместе, так что столкновение с защитным механизмом также помогает разработчикам понять принципы безопасности».
Гупта описывает схожее видение: «Вместо того чтобы ожидать, что пользователи будут читать документацию, ожидания по безопасности встроены в конвейеры, с всплывающими объяснениями, оправдывающими наличие контроля и описывающими, как его соблюдать».
Это может даже выйти за рамки всплывающих окон. Предоставление микрообучения по запросу с интервалами в пять, десять и пятнадцать минут, основанного на конкретной проблеме, с которой столкнулся разработчик, может быть невероятно эффективным. «Инструменты, которые я использую, должны помогать мне учиться», — говорит Ясар.
Данные от срабатывающих защитных механизмов и контролей могут использоваться командой AppSec для создания и предоставления более глубокого, но целенаправленного образования. Когда одна и та же уязвимость или шаблон интеграции возникают снова и снова, это сигнал для целенаправленного обучения по данной теме.
«Команды AppSec играют критически важную роль в связывании автоматизированных находок с обучением, — говорит Белл. — Когда одна и та же проблема возникает повторно, это возможность для обучения».
Новая повестка дня CISO по обучению
Умные CISO, вероятно, уже понимают, что ландшафт кодирования с помощью ИИ потребует от команды разработчиков большей, а не меньшей осведомленности в области безопасности. Это потребует от лидеров в области безопасности более тесного, чем когда-либо, сотрудничества с руководством инженерных подразделений для влияния на изменение контента и механизмов предоставления обучения по осведомленности о безопасности.
Помимо уже описанных основ, эксперты по безопасности говорят, что существует еще один новый фактор в обучении безопасности, который CISO отчаянно необходимо будет учитывать по мере того, как ИИ-ассистированное кодирование будет набирать обороты в их организациях. Разработчикам теперь потребуется обучение тому, как безопасно работать с самими ИИ-инструментами.
«CISO должны спросить: как я могу обучить своих инженеров использовать ИИ-инструменты с учетом безопасности? — говорит Ясар. — Как я могу научить их оценивать и проверять то, что они запрашивают и получают от этих инструментов? Это будет зависеть от управления».
Это означает работу с CTO и другими соответствующими заинтересованными сторонами для установления четких политик, определяющих, когда ИИ-ассистированный код требует человеческой проверки, какие типы данных могут использоваться с ИИ-инструментами и как регулируется использование ИИ до того, как код попадет в продакшн. Гупта говорит, что организации уже начинают формализовать эти правила как часть своих более широких программ поддержки разработчиков.
Здесь также есть возможность наконец-то реализовать давно не достигнутые цели безопасного проектирования. CISO могут работать с инженерными командами, используя руководство по промпт-инжинирингу для встраивания требований безопасности в момент генерации кода. Команды безопасности, предлагающие разработчикам обучение и готовые языковые шаблоны промптов, помогут им с самого начала производить более безопасное программное обеспечение.
«Теперь я могу встроить соответствие требованиям в свой промпт. Я могу создать соответствие требованиям по дизайну в своих архитектурах, — объясняет Ясар. — Если я разработчик, я могу попросить инструмент создать мне веб-логин и убедиться, что этот веб-логин соответствует рекомендациям HITRUST. Я могу сказать: „вот подробные рекомендации“. Это даст нам очень хорошую возможность встроить соответствие требованиям по дизайну непосредственно в промпт».
Таким образом, CISO могут использовать переход к ИИ-ассистированному кодированию для создания более устойчивого программного обеспечения, чем когда-либо прежде.
Главное — обучение разработчиков никуда не денется. Но CISO должны приложить усилия, чтобы повлиять на изменения, которые встраивают суждение в области безопасности в культуру инженерии. Это означает тесное сотрудничество с CTO для интеграции знаний о моделировании угроз, защитных механизмах и управлении ИИ непосредственно в инструменты, которые разработчики используют каждый день.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Ericka Chickowski




