Некоторые методы обнаружения уязвимостей в Java-приложениях:
- Статический анализ. 15 Подразумевает три этапа работы с кодом: построение промежуточного представления, запуск ядра статического анализа и поиск программных уязвимостей с помощью базы правил поиска уязвимостей. 5 Некоторые инструменты статического анализа: FindSecBugs, PMD, Infer и ErrorProne. 1
- Динамический анализ. 2 Метод тестирования с помощью специализированных инструментов для анализа работающего приложения и выявления уязвимостей путём моделирования реальных сценариев атак. 2
- Сканирование на уязвимости. 3 Сканеры работают по принципу антивирусных систем. 3 Обнаруженные уязвимости устраняются в следующей версии компонента, а одновременно с этим их вносят в базу данных. 3 После анализа сканер генерирует лог-файл с перечнем обнаруженных проблем с присвоенным рейтингом критичности и вариантами их устранения. 3
- Подходы на основе машинного и глубокого обучения. 4 Такие подходы могут помочь снизить число ложных ответов от анализатора, обнаруживать новые и неизвестные примеры уязвимостей, гибко работать с разными языками программирования. 4
Некоторые популярные сканеры для разработки на Java: Snyk, Xray Jfrog и Black Duck. 3 Также есть сканеры с открытым исходным кодом, например, SonarQube или Trivy. 3