Composition Analysis Tool — новый взгляд на безопасность. Эволюция композиционного анализа отражает зрелость индустрии

BIS Journal №4(59)2025

19 декабря, 2025

Composition Analysis Tool — новый взгляд на безопасность. Эволюция композиционного анализа отражает зрелость индустрии

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

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

 

Всегда ли библиотека с уязвимостью несёт риски

Современные приложения создаются не изолированно, а из множества готовых компонентов. Библиотеки, фреймворки и открытые модули стали неотъемлемой частью разработки: они позволяют ускорять работу, снижать издержки и концентрироваться на функциональности, а не на базовых механизмах. Однако вместе с этим возникла и обратная сторона – зависимость от чужого кода означает унаследованные риски. Если в стороннем компоненте обнаружена уязвимость, под вопросом оказывается безопасность всей системы [1], [2].

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

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

Для разработчиков и команд безопасности это оборачивается значительным объёмом ложных срабатываний. Отчёты содержат десятки и сотни «уязвимых» зависимостей, из которых лишь малая часть действительно может повлиять на безопасность продукта. Реальные риски теряются среди формальных предупреждений, а ресурсы расходуются на анализ малозначимых инцидентов.

Главная причина этого – отсутствие контекста. Без понимания того, используется ли уязвимый участок кода в реальности, невозможно определить, есть ли фактическая угроза эксплуатации. Даже если компонент формально содержит уязвимость, она может оставаться недостижимой и не влиять на поведение приложения.

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

 

Методы, формирующие контекст в композиционном анализе

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

Ключевым элементом стал синтаксический разбор с построением абстрактного синтаксического дерева (AST). Это дерево описывает структуру программы: функции, классы, зависимости и взаимосвязи между ними. Анализируя такую структуру, система может определить, какие участки библиотеки связаны с исполняемым кодом, а какие остаются неиспользованными.

Следующий шаг – построение графа вызовов [3]. Он отражает последовательность обращений между функциями, включая связи между собственным кодом и внешними библиотеками. С его помощью можно проследить, ведёт ли цепочка вызовов к уязвимой функции или нет. Если уязвимый участок не имеет ни прямого, ни косвенного пути вызова, вероятность эксплуатации минимальна (рис. 1).

Рисунок 1. Граф вызова функций

 

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

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

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

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

 

Снижение количества ложноположительных срабатываний

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

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

Контекстное понимание создаёт баланс между безопасностью и скоростью разработки. Оно позволяет планировать изменения осознанно, не тормозя процессы и не жертвуя качеством. Безопасность перестаёт быть барьером – она становится частью стратегического управления кодом, встроенной в цикл создания продукта.

На уровне отрасли это отражает переход к новой культуре работы с открытым кодом. Когда большинство решений строится на внешних библиотеках, важно понимать не только их состав, но и контекст использования. Ценность теперь определяется не объёмом собранных данных, а умением выделить действительно значимые связи между компонентами.

Именно вокруг этой идеи сегодня формируются новые инструменты. Их задача – объединить структурный анализ, построение графов вызовов и исследование потоков данных в единую систему, способную наглядно показать связи между уязвимостями, кодом и архитектурой приложения. Это переход от пассивного мониторинга к активному управлению безопасностью – к «умному» анализу, работающему на опережение.

В настоящее время ведётся разработка решения, использующего этот подход на практике. Его цель – создать инструмент, который помогает видеть полную картину: где именно в коде проявляется уязвимость, каким образом она может быть достигнута и какие пути её устранения наиболее эффективны. Фрагмент интерфейса разрабатываемой системы приведён на рисунке 2.

Рисунок 2. Интерфейс программы

 

Заключение

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

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

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

 

[1] Арустамян С.С., Вареница В.В., Марков А.С. Методические и реализационные аспекты внедрения процессов разработки безопасного программного обеспечения // Безопасность информационных технологий. — 2023. — Т. 30, № 2. — С. 23-37.  DOI: 10.26583/bit.2023.2.01

[2] Вареница В.В., Марков А.С., Цирлов В.Л., Арустамян Р.С., Арустамян С.С., Антипов И.С., Магакелова Н.А. Как избежать ошибок при безопасной разработке программного обеспечения. — М.: Квант-медиа, Москва, 2025. — 344 с.

[3] Марков А.С., Антипов И.С., Арустамян С.С., Магакелова Н.А. Сравнительный анализ и выбор статических анализаторов безопасности кода // Вопросы кибербезопасности. 2024. № 5 (63). С. 79-88.

 

Реклама. АО «НПО "ЭШЕЛОН"», ИНН: 7718676447, Erid: 2VfnxwwrGkZ

Стать автором BIS Journal

Смотрите также

Подписаться на новости BIS Journal / Медиа группы Авангард

Подписаться
Введите ваш E-mail

Отправляя данную форму вы соглашаетесь с политикой конфиденциальности персональных данных

19.12.2025
Пентагон видит в ISACA глобальный орган по контролю за ИБ-стандартами
18.12.2025
Эксперт: Продление жизни карт «Мир» грозит ростом скамерской активности
18.12.2025
ИИ-разработчики сами боятся утратить навыки из-за засилья нейросетей
18.12.2025
Max берёт возможный максимум
18.12.2025
ЛК: Геймерам угрожает новый инфокрад
18.12.2025
NCSC будет бороться со скамерами на основе «иллюзии обмана»
17.12.2025
ITRC: Малый бизнес в США страдает от латентного «киберналога»
17.12.2025
Угон аккаунта в Max будет равносилен компрометации онлайн-банка
17.12.2025
В 2026 году число кибератак на российские компании может вырасти на 35%
17.12.2025
Россиянам выдадут коробку с QR-кодами на случай шатдаунов

Стать автором BIS Journal

Поля, обозначенные звездочкой, обязательные для заполнения!

Отправляя данную форму вы соглашаетесь с политикой конфиденциальности персональных данных