Если вы занимаетесь анализом состава программного обеспечения (SCA) в любом масштабе, вы знаете, в чем заключается проблема: дело не в том, чтобы найти уязвимости, а в том, чтобы найти те из них, которые действительно имеют значение.
Типичное дерево зависимостей подтягивает сотни, а иногда и тысячи пакетов. Просканируйте это дерево по базе данных CVE, и вы получите бэклог, с которым ни одна команда не сможет реально справиться: большая часть его находится в путях кода, которые ваше приложение никогда не выполняет. Триаж превращается в работу на полный рабочий день, слово «критический» теряет свой смысл, а уязвимости, которые действительно подвергают вас риску, затеряются в шуме тех, которые не представляют опасности.
Сегодня мы анонсируем функцию «Достижимость уязвимостей», которая теперь доступна в SonarQube Advanced Security. Она отвечает на один вопрос, на который оценка CVSS никогда не могла ответить: действительно ли ваш код вызывает уязвимую функцию?
Ландшафт угроз меняется
Современные модели ИИ теперь могут самостоятельно находить и превращать уязвимости в оружие с такой скоростью, с которой не справится ни один цикл выпуска патчей. Окно между появлением уязвимости и ее активной эксплуатацией продолжает сужаться, и то, на что у злоумышленников раньше уходили недели, теперь занимает часы. Проведение аудита после релиза или ведение бэклога из тысяч неранжированных CVE, ожидающих ручного триажа, больше не являются жизнеспособными стратегиями в условиях таких временных рамок.
Это делает расстановку приоритетов главной задачей. Когда окно эксплойта исчисляется часами, команды безопасности не могут позволить себе тратить это время на расследование уязвимостей, к которым их код даже не прикасается. Понимание того, какие риски подтверждены как достижимые, и их первоочередное устранение — это то, как команды идут в ногу с ландшафтом угроз, который больше не ждет ежеквартального цикла патчей.
Что такое анализ достижимости уязвимостей и как он работает?
Для каждой уязвимости, обнаруженной в сторонней зависимости, SonarQube теперь выполняет анализ графа вызовов вашей кодовой базы, чтобы определить, вызывает ли ваш код конкретные функции, связанные с этой уязвимостью. Результатом является одно из трех состояний достижимости, отображаемое прямо на карточке риска зависимости и доступное в качестве фильтра в представлении «Риски зависимостей»:
- Достижимо: SonarQube обнаружил, что ваш код вызывает функции, связанные с уязвимостью. Рассматривайте их как приоритетную очередь.
- Недостижимо: SonarQube не обнаружил случаев прямого вызова вашего кода уязвимых функций. Стоит отметить: вы все еще можете быть уязвимы через транзитивные вызовы из других зависимостей или другие пути эксплуатации, которые анализ достижимости в настоящее время не охватывает. Этот статус снижает уровень угрозы, но не устраняет риск.
- Не проанализировано: Достижимость еще не вычислена, будь то потому, что уязвимость находится в неподдерживаемом в данный момент языке, уязвимый пакет является транзитивной зависимостью или глубокий анализ уязвимостей еще не запущен.
Достижимые уязвимости должны отправляться в начало очереди на исправление. В этом и заключается весь смысл: вместо плоского списка, отранжированного только по степени критичности, вы получаете сигнал, основанный на том, что ваш код делает на самом деле.
Какие факторы следует использовать для расстановки приоритетов CVE помимо оценок CVSS?
Достижимость — это новейший фактор, учитываемый при оценке рисков зависимостей в Sonar, наряду с факторами, которые вы, вероятно, уже используете:
Фактор
Что он измеряет
Источник
Критичность
Техническая критичность уязвимости
CVSS
Известные эксплойты
Эксплуатируется ли уязвимость активно «в дикой природе»
Список известных эксплуатируемых уязвимостей (KEV) от CISA
Вероятность будущей эксплуатации
Вероятность эксплуатации в следующие 30 дней
Система оценки прогнозирования эксплойтов (EPSS)
CVSS, KEV и EPSS описывают уязвимость абстрактно. Достижимость — это единственный фактор, который относится именно к вашей кодовой базе, и он часто является разницей между CVE блокирующей критичности, которая действительно срочна, и CVE, находящейся в пути кода, который вы никогда не вызываете.
Как SonarQube определяет, является ли уязвимость эксплотируемой в моем коде?
Для достижения требуется полный граф вызовов вашего кода, что означает, что он вычисляется только во время полного анализа, запущенного в CI или с помощью автоматического анализа, а не во время непрерывного анализа. Если уязвимость впервые обнаруживается в ходе непрерывного анализа, она получит статус достижимости при следующем запуске полного анализа.
На момент запуска анализ достижимости поддерживается для уязвимостей в коде на Java, C# и Python. Анализ графов вызовов — это действительно сложная задача для эффективной реализации на языках с разными моделями разрешения зависимостей, поведением динамической диспетчеризации и инструментами сборки, поэтому мы предпочитаем сначала точно реализовать его для определенного набора языков, чем внедрять поверхностное покрытие везде и сразу. Поддержка дополнительных языков находится в дорожной карте.
Где вы увидите достижимость уязвимостей
- Вкладка «Риски зависимостей»: фильтруйте по параметру «Достижимость», чтобы мгновенно выявлять подтвержденные достижимые уязвимости и замечать значок «Достижимо» на отдельных карточках рисков.
- Представление «Подробный риск»: статус достижимости располагается рядом с данными CVSS, EPSS и KEV на вкладке «В чем риск?», так что вы получаете полную картину в одном месте.
- Отчеты: статус достижимости включается в скачиваемые отчеты о рисках зависимостей (JSON/CSV), поэтому тот же сигнал, который управляет триажем вашей команды, может также подтверждать ваши свидетельства о соответствии (только для тарифного плана Enterprise).
- SonarQube Remediation Agent: достижимые уязвимости — это именно то, что стоит автоматизировать. Если вы используете Remediation Agent
Почему достижимость уязвимостей важна именно сейчас
Каждый инструмент SCA может сказать вам, что уязвимость в зависимости существует. Гораздо меньшее количество инструментов может сказать вам, является ли эта уязвимость чем-то, что злоумышленник действительно может вызвать через ваш код, и этот пробел — именно то, откуда берется усталость от алертов. По мере того как деревья зависимостей продолжают расти, а злоумышленники (все чаще управляемые ИИ) сокращают разрыв между раскрытием информации и эксплуатацией, статус «подтверждено достижимо» становится одним из немногих сигналов триажа, которые масштабируются.
Достижимость не заменяет CVSS, KEV или EPSS. Она надстраивается над ними, сужая тысячи теоретических рисков до тех, которые ваш код действительно может достичь, чтобы ваша команда исправляла то, что важно в первую очередь, и перестала тратить силы на остальное.
Начало работы
Функция «Достижимость уязвимостей» теперь доступна клиентам SonarQube Advanced Security на SonarQube Cloud и SonarQube Server для проектов на Java, C# и Python, анализируемых в CI. Никакой дополнительной настройки не требуется: статус достижимости начнет появляться для существующих рисков зависимостей после вашего следующего полного анализа.
Чтобы вникнуть в детали, ознакомьтесь с документацией Просмотр и исправление рисков зависимостей в SonarQube Cloud.
Начните расставлять приоритеты по тому, что действительно достижимо. Запросите бесплатную пробную версию SonarQube Advanced Security или посмотрите планы и цены.










