Статья опубликована в рамках: CCXLI Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 30 июля 2026 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
МЕТОД ВЫЯВЛЕНИЯ УЯЗВИМОСТЕЙ В API-ИНТЕРФЕЙСАХ ВЕБ-ПРИЛОЖЕНИЙ С ПРИМЕНЕНИЕМ СТАТИЧЕСКОГО АНАЛИЗА КОДА
METHOD FOR VULNERABILITY DETECTION IN WEB APPLICATION API INTERFACES USING STATIC CODE ANALYSIS
Bilyak Nikita Igorevich
Student, Moscow State University of Technology "STANKIN",
Russia, Moscow
АННОТАЦИЯ
Цель: повышение полноты и точности выявления уязвимостей в API веб-приложений на этапе разработки, до передачи кода в эксплуатацию. Метод: сравнительный анализ существующих инструментов статического анализа кода (SAST), функциональное моделирование процесса проверки API-эндпоинтов, экспериментальная проверка на наборе тестовых веб-сервисов. Результат: разработан метод, включающий построение графа вызовов API, сопоставление параметров запросов с шаблонами уязвимых конструкций и приоритизацию найденных дефектов по критичности. Выводы: применение метода снижает долю ложноположительных срабатываний и позволяет обнаруживать уязвимости уровня бизнес-логики, недоступные типовым SAST-инструментам.
ABSTRACT
Background: improving the completeness and accuracy of vulnerability detection in web application APIs at the development stage, before the code is deployed to production. Methods: comparative analysis of existing static application security testing (SAST) tools, functional modelling of the API endpoint verification process, experimental evaluation on a set of test web services. Result: a method has been developed that includes building an API call graph, matching request parameters against templates of vulnerable constructs, and prioritising the detected defects by severity. Conclusion: applying the method reduces the share of false positives and enables detection of business-logic-level vulnerabilities that are inaccessible to conventional SAST tools.
Ключевые слова: статический анализ кода; безопасность API; веб-приложения; выявление уязвимостей; SAST.
Keywords: static code analysis; API security; web applications; vulnerability detection; SAST.
Веб-приложения всё чаще строятся вокруг API как основного канала взаимодействия клиентской части, мобильных приложений и сторонних сервисов с серверной логикой. Рост числа эндпоинтов и частоты релизов приводит к тому, что ручная проверка кода на предмет уязвимостей не успевает за темпом разработки, а ошибки в обработке параметров запроса становятся причиной значительной доли инцидентов информационной безопасности [1, с. 14].
Существующие инструменты статического анализа сосредоточены преимущественно на поиске типовых уязвимостей — инъекций и небезопасной десериализации, — но слабо справляются с ошибками уровня бизнес-логики: некорректной проверкой прав доступа между связанными объектами, избыточным раскрытием данных в ответах API, отсутствием ограничений на массовое присвоение полей [2, с. 233]. Это подтверждается и систематизацией типовых угроз API, согласно которой большинство критичных дефектов относится не к синтаксическим ошибкам, а к нарушениям логики авторизации и валидации [3]. Кроме того, типовые SAST-инструменты анализируют файлы кода изолированно и не учитывают структуру API как графа взаимосвязанных эндпоинтов, что приводит к высокой доле ложноположительных срабатываний и требует значительных трудозатрат на ручную верификацию результатов.
Целью работы является разработка метода статического анализа, повышающего полноту выявления уязвимостей API за счёт учёта связей между эндпоинтами и контекста передачи параметров. Материалом исследования послужили открытые REST API тестовых веб-сервисов, а также база типовых сценариев атак на уровне бизнес-логики. Применялись методы статического анализа исходного кода, построения графов вызовов и сравнительный анализ существующих решений — Semgrep, CodeQL и SonarQube [4, с. 96; 5, с. 152].
Разработанный метод включает три последовательных этапа. На первом этапе выполняется построение графа вызовов API: по исходному коду сервиса извлекаются описания эндпоинтов, типы передаваемых параметров и связи между обработчиками запросов, включая обращения к общим моделям данных. Граф служит основой для последующего анализа, поскольку уязвимость нередко возникает не в отдельном обработчике, а на стыке нескольких эндпоинтов, использующих один и тот же объект без согласованной проверки прав доступа.
На втором этапе параметры каждого запроса сопоставляются с библиотекой шаблонов уязвимых конструкций: отсутствие ограничений на изменяемые поля объекта, прямые ссылки на идентификаторы без проверки принадлежности объекта пользователю, передача чувствительных полей в ответе без фильтрации. Сопоставление выполняется с учётом типа параметра и его происхождения — тела запроса, строки адреса или заголовка, — что позволяет отличать безопасные способы передачи данных от потенциально опасных.
На третьем этапе найденные дефекты приоритизируются по критичности: учитывается доступность эндпоинта без аутентификации, характер связанных данных и число зависимых обработчиков, использующих тот же объект. Такая приоритизация сокращает число дефектов, требующих первоочередного внимания разработчика, и снижает вероятность игнорирования отчёта анализа из-за избыточного количества низкоприоритетных предупреждений [6]. Сводные критерии этапов приведены в таблице 1.
Таблица 1.
Критерии этапов метода выявления уязвимостей API
|
Этап метода |
Технический признак |
Результат |
Механизм обработки |
|
Построение графа вызовов |
Общие модели данных у нескольких эндпоинтов |
Карта связей API |
Формирование графа для последующего анализа |
|
Сопоставление с шаблонами |
Небезопасный параметр запроса |
Потенциальная уязвимость |
Регистрация дефекта с указанием эндпоинта |
|
Приоритизация дефектов |
Доступность без аутентификации |
Критичный дефект |
Первоочередная передача разработчику |
Экспериментальная проверка метода выполнена на наборе из нескольких тестовых веб-сервисов с заведомо внедрёнными уязвимостями уровня бизнес-логики. По сравнению с типовым SAST-инструментом, анализирующим файлы изолированно, применение графа вызовов позволило дополнительно обнаружить дефекты, связанные с отсутствием проверки принадлежности объекта пользователю, которые не выявляются при анализе отдельного обработчика вне контекста связанных эндпоинтов [7]. Приоритизация по критичности сократила число предупреждений, вынесенных на ручную проверку в первую очередь.
Функциональный анализ выявил два ограничения предложенного метода: качество построения графа вызовов зависит от полноты статической типизации кода, а библиотека шаблонов уязвимых конструкций требует регулярного пополнения по мере появления новых классов атак на API. Снижение влияния обоих факторов возможно за счёт сочетания статического анализа с динамическим тестированием на этапе интеграционных проверок.
Предложенный метод расширяет возможности статического анализа за счёт учёта структуры API как графа взаимосвязанных эндпоинтов и приоритизации найденных дефектов по критичности. Это позволяет выявлять уязвимости уровня бизнес-логики, недоступные типовым SAST-инструментам, и снижает трудозатраты на ручную верификацию результатов анализа, что создаёт основу для встраивания метода в процесс непрерывной интеграции.
Список литературы:
- Марков А.С., Цирлов В.Л., Барабанов А.В. Технологии анализа и устранения уязвимостей в программном обеспечении. — М.: Радио и связь, 2022. — 240 с.
- McGraw G. Software Security: Building Security In. — Boston: Addison-Wesley, 2019. — 448 p.
- OWASP API Security Top 10 [Электронный ресурс]. — URL: https://owasp.org/API-Security/ (дата обращения: 29.07.2026).
- Chess B., West J. Secure Programming with Static Analysis. — Boston: Addison-Wesley, 2021. — 624 p.
- Semgrep Documentation [Электронный ресурс]. — URL: https://semgrep.dev/docs/ (дата обращения: 29.07.2026).
- ГОСТ Р 56939-2024. Защита информации. Разработка безопасного программного обеспечения. Общие требования. — М.: Стандартинформ, 2024. — 28 c.
- CodeQL Documentation [Электронный ресурс]. — URL: https://codeql.github.com/docs/ (дата обращения: 29.07.2026).
дипломов

