СИСТЕМАТИЗАЦІЯ ТА КЛАСИФІКАЦІЯ СУЧАСНИХ МЕТОДІВ СТАТИЧНОГО АНАЛІЗУ ВЕБДОДАТКІВ
DOI:
https://doi.org/10.28925/2663-4023.2025.30.957Ключові слова:
кібербезпека, статичний аналіз коду, SAST, DevSecOps, безпека додатків, OWASP Benchmark, хибнопозитивні спрацювання, хибнонегативні спрацювання, SonarQube, CodeQL, Semgrep, аналіз потоків даних, метрики якості, управління ризиками.Анотація
Стаття присвячена аналізу сучасного стану статичного тестування безпеки додатків (SAST), що є ключовим компонентом практик DevSecOps. Представлено огляд фундаментальних методологій, які лежать в основі SAST-інструментів: від синтаксичного аналізу на основі правил і патернів, що працює з абстрактними синтаксичними деревами (AST), до більш складних семантичних підходів — аналізу потоків даних (DFA) на графах потоку керування (CFG), абстрактної інтерпретації та символьного виконання. Центральним елементом дослідження є емпіричне порівняння трьох провідних інструментів з відкритим вихідним кодом: SonarQube, який еволюціонував із платформи контролю якості коду; Semgrep, орієнтований на швидкість і легкість інтеграції в CI/CD; та GitHub CodeQL, що застосовує інноваційний підхід до представлення коду у вигляді реляційної бази даних для глибокого семантичного аналізу. Для об’єктивної оцінки їхньої продуктивності використано стандартизований набір тестів OWASP Benchmark, який дозволив виміряти ключові метрики: прецизійність (Precision), повноту (Recall), F1-Score та рівень хибнопозитивних спрацювань (FPR). Результати кількісного аналізу виявили суттєві відмінності: CodeQL продемонстрував найвищу збалансовану ефективність (F1-Score = 87,8 %) завдяки високій повноті виявлення складних вразливостей, пов’язаних із потоками даних, хоча й за рахунок тривалого часу сканування; Semgrep забезпечив оптимальне співвідношення швидкості та точності (F1-Score = 70,3 %), що робить його придатним для швидких ітерацій у конвеєрах CI/CD; натомість SonarQube показав найнижчу ефективність (F1-Score = 49,8 %), пропускаючи понад 60 % реальних вразливостей, що підтверджує обмеження неспеціалізованих рішень у задачах безпеки. Дослідження доводить, що вибір SAST-інструмента є не лише технічним, а й стратегічним рішенням, яке потребує ретельного аналізу компромісів між глибиною аналізу, рівнем «шуму» та швидкістю інтеграції для формування ефективної й збалансованої програми безпеки вебдодатків.
Завантаження
Посилання
Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools (2nd ed., pp. 399–410). Addison-Wesley. ISBN 978-0-321-48681-3.
Arxiv. (2024). Evaluation of static analysis tools for vulnerability detection. Retrieved from https://arxiv.org/abs/2405.12333
Benmoshe, N. (2024). A simple solution for the inverse distance weighting interpolation (IDW) clustering problem. Sciences, 7(1), 30. https://doi.org/10.3390/sci7010030
Codacy Blog. (n.d.). What is static code analysis? Retrieved from https://blog.codacy.com/static-code-analysis
Cousot, P. (2024). A personal historical perspective on abstract interpretation. Retrieved from https://cs.nyu.edu/~pcousot/publications.www/Cousot-FSP-2024.pdf
Datadog. (n.d.). Static analysis overview. Retrieved from https://www.datadoghq.com/knowledge-center/static-analysis
DO-178C software compliance for aerospace and defense. (n.d.). Parasoft Learning Center. Retrieved from https://www.parasoft.com/learning-center/do-178c/static-analysis/
Ilienko, A., Spys, D., Halata, L., & Dubchak, O. (2022). System approach to web application security: Analysis of threats and methods of cyber protection. Ukrainian Information Security Research Journal, 26(2), 277–293. https://doi.org/10.18372/2410-7840.26.20022
National Institute of Standards and Technology (NIST). (2002). The economic impacts of inadequate infrastructure for software testing (RTI Project Number 7007.011). Retrieved from https://www.nist.gov/system/files/documents/director/planning/report02-3.pdf
Nielson, F., Nielson, H. R., & Hankin, C. (1999). Principles of program analysis (pp. 31–43). Springer.
OWASP Foundation. (n.d.). Static code analysis. Retrieved from https://owasp.org/www-community/controls/Static_Code_Analysis
OWASP Benchmark Project. (n.d.). OWASP Benchmark Project. Retrieved from https://owasp.org/www-project-benchmark/
ResearchGate. (2024). Systematic survey on large language models for static code analysis. Retrieved from https://www.researchgate.net/publication/392909246
ResearchGate. (2015). Improving static analysis performance using rule-filtering technique. Retrieved from https://www.researchgate.net/profile/Deng-Chen-6/publication/277817158_Improving_Static_Analysis_Performance_Using_Rule-Filtering_Technique/links/557514a908ae7536374ff5a0/Improving-Static-Analysis-Performance-Using-Rule-Filtering-Technique.pdf
Self-composition by symbolic execution. (n.d.). ResearchGate. Retrieved from https://www.researchgate.net/publication/268022643_Self-composition_by_symbolic_execution
Survey on static analysis tools of Python programs. (2019). CEUR Workshop Proceedings, 2508. Retrieved from https://ceur-ws.org/Vol-2508/paper-gul.pdf
Wired. (n.d.). How Facebook catches bugs in huge codebases. Retrieved from https://www.wired.com/story/facebook-zoncolan-static-analysis-tool
What is static code analysis? A comprehensive guide to transform your code quality. (n.d.). CodeSecure. Retrieved from https://codesecure.com/our-white-papers/what-is-static-code-analysis-comprehensive-guide-to-transform-code-quality/
Опубліковано
Як цитувати
Номер
Розділ
Ліцензія
Авторське право (c) 2025 Денис Спис, Анна Ільєнко

Ця робота ліцензується відповідно до Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.