Главная / О компании / Новости / Обзор рынка инструментов SCA (Software Composition Analysis)

Обзор рынка инструментов SCA (Software Composition Analysis)

« Назад

Обзор рынка инструментов SCA (Software Composition Analysis)  18.01.2023 09:00

Алена Суслина
Независимый эксперт
 
Для любой организации, использующей программное обеспечение с открытым исходным кодом, анализ состава ПО является обязательной частью выявления угроз безопасности. Поэтому компаниям важно использовать инструменты SCA (Software Composition Analysis) в процессе разработки, а также понимать их основные ограничения.
 
Введение
 
Открытый исходный код может содержать критические уязвимости. Недавний пример — широко используемая библиотека Apache Log4j, которая позволяла злоумышленникам выполнять произвольный код на устройствах, чтобы внедрить вредоносный софт или совершить мошенничество. И, к сожалению, этот пример — не единственный.
 
Анализ состава программного обеспечения — это лучший способ найти уязвимости в пакетах с открытым исходным кодом и найти способ их устранения, что даст возможность защитить собственный код и работоспособность приложений.
 
Принципы работы SCA
 
SCA — это процесс определения компонентов (в особенности — с открытым исходным кодом), из которых состоит программное обеспечение, и проверки их безопасности. С использованием SCA команды разработчиков могут быстро отслеживать и анализировать любой опенсорсный компонент, который был добавлен в проект. Инструменты SCA способны находить все связанные компоненты, поддерживающие их библиотеки, а также их прямые и косвенные зависимости. Также SCA-системы могут обнаруживать лицензии на программное обеспечение, устаревшие зависимости, уязвимости и потенциальные эксплойты. В процессе сканирования создаётся спецификация, обеспечивающая полную инвентаризацию программных активов проекта.
 
Инструменты SCA уже давно присутствуют на рынке, но растущее распространение открытого исходного кода за последние несколько лет сделало их ключевым элементом безопасности приложений. Современные подходы к разработке программного обеспечения, в том числе DevSecOps, требуют, чтобы SCA был в первую очередь ориентирован на программистов, предоставляя удобные им инструменты, а также на сотрудников служб безопасности, задача которых — направлять разработчиков, чтобы обеспечить безопасность на всех этапах SDLC.
 
Почему важен анализ компонентов программного обеспечения (SCA)?
 
Компоненты с открытым исходным кодом становятся основными строительными блоками программного обеспечения практически во всех сферах. SCA-системы помогают отслеживать опенсорсные компоненты в составе приложения, что существенно с точки зрения безопасности их применения. Всё больше и больше современных приложений строятся на основе открытого исходного кода. Было подсчитано, что Open Source составляет до 90 процентов кода приложений. При этом одна из проблем заключается в том, что приложения собираются из разных блоков, и все они должны быть защищены, чтобы была возможность эффективно управлять рисками и снижать их.
 
Задачи инструментов SCA
 
SCA — это общий термин для методологий и инструментов безопасности, которые сканируют приложения, обычно во время разработки, для выявления уязвимостей и проблем с лицензиями на программное обеспечение. Чтобы успешно управлять компонентами с открытым исходным кодом и рисками, организации должны решить ряд задач, связанных с тем, как Open Source используется для создания современных приложений.
 
1. Повышение прозрачности. Разработчик может включить в свой код ряд опенсорсных пакетов, которые, в свою очередь, ссылаются на дополнительные пакеты с открытым исходным кодом, о которых разработчик мог и не знать. Эти непрямые зависимости могут иметь несколько уровней глубины, вследствие чего трудно понять, какой открытый исходный код на самом деле используется приложением.
 
Недавно выпущенный доклад Snyk показал, что 86 % уязвимостей node.js обнаруживаются в транзитивных зависимостях. Аналогичны цифры для экосистем Java и Python. Это означает, что подавляющее большинство уязвимостей в приложениях обычно находятся в том открытом исходном коде, об использовании которого разработчики даже не подозревают.
 
Для облачных приложений открытый исходный код также может создать проблемы с прозрачностью. Образы контейнеров могут состоять из различных опенсорс-компонентов, которые также необходимо идентифицировать и протестировать на наличие уязвимостей. Уровень абстракции, который контейнеры предоставляют программистам, является преимуществом с точки зрения разработки, но в то же время слабостью с точки зрения безопасности.
 
2. Понимание логики зависимостей. Для точного определения зависимостей (и уязвимостей, которые они создают) требуется глубокое понимание того, как каждая экосистема их обрабатывает. Важно, чтобы решение SCA учитывало эти нюансы и не порождало излишних ложных срабатываний.
 
3. Оценка приоритета уязвимостей. На данный момент выявленные уязвимости, требующие внимания, уже исчисляются тысячами. Учитывая ограниченный объём ресурсов, имеющихся в распоряжении разработчиков и специалистов по безопасности, крайне сложно расставить приоритеты без необходимого набора знаний по информационной безопасности. Метод оценки уязвимостей CVSS (Common Vulnerability Scoring System) помогает, но имеет несколько недостатков, которые затрудняют его использование. Сбои CVSS в значительной степени связаны с различиями в средах и в том, как они эксплуатируются, проектируются и собираются. Оценки CVSS не учитывают ни возраст уязвимости, ни её использование в цепочках эксплойтов.
 
4. Развитие единой актуальной базы уязвимостей. Значительный объём аналитических данных разбросан по разнообразным источникам: национальные базы, онлайн-форумы, тематические аналитические онлайн-издания по безопасности и т. д. При этом уязвимости могут добавляться туда несвоевременно. Это отставание может иметь решающее значение.
 
5. Повышение скорости безопасной разработки. Код должен пройти проверку на безопасность, прежде чем двигаться далее по релизному процессу. Если соответствующим службам не удастся оперативно провести проверку на наличие уязвимостей, этот процесс может замедлиться. Средства автоматизированной проверки кода позволяют решить эту проблему, так как дают возможность синхронизировать процессы разработки и поиска уязвимостей и не вызывать непредвиденных задержек.
 
Существование перечисленных выше проблем привело к появлению концепции DevSecOps и модели «shift left», в результате чего ответственность за безопасность легла на плечи команд разработчиков. С учётом этого принципа было создано новое поколение решений SCA, которое позволяет проверять безопасность компонентов с открытым исходным кодом на ранних этапах процесса разработки.
 
Особенности подбора и использования SCA
 
SCA-системы существуют уже не менее десяти лет. Но растущая популярность открытого исходного кода, а также изменения в способах сборки приложений изо множества компонентов способствовали формированию целого ряда различных типов решений. Они варьируются от свободно распространяемых сканеров до специализированных коммерческих инструментов и комплексных решений по безопасности приложений. Некоторые решения для разработки и сопровождения ПО также предоставляют базовые возможности SCA.
 
SCA-системы полезно оценивать по следующим возможностям и параметрам:
  • Удобство для разработчиков.
  • Экосистемность и интеграционные возможности.
  • Анализ зависимостей.
  • Обнаружение, приоритизация, исправление уязвимостей.
  • Управление и контроль.
  • Составление отчётов.
  • Автоматизация и расширяемость.
  • Безопасность облачных приложений.
Удобство для разработчиков. Времена, когда служба безопасности просто передавала программистам список уязвимостей для исправления, давно прошли. DevSecOps требует от разработчиков брать на себя больше ответственности за безопасность, но этого не произойдёт, если инструменты, которые они используют, работают против них. Если инструмент SCA слишком сложен в использовании или затрудняет разработку, он не принесёт большой пользы. Таким образом, инструмент SCA должен:
  • быть интуитивно понятным и простым в настройке и использовании;
  • легко интегрироваться с существующими рабочими процессами;
  • автоматизированно предоставлять практические рекомендации по решению проблем.
Экосистемность и интеграционные возможности. Без возможности охватить языки, используемые для создания ваших приложений, или вписаться в вашу среду разработки инструмент SCA будет менее эффективным. Некоторые решения SCA могут обеспечивать полный языковой охват, но при этом не предоставляют, например, подключаемого модуля для Jenkins, позволяющего легко добавлять тестирование безопасности приложений в качестве шага в процессе сборки, или модулей для IDE.
 
Анализ зависимостей. Множество уязвимостей связаны с зависимостями, об использовании которых можно только догадываться. Поэтому при оценке инструмента SCA важно убедиться, что он может точно интерпретировать все зависимости в приложении, чтобы у ответственных специалистов была полная картина.
 
Обнаружение, приоритизация, исправление уязвимостей. Инструмент SCA должен быть способен точно определить, есть ли в опенсорсном пакете уязвимости. Это зависит в том числе от данных по безопасности, на которые он опирается. Именно здесь различия между инструментами SCA становятся более заметными. Некоторые будут полагаться исключительно на общедоступные базы данных. Другие объединяют несколько источников в одну базу, постоянно обновляемую и обогащаемую с использованием различных процессов расширенного анализа. И даже там будут нюансы, относящиеся к качеству базы, точности и полноте интеллектуальных данных, которые она предоставляет.
 
Количество уязвимостей в компонентах с открытым исходным кодом постоянно растёт, каждый год обнаруживаются тысячи новых. Инструменты SCA часто выявляют сотни и даже тысячи брешей, которые быстро накапливаются и легко могут перегрузить команду. Поскольку в действительности невозможно исправить все уязвимости, необходимо решить, какие корректировки обеспечат наибольшую отдачу от затраченного времени. Плохая расстановка приоритетов, из-за которой время тратится на ложные срабатывания, может вызвать трения и снизить уровень доверия со стороны разработчиков.
 
Некоторые средства SCA не ограничиваются детектированием брешей и делают следующий логический шаг — переходят к исправлению уязвимостей. Соответствующие возможности варьируются от инструмента к инструменту, и это касается даже рекомендаций. Одно дело — предложить обновиться до версии, где рассматриваемая уязвимость устранена. Другое дело — рассчитать минимальный путь обновления, чтобы избежать поломок, или, например, автоматически инициировать запрос, когда обнаруживается новая уязвимость с рекомендуемым исправлением.
 
Управление и контроль. Необходимо убедиться, что инструмент SCA предоставляет средства контроля, которые нужны для управления использованием открытого исходного кода в приложениях. Правильно выбранный инструмент SCA должен предоставлять детализированные политики для определения и автоматического применения правил безопасности и комплаенса, принятых в организации.
 
Отчетность. Возможность отслеживать с течением времени различные пакеты с открытым исходным кодом, включая различные лицензии, важна по разным причинам и для разных заинтересованных сторон. Например, специалисты службы безопасности захотят измерить успешность процессов SCA, проанализировав, сколько уязвимостей было выявлено и устранено. Юридические департаменты, скорее всего, будут заинтересованы в инвентаризации всех зависимостей и лицензий, которые влияют на соответствие организации регуляторным требованиям.
 
Автоматизация и расширяемость. Чем больше среда разработки, тем сложнее выполнять все ручные операции, связанные с процессами SCA. Возможность автоматизации таких задач, как добавление новых проектов и пользователей для тестирования или сканирование новых сборок в рамках конвейеров CI / CD, повышает эффективность, а также помогает смягчить конфликты с существующими рабочими процессами, что крайне важно для успешного DevSecOps.
 
Одним из ключевых требований, которые следует учитывать, является наличие надёжного API, так как это обеспечивает более глубокую интеграцию. Дополнительно стоит отметить возможность взаимодействия со смежными системами (SOAR, SIEM) в части получения информации об инцидентах в безопасности.
 
Безопасность управления компонентами приложений. Современные приложения состоят изо множества компонентов, каждый из которых необходимо сканировать и защищать. Отвечающий требованиям времени инструмент SCA должен иметь возможность, по крайней мере, сканировать образы контейнеров на наличие уязвимостей и интегрироваться в рабочие процессы, инструменты и системы, используемые для их создания, тестирования и запуска. Более совершенные решения также предусматривают исправление изъянов.
 
Мировой рынок систем SCA
 
По прогнозам аналитического агентства Mordor Intelligence, рынок SCA-решений вырастет в среднем на 21,7 % в течение прогнозируемого периода с 2021 по 2026 год. Предполагается, что потребность в SCA в основном обусловлена растущим количеством угроз для программ с открытым исходным кодом. Кроме того, ожидается рост количества коммерческих программных продуктов и систем на основе IoT, которые опираются на множество опенсорсных компонентов, находящихся в открытом доступе. 
По мнению аналитиков, Северная Америка будет доминировать на мировом рынке анализаторов состава программного обеспечения с точки зрения доходов в течение ближайших пяти лет благодаря всё более широкому внедрению подобных инструментов в этом регионе. Также в последнее время SCA-инструменты активно масштабируются в Азии и Австралии.  
 
рынок инструментов sca
 
Рисунок 1. Прогнозируемый темп роста SCA-технологий по регионам  
 
Прогрессирующее внедрение множества сервисов и технологий (мобильные платежи, распознавание текста и речи, биометрия и многие другие) определяет рост рынка инструментов для анализа состава программного обеспечения. Ожидается, что растущий спрос на облачные решения также будет способствовать развитию рынка SCA. 
 
Перечень лидеров мирового рынка на данный момент возглавляют компании Synopsys, Sonatype, WhiteHat Security и Veracode. Далее в обзоре будет приведено описание их разработок, а также продуктов других компаний:
  • Black Duck.
  • CAST Highlight.
  • Debricked.
  • FOSSA.
  • GitLab.
  • Mend.
  • ShiftLeft.
  • Snyk.
  • Sonatype Nexus Lifecycle.
  • WhiteHat Sentinel. 
Российский рынок систем SCA
Отечественные производители инструментов статического анализа кода анонсируют отдельные функции SCA в своих решениях. Объём соответствующего сегмента на 2020 год составил не более 6 % от общего размера российского рынка ИБ.
 
В ближайшем будущем ожидается увеличение количества отечественных продуктов на рынке ИБ в России, что, вероятно, будет касаться и SCA-решений. Основными драйверами роста рынка будут, в первую очередь, ускорение тенденции к импортозамещению в связи с уходом зарубежных вендоров из страны, а также повышенное внимание компаний к кибербезопасности из-за ускоренной цифровизации и перестройки бизнес-процессов, вызванной пандемией. Также сильное влияние оказывают периодические резонансные инциденты в сфере безопасности и возможное ужесточение ответственности за них.
 
В следующем разделе приведено описание самого известного из отечественных SCA — CodeScoring.
 
Обзор мирового рынка SCA 2022  
 
Black Duck от компании Synopsys уже более 15 лет предоставляет командам безопасности, юристам и разработчикам по всему миру возможность управлять рисками. Опираясь на базу данных по опенсорсным компонентам, уязвимостям и лицензиям, решения Black Duck проводят анализ и аудит состава программного обеспечения с открытым исходным кодом и предоставляют информацию, которая необходима для его отслеживания. Black Duck предлагает комплексное исследование состава ПО, а также обеспечивает контроль тех рисков в области безопасности, качества и соответствия требованиям, которые могут быть вызваны сторонним и открытым исходным кодом в контейнерах и приложениях. Решение обеспечивает видимость стороннего кода, позволяя управлять им на протяжении всей цепочки поставок программного обеспечения, а также всего жизненного цикла приложения.
 
Подробности — на сайте компании.  
 
CAST Highlight распространяется по схеме SaaS и предназначен для быстрого анализа корпоративного портфеля приложений. Он автоматически анализирует исходный код и состав программ, проверяет отказоустойчивость. Объективные сведения о программном обеспечении, полученные в результате автоматизированного анализа исходного кода, позволяют принимать более обоснованные решения. Технология CAST может «заглянуть внутрь» пользовательских приложений, автоматически собирая информацию об их составе, архитектуре, потоках транзакций, структурных недостатках, юридических рисках и проблемах безопасности. Инструмент позволяет быстро проводить миграцию в облако, повышать скорость и эффективность разработки программного обеспечения, а также обеспечивать контроль рисков применительно к  открытому исходному коду. CAST работает по всему миру с офисами в Северной Америке, Европе, Индии, Китае.
 
Подробности — на сайте компании.
 
CodeScoring - Одним из первых SCA-анализаторов на отечественном рынке является CodeScoring от компании Profiscope. Функциональность CodeScoring позволяет управлять рисками в отношении применяемых опенсорс-компонентов и собственного кода (в т. ч. в области лицензионной чистоты), генерировать спецификацию ПО (SBOM), анализировать качество кода с точки зрения операционных рисков. Инструмент развивается и в данный момент позволяет закрыть основные потребности по построению процессов безопасной разработки с Open Source.
 
Система обеспечивает возможность встраивания на всех этапах SDLC через интеграцию с необходимыми смежными системами: блокирование нежелательных компонентов в прокси-репозиториях, проверка и блокирование сборок продуктов в CI-конвейерах, непрерывный риск-мониторинг веток и тегов в репозиториях. Для каждого этапа жизненного цикла возможно настроить гибкие политики безопасной разработки: от блокирования нежелательных компонентов и уведомления ответственных специалистов до сигнализации в смежные системы.
 
К преимуществам решения можно отнести наличие функции OSS Firewall для прокси-репозиториев и возможность ретроспективного мониторинга компонентов, расширенные политики, обеспечивающие защиту от известных типов атак на цепочку поставки ПО, возможность автообнаружения зависимостей (включая разрешение транзитивных зависимостей и нахождение OSS-включений), модерируемую вендором базу уязвимостей, собственную базу Open Source с метаданными, повышающими гибкость и точность работы политик.
 
Подробности — на сайте компании.  
 
Debricked основан на машинном обучении; благодаря этому повышается точность его работы, обеспечиваются высокое качество данных и оперативное обновление. Он постоянно отслеживает код и уведомляет всякий раз, когда обнаруживается новая уязвимость. Инструмент помогает разработчикам, обеспечивая соответствие открытого исходного кода автоматизированным и обязательным правилам конвейера. Он также рассчитывает уровни риска для репозиториев на основе предполагаемого использования. В итоге появляется возможность более широко использовать Open Source и не беспокоиться при этом о вероятных проблемах в области безопасности.
 
Подробности — на сайте компании.  
 
FOSSA - Флагманский продукт FOSSA позволяет отслеживать открытый исходный код, а также автоматизирует сканирование лицензий и обеспечение соответствия нормативным требованиям. Инструменты FOSSA использовались в интересах более чем 7000 проектов с открытым исходным кодом (Kubernetes Webpack, Terraform и ESLint), а также применялись такими компаниями, как Uber, Ford, Zendesk и Motorola. Помимо анализа уязвимостей в инструменте сделан акцент на лицензиях и авторских правах. Исследовательская группа юридических консультантов сервиса непрерывно поддерживает информацию в общедоступной базе по лицензированию в актуальном состоянии.
 
Подробности — на сайте компании.
 
GitLab — это полноценная платформа DevOps, реализованная в одном приложении. GitLab предоставляет полный набор инструментов CI / CD «из коробки», что упрощает настройку и интеграцию. GitLab сокращает время и затраты на разработку, уменьшает количество уязвимостей в приложениях и ускоряет доставку ПО. Также решение обеспечивает координацию и совместную деятельность всей группы разработчиков программного обеспечения. Дефекты в коде можно выявлять с помощью асинхронного просмотра. Кроме того, инструмент предлагает агрегированный список запросов на слияние для всех проектов в группе, позволяя выявлять и обрабатывать нерелевантные запросы такого рода. Доступна возможность создавать и экспортировать отчёт о цепочке поставок.
 
Подробности — на сайте компании.  
 
Mend (ранее WhiteSource) — решение для гибкого управления безопасностью открытого исходного кода и соблюдения требований лицензий. Интегрируется с конвейером DevOps в режиме реального времени для обнаружения уязвимых опенсорсных библиотек. Инструмент выполняет автоматизацию политик и предлагает пути исправления изъянов, а также позволяет устанавливать приоритеты предупреждений об уязвимостях. Mend поддерживает более 200 языков программирования и одну из самых больших баз данных уязвимостей, объединяющую информацию из десятков источников. Единый интерфейс для пользовательского и открытого исходного кода обеспечивает максимальную эффективность и простоту.
 
Подробности — на сайте компании.
 
ShiftLeft - Этот инструмент автоматически сканирует код ежедневно, еженедельно или при запросе на его включение в проект. Он повышает производительность разработчиков, устраняя многочисленные ложные срабатывания других инструментов SCA. Это помогает выявлять уязвимости и определять, следует ли обновить библиотеку или просто очистить путь к данным. ShiftLeft можно назвать одним из самых быстрых инструментов такого рода. Его использование ускоряет разработку благодаря тому, что появляется возможность оперативно исправлять уязвимые для атак библиотеки с открытым исходным кодом, не тратя время разработчиков на ненужные обновления.
 
Подробности — на сайте компании.  
 
Snyk — инструмент, который очень удобен именно для разработчиков. Он предлагает простую интеграцию в SDLC с поддержкой всех основных IDE, автоматическим исправлением уязвимостей безопасности и визуализацией зависимостей. Snyk предлагает универсальное решение как для программного обеспечения с открытым исходным кодом, так и для контейнеров. Есть возможность создания пользовательских исправлений для случаев, когда вендор ещё не выпустил необходимых патчей. Впрочем, несмотря на свою ориентированность на разработчиков, Snyk поддерживает только девять языков программирования. Отсутствует также поддержка файлов с исходным кодом. Snyk нуждается в более качественном стандартном аудите и отчётности по рискам, и если есть необходимость предоставлять отчёты специалистам по безопасности или юридическим отделам, то следует выбирать другой инструмент, так как Snyk не представляет достаточного уровня детализации для корпоративного использования.
 
Подробности — на сайте компании.  
 
Sonatype Nexus Lifecycle - Этот продукт используют более 100 000 организаций по всему миру. Он совместим с компонентами Maven / Java, npm и NuGet, Helm и Docker, OBR, APT и GO, компонентами R и многими другими. Все компоненты, двоичные файлы и артефакты доступны из одного источника. В решение включена расширенная поддержка виртуальной машины Java (JVM), включая Gradle, Ant и Maven, а также Ivy. Совместим с Eclipse, IntelliJ и Hudson, Jenkins, Puppets, Chef, Docker и многими другими популярными инструментами. Является источником достоверной информации для всех компонентов на протяжении всего жизненного цикла разработки, включая контроль качества, подготовку и эксплуатацию. Доступна интеграция с существующими системами обеспечения доступа пользователей, такими как LDAP, Atlassian Crowd и другими.
 
Подробности — на сайте компании.  
 
WhiteHat Sentinel построен по принципу SaaS, разработан с нуля для массового масштабирования и поддержки крупнейших предприятий. В отличие от традиционного программного обеспечения WhiteHat Sentinel сочетает патентованную технологию сканирования с «человеческим» тестированием силами центра исследования угроз — группы экспертов по безопасности веб-сайтов. Продукт постоянно сканирует веб-сайты по мере их развития, автоматически обнаруживая и оценивая изменения кода и уязвимости, а затем отчёт проходит дополнительную верификацию на стороне специалистов центра исследования угроз. Хорошо подходит для гибкой разработки, так как позволяет обеспечить интеграцию с ключевыми инструментами разработчика и поддержку процессов CI / CD.
 
Подробности — на сайте компании.
 
Выводы
 
Каждая организация имеет разные потребности, которые будут различаться в зависимости от различных факторов, таких как технологический стек, вариант использования и, конечно же, доступный бюджет и приоритеты безопасности. Не существует универсального инструмента SCA.
 
Но, по крайней мере, если приходится принимать поспешные решения, необходимо убедиться, что выбранный инструмент SCA способен точно обнаружить все используемые компоненты с открытым исходным кодом, а также любые уязвимости и лицензии, связанные с ними.