Значимость анализа сторонних компонентов ПО (англ. Software Composition Analysis — SCA) в процессе разработки растет по мере выхода ежегодных отчетов об уязвимостях open source библиотек, которые публикуются компаниями Synopsys, Sonatype, Snyk, White Source. Согласно отчету
Один из самых показательных кейсов
В данной статье будет обсуждаться вопрос выбора инструмента для проведения SCA с точки зрения качества результатов анализа. Также будет приведено функциональное сравнение инструментов. Процесс встраивания в CI/CD и возможности по интеграции оставим на последующие публикации. Широкий список инструментов был представлен OWASP
Ku çawa dixebite
Рассмотрим, как выглядит CPE:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- Par: Указание о том, что компонент относится к приложению (a), операционной системе (o), железу (h) (Обязательный пункт)
- Firotkar: Название производителя продукта (Обязательный пункт)
- Mal: Название продукта (Обязательный пункт)
- Awa: Версия компоненты (Устаревший пункт)
- update: Обновление пакета
- çapê: Наследуемая версия (Устаревший пункт)
- Ziman: Язык, определяемый в RFC-5646
- SW Edition: Guhertoya nermalavê
- Target SW: Программная среда, в которой работает продукт
- Target HW: Аппаратная среда, в которой работает продукт
- Yên din: Информация о поставщике или продукте
Пример CPE выглядит следующим образом:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Строка означает, что CPE версии 2.3 описывает компонент приложения от производителя pivotal_software
bi sernavê spring_framework
версии 3.0.0. Если мы откроем уязвимость
URL-адрес также используется инструментами SCA. Формат URL-адреса пакета следующий:
scheme:type/namespace/name@version?qualifiers#subpath
- Sсheme: Всегда будет ‘pkg’, указывающий, что это URL-адрес пакета (Обязательный пункт)
- Awa: «Тип» пакета или «протокол» пакета, например maven, npm, nuget, gem, pypi и т.д. (Обязательный пункт)
- Cihê navan: Некоторый префикс имени, такой как идентификатор группы Maven, владелец образа Docker, пользователь или организация GitHub. Необязательный и зависит от типа.
- Nav: Имя пакета (Обязательный пункт)
- Awa: Версия пакета
- Qualifiers: Дополнительные квалификационные данные для пакета, такие как ОС, архитектура, дистрибутив и т. Д. Необязательный и зависящий от типа пункт.
- Subpath: Дополнительный путь в пакете относительно корня пакета
Bo nimûne:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
Пример того, как может выглядеть BOM в формате XML:
<?xml version="1.0" encoding="UTF-8"?>
<bom xmlns="http://cyclonedx.org/schema/bom/1.2" serialNumber="urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79" version="1">
<components>
<component type="library">
<publisher>Apache</publisher>
<group>org.apache.tomcat</group>
<name>tomcat-catalina</name>
<version>9.0.14</version>
<hashes>
<hash alg="MD5">3942447fac867ae5cdb3229b658f4d48</hash>
<hash alg="SHA-1">e6b1000b94e835ffd37f4c6dcbdad43f4b48a02a</hash>
<hash alg="SHA-256">f498a8ff2dd007e29c2074f5e4b01a9a01775c3ff3aeaf6906ea503bc5791b7b</hash>
<hash alg="SHA-512">e8f33e424f3f4ed6db76a482fde1a5298970e442c531729119e37991884bdffab4f9426b7ee11fccd074eeda0634d71697d6f88a460dce0ac8d627a29f7d1282</hash>
</hashes>
<licenses>
<license>
<id>Apache-2.0</id>
</license>
</licenses>
<purl>pkg:maven/org.apache.tomcat/[email protected]</purl>
</component>
<!-- More components here -->
</components>
</bom>
BOM может использоваться не только в качестве входных параметров для Dependency Track, но и для инвентаризации компонентов ПО в цепочке поставок, например, для предоставления заказчику ПО. В 2014 году на рассмотрение в США был даже предложен закон
Возвращаясь к SCA, у Dependency Track есть готовые интеграции с Notification Platforms вроде Slack, системами управления уязвимостями вроде Kenna Security. Стоит также сказать, что Dependency Track ко всему прочему выявляет устаревшие версии пакетов и предоставляет информацию о лицензиях (за счет поддержки SPDX).
Если говорить именно о качестве SCA, то здесь есть принципиальная разница.
Dependency Track не принимает проект в качестве входных данных, а принимает именно BOM. Это означает, что если мы захотим проверить проект, то сначала нам нужно сгенерировать bom.xml, например, с помощью CycloneDX. Таким образом, Dependency Track напрямую зависит от CycloneDX. В то же время, это дает возможность кастомизации. Так команда OZON написала
Подведем некоторые итоге по функциональным особенностям, а также рассмотрим поддерживаемые языки для анализа:
Ziman
Nexus IQ
Dependency Check
Dependency Track
Java
+
+
+
C / C ++
+
+
-
C#
+
+
-
.Tor
+
+
+
erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
python
+
+
+
Cewher
+
+
+
Perl
-
-
-
Scala
+
+
+
Armanca C
+
+
-
Swift
+
+
-
R
+
-
-
Go
+
+
+
Çalakiyê
Çalakiyê
Nexus IQ
Dependency Check
Dependency Track
Возможность обеспечивать проверку компонент, используемых в исходном коде на лицензионную чистоту
+
-
+
Возможность сканирования и анализа на наличие уязвимостей и лицензионной чистоты для образов Docker
+ Интеграция с Clair
-
-
Возможность настройки политики безопасности для использования библиотек с открытым исходным кодом
+
-
-
Возможность сканирования репозиториев с открытым исходным кодом на наличие уязвимых компонентов
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Наличие специализированной исследовательской группы
+
-
-
Работа в закрытом контуре
+
+
+
Использование сторонних баз данных
+ Закрытая БД Sonatype
+ Sonatype OSS, NPM Public Advisors
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, поддержка собственной БД уязвимостей
Возможность фильтровать компоненты с открытым исходным кодом при попытке загрузки в контур разработки согласно сконфигурированным политикам
+
-
-
Рекомендации по исправлению уязвимостей, наличие ссылок на исправление
+
+- (зависит от описания в публичных базах)
+- (зависит от описания в публичных базах)
Ранжирование обнаруженных уязвимостей по степени критичности
+
+
+
Ролевая модель доступа
+
-
+
Поддержка интерфейса командной строки CLI
+
+
+- (только для CycloneDX)
Выборка / сортировка уязвимостей по определяемым критериям
+
-
+
Dashboard по состоянию приложений
+
-
+
Генерация отчётов в PDF-формате
+
-
-
Генерация отчётов в формате JSONCSV
+
+
-
Podderzhka zimanê rûsî
-
-
-
şiyanên entegrasyonê
Têkilî
Nexus IQ
Dependency Check
Dependency Track
Интеграция с LDAP/Active Directory
+
-
+
Интеграция с системой непрерывной интеграции (continous integration) Bamboo
+
-
-
Интеграция с системой непрерывной интеграции (continous integration) TeamCity
+
-
-
Интеграция с системой непрерывной интеграции (continous integration) GitLab
+
+- (в виде плагина для GitLab)
+
Интеграция с системой непрерывной интеграции (continous integration) Jenkins
+
+
+
Наличие плагинов к IDE
+ IntelliJ, Eclipse, Visual Studio
-
-
Поддержка кастомизированной интеграции через web-services (API) инструмента
+
-
+
Dependency Check
Destpêkê
Запустим Dependency Check к умышленно уязвимому приложению
Для этого воспользуемся
mvn org.owasp:dependency-check-maven:check
В результате в директории target появится dependency-check-report.html.
Откроем файл. После сводной информации об общем количестве уязвимостей можем увидеть информацию об уязвимостях с высоким уровнем Severity и Confidence с указанием на пакет, CPE, число CVE.
Следом идет более подробная информация, в частности то, на основе чего было принято решение (evidence), то есть некий BOM.
Далее идет CPE, PURL и описание CVE. Рекомендации об исправлении кстати не прилагаются в силу отсутствия их в базе NVD.
Для систематичного просмотра результатов сканирования можно настроить Nginx с минимальными настройками, либо отправлять полученные дефекты в систему управления дефектами, которые поддерживают конекторы к Dependency Check. Например, Defect Dojo.
Dependency Track
mîhengê
Dependency Track, в свою очередь, является веб-платформой с отображающими графиками, поэтому острый вопрос о хранении дефектов в стороннем решении здесь не стоит.
Для установки есть следующие поддерживаемые сценарии: Docker, WAR, Executable WAR.
Destpêkê
Переходим по URL запущенного сервиса. Входим через admin/admin, меняем логин и пароль, после чего попадаем на Dashboard. Следующее, что мы сделаем — создадим проект для тестового приложения на Java в Home/Projects → Create Project . В качестве примера возьмем DVJA.
Так как Dependency Track может принимать в качестве входных данных только BOM, этот BOM необходимо получить. Воспользуемся
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Получаем bom.xml и загружаем файл в созданном проекте DVJA → Dependeencies → Upload BOM.
Зайдем в Administration → Analyzers. Понимаем, что у нас включен только Internal Analyzer, включающий NVD. Подключим также Sonatype OSS Index.
Таким образом, получим следующую картину для нашего проекта:
Также в списке можно найти одну уязвимость, применимую к Sonatype OSS:
Основное разочарование было в том, что Dependency Track больше не принимает xml-отчеты Dependency Check. Последние поддерживаемые версии интеграции с Dependency Check были 1.0.0 — 4.0.2, в то время как я тестировал 5.3.2.
vir
Nexus IQ
Destpêkê
Установка Nexus IQ происходит из архивов по
После входа в консоль необходимо создать Организацию и Приложение.
Как можно видеть, настройка в случае с IQ происходит несколько сложнее, ибо нам также необходимо создать политики, применимые для разных “стейджей” (dev, build, stage, release). Это необходимо, чтобы блокировать уязвимые компоненты по мере продвижения по пайплайну ближе к проду, либо блокировать как только они попадают в Nexus Repo при скачивании разработчиками.
Чтобы ощутить разницу open source и enterprise, выполним такое же сканирование через Nexus IQ аналогично через dvja-test-and-compare
:
mvn com.sonatype.clm:clm-maven-plugin:evaluate -Dclm.applicationId=dvja-test-and-compare -Dclm.serverUrl=<NEXUSIQIP> -Dclm.username=<USERNAME> -Dclm.password=<PASSWORD>
Переходим по URL к сгенерированному отчету в веб-интерфейсе IQ:
Здесь можно увидеть все нарушения политики с указанием разного уровня значимости (от Info до Security Critical). Буква D рядом с компонентой означает, что компонента Direct Dependency, а буква T рядом с компонентом означает, что компонента Transitive Dependency, то есть является транзитивной.
Кстати, отчет
Если открыть одно из нарушений политики Nexus IQ, мы можем увидеть описание компоненты, а также Version Graph, который показывает местоположение текущей версии на временном графе, а также в какой момент уязвимость перестает быть уязвимой. Высота свечей на графе показывает популярность использования этой компоненты.
Если перейти в раздел уязвимостей и раскрыть CVE, то можно прочитать описание к этой уязвимости, рекомендации по устранению, а также причину, по которой данная компонента попала под нарушение, то есть наличие класса DiskFileitem.class
.
Подведем итоги только касающиеся сторонних компонентов Java, убрав компоненты js. В скобках укажем число тех уязвимостей, которые были найдены за пределами NVD.
Итого Nexus IQ:
- Dependencies Scanned: 62
- Vulnerable Dependencies: 16
- Vulnerabilities Found: 42 (8 sonatype db)
Итого Dependency Check:
- Dependencies Scanned: 47
- Vulnerable Dependencies: 13
- Vulnerabilities Found: 91 (14 sonatype oss)
Итого Dependency Track:
- Dependencies Scanned: 59
- Vulnerable Dependencies: 10
- Vulnerabilities Found: 51 (1 sonatype oss)
Следующим шагов проанализируем полученные результаты и разберемся, что из этих уязвимостей является реальным дефектом, а что ложным срабатыванием.
Disclaimer
Данное ревью не является неоспоримой истиной. Перед автором не стояло цели выделить отдельный инструмент на фоне других. Смысл ревью был показать механизмы работы инструментов SCA и способы проверки их результатов.
Berawirdkirina encaman
Şertên
Ложным срабатыванием по отношению к уязвимостям сторонних компонентов является:
- Несоответствие CVE к выявленной компоненте
- Например, если уязвимость выявлена во фреймворке struts2, а инструмент указывает на компоненту фреймворка struts-tiles, к которой эта уязвимость не относится, то это false positive
- Несоответствие CVE к выявленной версии компоненты
- Например, уязвимость привязана к версии python > 3.5 и инструмент отмечает уязвимой версию 2.7 — это false positive, так как на самом деле уязвимость относится только к ветке продукта 3.x
- Дублирование CVE
- Например, если SCA указал на CVE, позволяющую реализовать RCE, после чего SCA указывает для этой же компоненты CVE, применимую к продуктам Cisco, подверженным этой RCE. В таком случае будет false positive.
- Например, CVE была найдена в компоненте spring-web, после чего SCA указывает на эту же CVE в других компонентах фреймворка Spring Framework, в то время как CVE к другим компонентам отношения не имеет. В таком случае будет false positive.
Объектом исследования выбран Open Source проект DVJA. В исследовании участвовали только java компоненты (без js).
Сводные результаты
Перейдем сразу в результатом ручного ревью выявленных уязвимостей. С полным отчетом для каждой CVE можно познакомиться в Приложении.
Сводные результаты по всем уязвимостям:
Parîsê
Nexus IQ
Dependency Check
Dependency Track
Всего выявлено уязвимостей
42
91
51
Неверно выявлено уязвимостей (false positive)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Не обнаружено релевантных уязвимостей (false negative)
10
20
27
Сводные результаты по компонентам:
Parîsê
Nexus IQ
Dependency Check
Dependency Track
Всего выявлено компонентов
62
47
59
Всего уязвимых компонентов
16
13
10
Неверно выявлены уязвимые компоненты (false positive)
1
5
0
Неверно выявлены уязвимые компоненты (false positive)
0
6
6
Построим визуальные графики, чтобы оценить соотношение false positive и false negative к общему числу уязвимостей. По горизонтали отмечены компоненты, а по вертикали выявленные в них уязвимости.
Для сравнения, аналогичное исследование было проведено командой Sonatype по тестированию проекта из 1531 компоненты с помощью OWASP Dependency Check. Как мы можем увидеть, соотношение шума к корректным срабатываниям соезмиримо с нашими результатами.
Source:
Рассмотрим некоторые CVE из результатов нашего сканирования, чтобы понять причину таких результатов.
zêde
No.1
Разберем сначала некоторые интересные моменты Sonatype Nexus IQ.
Nexus IQ указывает на проблему с десереализацией с возможностью выполнить RCE в Spring Framework несколько раз. CVE-2016-1000027 в spring-web:3.0.5 в первый раз, и CVE-2011-2894 в spring-context:3.0.5 и spring-core:3.0.5. Поначалу кажется, что происходит дублирование уязвимости по нескольким CVE. Ибо, если посмотреть CVE-2016-1000027 и CVE-2011-2894 в базе NVD, то кажется, что все очевидно
Jêder
Qelsbûn
spring-web:3.0.5
CVE-2016-1000027
spring-context:3.0.5
CVE-2011-2894
spring-core:3.0.5
CVE-2011-2894
description
description
CVE-2011-2894 сама по себе довольно известная. В отчете RemoteInvocationSerializingExporter
в CVE-2011-2894, уязвимость наблюдается в HttpInvokerServiceExporter
. Об этом нам и говорит Nexus IQ:
Тем не менее ничего подобного нет в NVD, из-за чего Dependency Check и Dependency Track получают по false negative.
Также из описания CVE-2011-2894 можно понять, что уязвимость действительно присутствует и в spring-context:3.0.5 и в spring-core:3.0.5. Подтверждение этому можно найти в статье от того, кто эту уязвимость нашел.
No.2
Jêder
Qelsbûn
Di encama
struts2-core:2.3.30
CVE-2016-4003
ŞAŞ
Если мы изучим уязвимость CVE-2016-4003, то поймем, что ее исправили еще в версии 2.3.28, тем не менее Nexus IQ нам о ней сообщает. В описании к уязвимости есть примечание:
То есть уязвимость существует только в связке с устаревшей версией JRE, о чем нас решили предупредить. Тем не менее, считаем это False Positive, хоть и не самым страшным.
3
Jêder
Qelsbûn
Di encama
xwork-core:2.3.30
CVE-2017-9804
RAST
xwork-core:2.3.30
CVE-2017-7672
ŞAŞ
Если мы посмотрим описание к CVE-2017-9804 и CVE-2017-7672, то поймем, что проблема в URLValidator class
, причем CVE-2017-9804 вытекает из CVE-2017-7672. Наличие второй уязвимости не несет никакой полезной нагрузки кроме того, что ее severity вырос до High, поэтому можно считать это лишним шумом.
В целом других false positive для Nexus IQ найдено не было.
No.4
Есть несколько моментов, которые выделяют IQ на фоне других решений.
Jêder
Qelsbûn
Di encama
spring-web:3.0.5
CVE-2020-5398
RAST
CVE в NVD сообщает, что она применима только для версий 5.2.x до 5.2.3, 5.1.x до 5.1.13, и версий 5.0.x до 5.0.16, тем не менее, если мы посмотрим описание CVE в Nexus IQ, то увидим следующее:
Advisory Deviation Notice: The Sonatype security research team discovered that this vulnerability was introduced in version 3.0.2.RELEASE and not 5.0.x as stated in the advisory.
После этого следует PoC к этой уязвимости, который сообщает, что она присутствует в версии 3.0.5.
False negative отправляется к Dependency Check и Dependency Track.
No.5
Посмотрим на false positive для Dependency Check и Dependency Track.
Dependency Check отдельно выделяется тем, что отражает те CVE, которые относятся ко всему фреймворку в NVD, в те компоненты, к которым эти CVE не применимы. Это касается CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, которые Dependency Check “прикрутил” к struts-taglib:1.3.8 и struts-tiles-1.3.8. Эти компоненты не имеют ничего общего с тем, что описано в CVE — обработка запросов, валидация страниц и так далее. Это обусловлено тем, что общее между этими CVE и компонентами — только фреймворк, из-за чего Dependency Check и посчитал это уязвимостью.
Такая же ситуация с spring-tx:3.0.5, и похожая ситуация с struts-core:1.3.8. Для struts-core Dependency Check и Dependency Track нашли очень много уязвимостей, которые на самом деле применимы к struts2-core, который по сути является отдельным фреймворком. В данном случае Nexus IQ правильно понял картину и в тех CVE, которые выдал, указал, что struts-core пришел end of life и необходимо перейти к struts2-core.
No.6
В некоторых ситуациях трактовать явную ошибку Dependency Check и Dependency Track несправедливо. В частности CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, которые Dependency Check и Dependency Track отнесли к spring-core:3.0.5 на самом деле относятся к spring-web:3.0.5. При этом часть из этих CVE были найдены и Nexus IQ, тем не менее IQ их корректно определил к другой компоненте. От того, что эти уязвимости не были найдены в spring-core, нельзя утверждать, что их нет во фреймворке в принципе и open source инструменты справедливо указали на эти уязвимости (просто немного промахнулись).
vebiguherin
Как мы можем видеть, определение достоверности выявленных уязвимостей ручным ревью не дает однозначных результатов, из-за чего возникают спорные моменты. Результаты таковы, что решение Nexus IQ обладает наименьшим показателем ложных срабатываний и наибольшей точностью.
В первую очередь, это связано с тем, что команда Sonatype расширило описание для каждой уязвимости CVE из NVD в своих базах, указав с точностью до класса или функции уязвимости для той или иной версии компоненты, проведя дополнительные исследования (например, проверив уязвимости на более старых версий ПО).
Немаловажное влияние на результаты играют и те уязвимости, которые не попали в NVD, но тем не менее присутствуют в базе Sonatype с пометкой SONATYPE. Согласно отчету
Как итог Dependency Check выдает большое количество шума, упуская часть уязвимых компонент. Dependency Track выдает меньший шум и выявляет большое число компонент, что визуально не режет глаза в веб-интерфейсе.
Тем не менее, практика показывает, что именно open source должен становится первым шагов на пути к зрелому DevSecOps. Первое, над чем стоит задуматься для встраивания SCA в разработку, — это процессы, а именно размышления совместно с руководством и смежными департаментами над тем, как должны выглядеть идеальные процессы у себя в организации. Возможно, окажется так, что для вашей организации на первых порах Dependency Check или Dependency Track закроют все стоящие перед бизнесом потребности, а Enterprise-решения будут являться логическим продолжением в силу роста сложности разрабатываемых приложений.
Приложение А. Результаты применительно к компонентам
Legend:
- High — уязвимости высокого и критичного уровня в компоненте
- Medium — Уязвимости среднего уровня критичности в компоненте
- TRUE — Верно определенная уязвимость (True positive issue)
- FALSE — Ложное срабатывание (False positive issue)
Jêder
Nexus IQ
Dependency Check
Dependency Track
Di encama
dom4j: 1.6.1
bilind
bilind
bilind
RAST
log4j-core: 2.3
bilind
bilind
bilind
RAST
log4j: 1.2.14
bilind
bilind
-
RAST
commons-collections:3.1
bilind
bilind
bilind
RAST
commons-fileupload:1.3.2
bilind
bilind
bilind
RAST
commons-beanutils:1.7.0
bilind
bilind
bilind
RAST
commons-codec:1:10
Medya
-
-
RAST
mysql-connector-java:5.1.42
bilind
bilind
bilind
RAST
spring-expression:3.0.5
bilind
компонент не найден
RAST
spring-web:3.0.5
bilind
компонент не найден
bilind
RAST
spring-context:3.0.5
Medya
компонент не найден
-
RAST
spring-core:3.0.5
Medya
bilind
bilind
RAST
struts2-config-browser-plugin:2.3.30
Medya
-
-
RAST
spring-tx:3.0.5
-
bilind
-
ŞAŞ
struts-core:1.3.8
bilind
bilind
bilind
RAST
xwork-core: 2.3.30
bilind
-
-
RAST
struts2-core: 2.3.30
bilind
bilind
bilind
RAST
struts-taglib:1.3.8
-
bilind
-
ŞAŞ
struts-tiles-1.3.8
-
bilind
-
ŞAŞ
Приложение Б. Результаты применительно к уязвимостям
Legend:
- High — уязвимости высокого и критичного уровня в компоненте
- Medium — Уязвимости среднего уровня критичности в компоненте
- TRUE — Верно определенная уязвимость (True positive issue)
- FALSE — Ложное срабатывание (False positive issue)
Jêder
Nexus IQ
Dependency Check
Dependency Track
Severe
Di encama
Rayi
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
bilind
RAST
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
bilind
RAST
log4j-core: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
bilind
RAST
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
Nizm
RAST
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
bilind
RAST
-
CVE-2020-9488
-
Nizm
RAST
SONATYPE-2010-0053
-
-
bilind
RAST
commons-collections:3.1
-
CVE-2015-6420
CVE-2015-6420
bilind
ŞAŞ
Дублирует RCE(OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
bilind
ŞAŞ
Дублирует RCE(OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
bilind
RAST
commons-fileupload:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
bilind
RAST
SONATYPE-2014-0173
-
-
Medya
RAST
commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
bilind
RAST
-
CVE-2019-10086
CVE-2019-10086
bilind
ŞAŞ
Уязвимость применима только для версий 1.9.2+
commons-codec:1:10
SONATYPE-2012-0050
-
-
Medya
RAST
mysql-connector-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
bilind
RAST
CVE-2019-2692
CVE-2019-2692
-
Medya
RAST
-
CVE-2020-2875
-
Medya
ŞAŞ
Та же самая уязвимость как и CVE-2019-2692, но c припиской «attacks may significantly impact additional products»
-
CVE-2017-15945
-
bilind
ŞAŞ
Не относится к mysql-connector-java
-
CVE-2020-2933
-
Nizm
ŞAŞ
Дубликат к CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
Medya
RAST
spring-expression:3.0.5
CVE-2018-1270
компонент не найден
-
bilind
RAST
CVE-2018-1257
-
-
Medya
RAST
spring-web:3.0.5
CVE-2016-1000027
компонент не найден
-
bilind
RAST
CVE-2014-0225
-
CVE-2014-0225
bilind
RAST
CVE-2011-2730
-
-
bilind
RAST
-
-
CVE-2013-4152
Medya
RAST
CVE-2018-1272
-
-
bilind
RAST
CVE-2020-5398
-
-
bilind
RAST
Показательный пример в пользу IQ: «The Sonatype security research team discovered that this vulnerability was introduced in version 3.0.2.RELEASE and not 5.0.x as stated in the advisory.»
CVE-2013-6429
-
-
Medya
RAST
CVE-2014-0054
-
CVE-2014-0054
Medya
RAST
CVE-2013-6430
-
-
Medya
RAST
spring-context:3.0.5
CVE-2011-2894
компонент не найден
-
Medya
RAST
spring-core:3.0.5
-
CVE-2011-2730
CVE-2011-2730
bilind
RAST
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Medya
RAST
-
-
CVE-2013-4152
Medya
ŞAŞ
Дубликат этой же уязвимости в spring-web
-
CVE-2013-4152
-
Medya
ŞAŞ
Уязвимость относится к компоненте spring-web
-
CVE-2013-6429
CVE-2013-6429
Medya
ŞAŞ
Уязвимость относится к компоненте spring-web
-
CVE-2013-6430
-
Medya
ŞAŞ
Уязвимость относится к компоненте spring-web
-
CVE-2013-7315
CVE-2013-7315
Medya
ŞAŞ
SPLIT из CVE-2013-4152. + Уязвимость относится к компоненте spring-web
-
CVE-2014-0054
CVE-2014-0054
Medya
ŞAŞ
Уязвимость относится к компоненте spring-web
-
CVE-2014-0225
-
bilind
ŞAŞ
Уязвимость относится к компоненте spring-web
-
-
CVE-2014-0225
bilind
ŞAŞ
Дубликат этой же уязвимости в spring-web
-
CVE-2014-1904
CVE-2014-1904
Medya
ŞAŞ
Уязвимость относится к компоненте spring-web-mvc
-
CVE-2014-3625
CVE-2014-3625
Medya
ŞAŞ
Уязвимость относится к компоненте spring-web-mvc
-
CVE-2016-9878
CVE-2016-9878
bilind
ŞAŞ
Уязвимость относится к компоненте spring-web-mvc
-
CVE-2018-1270
CVE-2018-1270
bilind
ŞAŞ
Для spring-expression / spring-messages
-
CVE-2018-1271
CVE-2018-1271
Medya
ŞAŞ
Уязвимость относится к компоненте spring-web-mvc
-
CVE-2018-1272
CVE-2018-1272
bilind
RAST
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
Medya
RAST
SONATYPE-2015-0327
-
-
Nizm
RAST
struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
Medya
RAST
spring-tx:3.0.5
-
CVE-2011-2730
-
bilind
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2011-2894
-
bilind
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2013-4152
-
Medya
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2013-6429
-
Medya
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2013-6430
-
Medya
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2013-7315
-
Medya
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2014-0054
-
Medya
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2014-0225
-
bilind
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2014-1904
-
Medya
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2014-3625
-
Medya
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2016-9878
-
bilind
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2018-1270
-
bilind
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2018-1271
-
Medya
ŞAŞ
Уязвимость не относится к spring-tx
-
CVE-2018-1272
-
Medya
ŞAŞ
Уязвимость не относится к spring-tx
struts-core:1.3.8
-
CVE-2011-5057 (OSSINDEX)
Medya
FASLE
Уязвимость к Struts 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
bilind
ŞAŞ
Уязвимость к Struts 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
Medya
ŞAŞ
Уязвимость к Struts 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
bilind
ŞAŞ
Уязвимость к Struts 2
CVE-2016-1182
3VE-2016-1182
-
bilind
RAST
-
-
CVE-2011-5057
Medya
ŞAŞ
Уязвимость к Struts 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
bilind
ŞAŞ
Уязвимость к Struts 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
Medya
ŞAŞ
Уязвимость к Struts 2
CVE-2015-0899
CVE-2015-0899
-
bilind
RAST
-
CVE-2012-0394
CVE-2012-0394
Medya
ŞAŞ
Уязвимость к Struts 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
bilind
ŞAŞ
Уязвимость к Struts 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
bilind
ŞAŞ
Уязвимость к Struts 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
bilind
FASLE
Уязвимость к Struts 2
-
CVE-2013-2115
CVE-2013-2115
bilind
FASLE
Уязвимость к Struts 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
bilind
FASLE
Уязвимость к Struts 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
bilind
FASLE
Уязвимость к Struts 2
CVE-2014-0114
CVE-2014-0114
-
bilind
RAST
-
CVE-2015-2992
CVE-2015-2992
Medya
ŞAŞ
Уязвимость к Struts 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
bilind
ŞAŞ
Уязвимость к Struts 2
CVE-2016-1181
CVE-2016-1181
-
bilind
RAST
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
bilind
ŞAŞ
Уязвимость к Struts 2
xwork-core:2.3.30
CVE-2017-9804
-
-
bilind
RAST
SONATYPE-2017-0173
-
-
bilind
RAST
CVE-2017-7672
-
-
bilind
ŞAŞ
Дубль к CVE-2017-9804
SONATYPE-2016-0127
-
-
bilind
RAST
struts2-core:2.3.30
-
CVE-2016-6795
CVE-2016-6795
bilind
RAST
-
CVE-2017-9787
CVE-2017-9787
bilind
RAST
-
CVE-2017-9791
CVE-2017-9791
bilind
RAST
-
CVE-2017-9793
-
bilind
ŞAŞ
Дубликат к CVE-2018-1327
-
CVE-2017-9804
-
bilind
RAST
-
CVE-2017-9805
CVE-2017-9805
bilind
RAST
CVE-2016-4003
-
-
Medya
ŞAŞ
Применимо к Apache Struts 2.x до 2.3.28, а это версия 2.3.30. Тем не менее, исходя из описания, CVE действует при любых версиях Struts 2, если используется JRE 1.7 и меньше. Видимо нас тут решили перестраховать, но больше похоже на FALSE
-
CVE-2018-1327
CVE-2018-1327
bilind
RAST
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
bilind
RAST
Та самая уязвимость, которой воспользовались злоумышленники в Equifax в 2017 году
CVE-2017-12611
CVE-2017-12611
-
bilind
RAST
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
bilind
RAST
struts-taglib:1.3.8
-
CVE-2012-0394
-
Medya
ŞAŞ
Для struts2-core
-
CVE-2013-2115
-
bilind
ŞAŞ
Для struts2-core
-
CVE-2014-0114
-
bilind
ŞAŞ
Для commons-beanutils
-
CVE-2015-0899
-
bilind
ŞAŞ
Не относится к taglib
-
CVE-2015-2992
-
Medya
ŞAŞ
Относится к struts2-core
-
CVE-2016-1181
-
bilind
ŞAŞ
Не относится к taglib
-
CVE-2016-1182
-
bilind
ŞAŞ
Не относится к taglib
struts-tiles-1.3.8
-
CVE-2012-0394
-
Medya
ŞAŞ
Для struts2-core
-
CVE-2013-2115
-
bilind
ŞAŞ
Для struts2-core
-
CVE-2014-0114
-
bilind
ŞAŞ
Под commons-beanutils
-
CVE-2015-0899
-
bilind
ŞAŞ
Не относится к tiles
-
CVE-2015-2992
-
Medya
ŞAŞ
Для struts2-core
-
CVE-2016-1181
-
bilind
ŞAŞ
Не относится к taglib
-
CVE-2016-1182
-
bilind
ŞAŞ
Не относится к taglib
Source: www.habr.com