Solar inCode как часть непрерывного процесса безопасной разработки

Solar inCode как часть непрерывного процесса безопасной разработки

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

 

  1. Введение
  2. Жизненный цикл разработки системы и безопасность
  3. Функциональные возможности Solar inCode
  4. Способы интеграции Solar inCode в процесс разработки
    1. 4.1. Интеграция с багтрекером JIRA
    2. 4.2. Интеграция со средствами сборки
    3. 4.3. Плагин к серверам непрерывной интеграции
    4. 4.4. Интеграция с IDE
    5. 4.5. Интеграция с Git-репозиторием
  5. Выводы

 

Введение

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

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

 

Жизненный цикл разработки системы и безопасность

Жизненный цикл разработки системы (SDLC — System Development Life Cycle) — это термин, используемый в системах проектирования, информационных системах и разработке программного обеспечения для описания процесса планирования, создания, тестирования и развертывания информационной системы. SDLC нацелен на создание высококачественных систем, которые отвечают или превосходят ожидания клиентов и удовлетворяют требованиям заказчика, путем разделения процесса разработки на стадии со своими сроками и трудозатратами.

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

  1. Формулировка требований к приложению.
  2. Разработка дизайна и архитектуры приложения.
  3. Разработка программного обеспечения.
  4. Тестирование.
  5. Деплой приложения.
  6. Техническая поддержка.

 

Рисунок 1. Визуализация этапов SDLC

Визуализация этапов SDLC

 

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

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

Сделать проверку кода на безопасность неотъемлемой частью процесса разработки помогает решение Solar inCode.

 

Функциональные возможности Solar inCode

Ниже перечислены основные возможности и преимущества Solar inCode:

  1. Статический анализ кода web-приложений, написанных на языках Java, Scala, Kotlin, Groovy, PHP, Javascript, C#, PL/SQL, Python, T-SQL, C/C++, Visual Basic 6.0, Ruby, Delphi, ABAP, HTML5, Solidity, Go.
  2. Статический анализ кода мобильных приложений для платформ iOS и Android.
  3. Статический анализ бинарного кода для Java/Scala, C/C++, iOS, Android и macOS-приложений.
  4. Простой и удобный интерфейс.
  5. Возможность загружать приложение для анализа с локального компьютера, из репозитория, а также из Google Play и App Store (для мобильных приложений).
  6. Возможность выгружать отчеты в форматах pdf и html, в том числе с классификацией уязвимостей по OWASP Top 10 2013/2017, Owasp Mobile Top 10 2014/2016, PCI DSS 3.2, CWE/SANS Top 25 и HIPAA.
  7. Формирование рекомендаций по настройке СЗИ для временного «закрытия» уязвимости.
  8. API, позволяющий интегрировать продукт в процесс разработки.

 

Способы интеграции Solar inCode в процесс разработки

Вся функциональность Solar inCode помимо графического интерфейса доступна через программный интерфейс, а именно через инструмент командной строки, JSON API и REST API. Наличие программного интерфейса позволяет интегрировать Solar inCode с любыми продуктами, задействованными в разработке программного обеспечения. На данный момент реализована интеграция с багтрекером JIRA, со средствами сборки (maven, gradle, sbt), с серверами непрерывной интеграции (Jenkins, TeamCity), со средой разработки Eclipse и с репозиторием Git.

Интеграция с багтрекером JIRA

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

 

Рисунок 2. Форма создания новой задачи

Форма создания новой задачи

 

Так как Solar inCode от сканирования к сканированию отслеживает уязвимости, определяя, какие из них новые, а какие были обнаружены и при предыдущих сканированиях, то и созданные в Jira задачи и статус их выполнения для старых уязвимостей также отслеживаются.

 

Рисунок 3. Статус задачи Jira в интерфейсе Solar inCode

Статус задачи Jira в интерфейсе Solar inCode

 

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

Интеграция со средствами сборки

Интеграция со средствами сборки происходит с помощью инструмента командной строки. После выполнения простой настройки конфигурационных файлов соответствующего средства сборки запуск анализа в Solar inCode становится доступным через существующую или новую команду средства сборки. Ниже представлены примеры интеграции Solar inCode со средствами сборки maven, gradle и sbt.

Интеграция с maven

В основном файле проекта pom.xml внутри тега <build> указываются используемые плагины. В качестве одного из них можно указать плагин к Solar inCode, чтобы при выполнении определенной команды mvn, например mvn compile, происходило сканирование приложения на наличие уязвимостей. Ниже приведен пример, как может выглядеть настройка файла pom.xml, чтобы при выполнении команды mvn compile запускался анализ приложения в Solar inCode. В качестве аргумента token указывается токен авторизации, который можно получить в личном кабинете Solar inCode.

 

Рисунок 4. Настройка pom.xml

Настройка pom.xml

 

Интеграция с gradle

Интеграция с gradle происходит схожим образом. В файл build.gradle в тело функции classes.doLast() необходимо поместить функцию javaexec с требуемыми аргументами, например:

javaexec {main="-jar"; args = ["C:\inCode\clt.jar",

    "-path", workingDir,

    "-token", "your_token",

    "-type", "FILE",

    "-rest", "http://localhost:8080/inCode/rest/"]}

Таким образом, используя команду gradle build, можно одновременно со сборкой запускать анализ приложения на наличие уязвимостей.

Интеграция с sbt

Чтобы запускать анализ, используя sbt, необходимо создать новую команду в файле build.sbt:

import scala.sys.process._

val runInCode= TaskKey[Unit]("runincode")

runInCode := {

"java -jar C:/inCode/clt.jar -token "your_token" -type FILE -rest http://localhost:8080/inCode/rest/ -path " + baseDirectory.value !}

Запустить анализ после такой настройки можно с помощью команды sbt runincode.

Плагин к серверам непрерывной интеграции

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

Интеграция с Jenkins

После запуска плагина Solar inCode при создании задачи в Jenkins можно добавить дополнительный шаг сборки Execute inCode Static Analysis и указать необходимые настройки для анализа. Также в разделе послесборочных операций есть возможность добавить inCode Static Analysis pdf-report. Таким образом, после завершения сборки будет доступен отчет со всеми уязвимостями, найденными в процессе анализа приложения.

 

Рисунок 5. Дополнительный шаг сборки в Jenkins

Дополнительный шаг сборки в Jenkins

 

Интеграция с TeamCity

Для добавления анализа приложения в качестве дополнительного шага автоматизированной сборки необходимо установить плагин Solar inCode на странице Administrations. Все необходимые настройки проекта можно установить через интерфейс TeamCity при добавлении Build Step. Таким образом, сборка будет включать сканирование приложения статическим анализатором Solar inCode. После завершения сборки можно посмотреть основные результаты сканирования, а также скачать отчет в формате .html и .pdf.

Интеграция с IDE

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

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

 

Рисунок 6. Верхнее меню Eclipse после установки плагина Solar inCode

Верхнее меню Eclipse после установки плагина Solar inCode

 

Интеграция с Git-репозиторием

В Solar inCode есть возможность загружать приложение на анализ, используя ссылку на общедоступный git-репозиторий. Для этого необходимо выбрать соответствующий способ загрузки проекта и указать путь к репозиторию с исходным кодом приложения. Чтобы проанализировать новую версию кода в репозитории, достаточно нажать на кнопку «Пересканировать» в интерфейсе Solar inCode.

 

Рисунок 7. Загрузка приложения из репозитория

Загрузка приложения из репозитория

 

Выводы

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

Полезные ссылки: 
Anti-Malware Яндекс ДзенПодписывайтесь на канал "Anti-Malware" в Telegram, чтобы первыми узнавать о новостях и наших эксклюзивных материалах по информационной безопасности.

RSS: Новые статьи на Anti-Malware.ru