Контакты
Подписка 2026

Практические аспекты построения процесса безопасной разработки программного обеспечения

Игорь Беляков, 14/06/20

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


Игорь Беляков
CISO kupibilet.ru, к.т.н.

Реализация рисков на этапе эксплуатации может привести к серьезному финансовому и репутационному ущербу. Финансовый ущерб, как правило, включает в себя затраты на устранение уязвимости и выпуск новой версии программы, а также упущенную выгоду, которая может стать следствием снижения интереса клиентов к небезопасному приложению. Безопасная разработка программного обеспечения (Secure Software Development Lifecycle – SSDL) представляет собой подход, нацеленный на своевременное выявление и устранение уязвимостей в исходном коде. Построение SSDL силами разработчика программного обеспечения является наиболее верным решением, ведь именно разработчик заинтересован в снижении накладных расходов на поддержание продукта.

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

  • расходы на выявление уязвимости (все сводится либо к оплате в рамках программы Bug Bounty, либо к оплате работы исследователя, выявившего уязвимость);
  • расходы на обработку обращений клиентов (ставших следствием публикации информации об уязвимости или нарушением в работе программы);
  • расходы на проведение анализа влияния уязвимости на участки кода, измененные после ее появления;
  • а также расходы на сборку и вывод в промышленную эксплуатацию новой версии программы.

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

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

В сложившейся практике внедрение SSDL сводится к включению средства статического анализа исходного кода (Static Application Security Testing – SAST) в процесс тестирования приложения. Как правило, тестирование безопасности приложения осуществляется одновременно с функциональным тестированием (Quality Assurance – QA). То есть если приложение успешно проходит все проверки, его можно отправлять в промышленную эксплуатацию.

При построении процесса непрерывной безопасной разработки обязательно используются три основных компонента:

  1. GIT – распределенная система управления версиями, хранения и версионирования исходного кода.
  2. CI (Continuous Integration – непрерывная интеграция) – основная логика распространения новых версий программного обеспечения. Непрерывная интеграция – это практика разработки программного обеспечения, которая заключается в постоянном слиянии рабочих копий в общую основную ветвь разработки (до нескольких раз в день) и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем.
  3. SAST – средство статического анализа исходного кода. Основной инструмент для поиска уязвимостей.

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

  1. Нарушение синтаксиса языка. Чаще всего такие уязвимости вызывают нарушение работы приложения.
  2. Использование уязвимых функций или библиотек. В последнее время достаточно часто появлялась информация о внедрении вредоносного кода в Open Source, библиотеки или иные расширения. Так как многие коммерческие продукты используют сторонние библиотеки без дополнительной проверки, уязвимость библиотеки становится уязвимостью приложения.
  3. Хранение отладочных данных в исходном коде. Часто случаются ситуации, когда в исходном коде приложения записаны логины и пароли, используемые для отладки или тестирования. Получив доступ к исходному коду, злоумышленник может получить доступ и к приложению.
  4. Ошибки конфигурации приложения. Чаще всего сводятся к некорректной настройке используемых протоколов, а также внешних модулей и иных систем, включая базы данных. Такие ошибки позволяют получить несанкционированный доступ к информации.
  5. Обработка данных, полученных без предварительной проверки. Чаще всего источником таких данных является пользователь, который может ввести различные сомнительные сведения в приложение. Отсутствие проверки позволяет загрузить даже вредоносное программное обеспечение.
  6. Неиспользуемые участки кода, которые могут содержать логические бомбы или бэкдоры. В рамках сложных атак неиспользуемые участки кода могут быть незаметно изменены злоумышленником и использованы для манипуляции приложением.

Как создать безопасное ПО?

Чтобы не допустить присутствие уязвимостей в исходном коде, во время разработки приложения нужно соблюдать несколько условий и придерживаться следующих этапов:

  1. Разработка. На данном этапе создается новый функционал, проверяется корректность его работы и сохраняется в основной проект (Сommit) в GIT. Хорошим тоном считается регулярное создание резервных копий репозитория, что позволяет снизить риск утраты важного актива.
  2. Сборка. После накопления необходимого количества изменений по решению руководителя проекта в CI осуществляется сборка нового релиза проекта.
  3. Контроль. На данном этапе собранный релиз отправляется на функциональное тестирование и проверку безопасности. Все испытания должны обязательно выполняться в тестовой среде и с использованием тестовых данных. По результатам испытаний формируется заключение о возможности промышленной эксплуатации новой версии программы.
  4. Промышленная эксплуатация. Если проект успешно прошел все проверки, тогда он передается в промышленную эксплуатацию, т.е. выпускается новая версия программы. В свою очередь, сборка и внедрение новой версии программы обеспечивается системами CI/CD (Сontinuous Integration/Either Continuous Delivery or Continuous Deployment). Наиболее распространенные системы данного класса обладают всем необходимым функционалом для обеспечения хранения исходного кода, сборки новых версий, запуска задач тестирования и внедрения новых версий программы.

Роль SAST в создании безопасного приложения

Существует два основных варианта интеграции статического анализа кода (SAST) в процесс разработки:

  1. Наиболее правильным является выполнение статического анализа сразу после сборки релиза приложения. В данном случае CI передает собранный релиз на функциональное тестирование и на проверку безопасности. Если в приложении не выявлены функциональные нарушения или уязвимости, CI осуществляет выпуск приложения в промышленную эксплуатацию.
  2. Если процесс непрерывной разработки уже выстроен и функционирует исправно, то есть смысл в реализации параллельной проверки исходного кода. При таком подходе сканер исходного кода осуществляет регулярную проверку репозитория приложения (как правило, ветки Мaster) на наличие уязвимостей. Чаще всего сканирование осуществляется по рабочим дням в часы наименьшей нагрузки, как правило ночью. Отчет о результатах такого исследования направляется ответственным сотрудникам, которые могут принять решение о необходимости оперативного устранения уязвимости.

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

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

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

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

Тестирование при разработке безопасного ПО

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

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

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

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

Темы:Безопасная разработка
Практика защиты персональных данных в 2027 году: требования и инструменты. 14 октября на Форуме ITSEC 2026
Полное расписание мероприятий Форума ITSEC 2026 →

Программа мероприятий
для руководителей и специалистов
по защите информации

Посетить
Статьи по той же темеСтатьи по той же теме

  • SafeERP – новая архитектура защиты бизнес-приложений
    Римма Кулешова, менеджер продукта SafeERP компании “Газинформсервис”
    Признание ERP-систем частью КИИ меняет подход к безопасности бизнес-приложений. На первый план выходят вопросы непрерывного контроля, управления рисками и прозрачности процессов внутри 1С и SAP. Римма Кулешова рассказывает о новой модели защиты ERP и о том, почему безопасность бизнес-логики становится отдельным направлением ИБ.
  • ИИ в аудите смарт-контрактов и проблема масштаба
    Александр Подобных, Независимый эксперт по ИБ в SICP.ueba.su
    Смарт-контракты пишутся быстрее, чем их успевают нормально проверять. Ошибки при этом каждый раз разные – от простых просчетов в логике до сложных сценариев с оракулами и внешними протоколами. Разбор каждого инцидента занимает время, а их становится все больше и больше. В какой-то момент проблема сводится уже не к сложности, а к объему: ручной аудит не успевает покрывать все, что появляется.
  • Когда платформа становится безопаснее, чем безопасник
    Александр Трифанов, руководитель направления Application Security, "Авито"
    В крупных компаниях стало слишком много инженерии. Команды растут, микросервисы множатся, инфраструктура усложняется, а вместе с ней – и стоимость ее поддержки. Поэтому идея внутренних платформ выглядит естественным ответом на хаос. То, что раньше требовало согласований и ручных настроек, теперь превращается в сервис – Platform as a Service, Publication as a Service, Admin as a Service.
  • Как инструменты разработки становятся средствами для кражи криптоактивов
    Дмитрий Пойда, аналитик по расследованиям AML/KYT провайдера “Шард”
    Количество атак на цепочку поставок программного обеспечения в прошлом году выросло на 156% по сравнению с годом ранее, по данным исследования Sonatype. Разберемся, как эта угроза проявляет себя в мире криптовалют, и почему привычные инструменты разработчика становятся орудием злоумышленников.
  • Почему DevSecOps не приживается в АСУ ТП и MES – и как его адаптировать
    Артем Пузанков, руководитель группы внедрения практик безопасной разработки Positive Technologies
    Внедрение DevSecOps стало нормой для ИТ-разработки, однако в промышленных системах этот подход сталкивается с серьезными ограничениями. Приоритеты в этих средах – надежность, непрерывность работы и соблюдение отраслевых стандартов – изначально противоречат динамике CI/CD и гибкости DevOps. Дополнительные препятствия создают закрытые контуры, устаревшие технологии и фрагментированная структура ответственности.
  • Безопасность приложений на базе SAP и 1С начинается с проверки кода
    Екатерина Герлинг, ведущий инженер-аналитик Лаборатории стратегического развития продуктов кибербезопасности Аналитического центра кибербезопасности ООО “Газинформсервис”
    После ухода SAP с российского рынка система 1С стала чуть ли не единственной альтернативой, но разработка под эту платформу требует значительных ресурсов, а специалистов не хватает. При этом анализ и защита кода для таких систем — сложный процесс, требующий специализированных решений. На российском рынке есть решения, которые помогут обеспечить безопасность корпоративных приложений на 1С и SAP.

Хотите сотрудничать?

Выберите вариант!

Печатное издание
Интернет-портал
ВЫСТУПИТЬ НА КОНФЕРЕНЦИЯХ
СТАТЬ АВТОРОМ
13-14 октября приглашаем экспертов и практиков выступить на Форуме ITSEC 2026!
Отправить заявку на участие →

More...
ТБ Форум 2026
13 октября. Защищенный удаленный доступ на Форуме ITSEC 2026
Регистрация открыта →

More...