
простое приложение с уязвимостью CVE-2022-45688
Проект иллюстрирует CVE-2022-45688 в json.org — здесь есть простое приложение
XML2JSONConverter, которое читает XML из входных данных, преобразует его в JSON и
выводит его в консоль в удобочитаемом виде.
При использовании вредоносных входных данных приложение падает с ошибкой переполнения стека (stackoverflow).
Тестовый пример CVE202245688Test иллюстрирует такое поведение; его
можно запустить, выполнив mvn test.
Здесь есть несколько sh-скриптов для запуска различных анализов; отчёты о результатах можно найти в scan-results.
Отчёт SCA (включая те, что настроены как GitHub Actions) не сообщает о CVE-2022-45688, хотя включённый тест ясно показывает, что уязвимость существует. Причина в том, что инструменты, основанные только на анализе метаданных (т.е. объявленных зависимостей), не понимают, что проект использует затенённую (shaded) версию (уязвимой версии) json.org.
Обратите внимание, что затенение выполняется вручную, то есть плагин Maven shade не используется. Наше недавнее исследование показывает, что это распространённый источник ложных негативов при анализе состава ПО.
В pom.xml есть плагин для генерации SBOM в формате CycloneDX.
Для этого выполните mvn cyclonedx:makePackageBom; SBOM можно найти в
target/ в форматах json и xml.