﻿# Что такое CVE и какие угрозы там хранятся?

В публикациях о различных уязвимостях и инцидентах информационной безопасности часто встречается аббревиатура CVE\. CVE \(Common Vulnerabilities and Exposures\) – это список известных уязвимостей и дефектов безопасности\. Рассмотрим, что он из себя представляет и какие дефекты безопасности из него были востребованы у хакеров в 2021 году\.

![0971_CVE_Vulnerability_ru/image1.png](https://import.viva64.com/docx/blog/0971_CVE_Vulnerability_ru/image1.png)

## Что такое CVE?

### Как возник CVE

До 1999, когда CVE был запущен, было сложно передавать информацию об уязвимостях между разными базами, сканерами и другими инструментами\. Каждый производитель решений по поиску дефектов безопасности имел свою базу со своим способом именования и набором параметров уязвимости\.  Для решения этой проблемы компанией MITRE и был создан CVE\. 

MITRE Corporation – американская некоммерческая организация, специализирующаяся в области системной инженерии\. Организация поддерживает проекты в различных областях, таких как космическая безопасность, информатика в здравоохранении, кибербезопасность и других\. Ещё одним известным проектом MITRE является ATT&CK \(Adversarial Tactics, Techniques, and Common Knowledge\) – список известных техник, приёмов и тактик, которыми злоумышленники пользуются для атак на информационные системы, представленный в виде таблиц\.

### Структура CVE

CVE это "словарь" известных угроз, каждая запись которого состоит из следующих разделов: CVE ID, Reference, Description\. CVE ID начинается с префикса _CVE\-_ и записывается с указанием года, в котором было сообщено об уязвимости и номера, присвоенного CNA \(CVE Numbering Authorities\)\.

CNA – это разработчики ПО, Bug Bounty программы и другие организации, занимающиеся поиском уязвимостей, уполномоченные добавлять новые записи в CVE\. Основным CNA является MITRE, однако сейчас статус CNA есть у 226 организации из 34 стран мира\. Для того чтобы компания могла стать CNA у нее должна быть общедоступная политика раскрытия информации об уязвимостях и публичный ресурс для публикации информации о новых дефектах безопасности\. 

В дополнение к CVE ID запись CVE содержит только описание уязвимости и ссылки на дополнительные сведения, сообщения и рекомендации производителей ПО\.

Подробность описания для различных угроз разнится, но обычно оно строится по одной схеме\. В нем говорится, что _<проблема\>_ в _<версии\>_ _<продукта\>_ приводит к _<воздействию\>_ в результате _<атаки\>_\. 

![0971_CVE_Vulnerability_ru/image2.png](https://import.viva64.com/docx/blog/0971_CVE_Vulnerability_ru/image2.png)



Найти и скачать базу уязвимостей, а также узнать больше о новостях CVE можно на [официальном сайте](https://www.cve.org/)\.

### Где еще можно узнать об уязвимостях?

Дополнительную информацию о каждой уязвимости из CVE, например оценку по CVSS или перечень уязвимых платформ \(CPE\), можно найти в базе [NVD](https://nvd.nist.gov/) \(National Vulnerability Database\)\. 

CVSS \(Common Vulnerability Scoring System\) \- открытый стандарт для оценки уязвимостей\. По CVSS на основании набора метрик и формул вычисляется оценка опасности уязвимости, она может принимать значения от 0 до 10, где 10 – наивысший балл\. CVSS позволяет распределить усилия по реагированию на уязвимости в зависимости от их опасности\.

Кроме того, в базе NVD указаны дефекты CWE\. CWE \(Common Weakness Enumeration\) – общий перечень проблем и недочетов программного обеспечения\. В отличии от CVE, в списке CWE указаны не конкретные уязвимости, а потенциальные ошибки, которые могут привести к возникновению дефектов безопасности\. Более подробно о CWE можете прочитать в [статье моего коллеги](https://pvs-studio.ru/ru/blog/posts/0869/)\. 

Нашумевшим уязвимостям часто дают собственные имена\. Например, CVE\-2021\-44228 можно встретить под названием Log4Shell, а CVE\-2019\-0708 известна как BlueKeep\. 

Удобным решением по поиску информации о уязвимостях является [Vulnres](https://vulners.com/)\. Vulners – агрегатор и поисковик по контенту в сфере информационной безопасности\. Он позволяет искать новости и статьи об уязвимостях, патчи, эксплоиты и многое другое\.  Другой полезный ресурс об уязвимостях – это [VulDB](https://vuldb.com/), также предоставляющий большой набор данных и аналитику трендов информационной безопасности\. 

Что делать если вы нашли уязвимость? Прежде всего необходимо написать разработчику, в ПО которого вы нашли ошибку и четко описать суть проблемы\. В ходе работы с найденными уязвимостями следует придерживаться принципов ответственного раскрытия информации \(Coordinated vulnerability disclosure\) и руководствоваться международными практиками, например, стандартом ISO/IEC 29147:2020 или этическим кодексом [ethicsfIRST](https://www.first.org/global/sigs/ethics/ethics-first)\. Не следует разглашать информацию об ошибке публично, до тех пор, пока не пройдет определенное время\. Это даст разработчикам время исправить уязвимость и выпустить патч\. Обычно срок неразглашения может составлять от 30 до 120 дней\. Для более сложных уязвимостей срок может и увеличиваться\.

Чтобы запросить CVE ID для найденного дефекта безопасности нужно заполнить [форму](https://cveform.mitre.org/) и указать как минимум тип уязвимости, разработчика или поставщика продукта, а также затронутые версии\.

Для того чтобы уязвимость включили в CVE она должна соответствовать критериям:

* Уязвимость должна быть исправлена;
* Разработчик, в продукте которого найдена уязвимость, должен признать, что она имеет негативное последствие для безопасности;
* Уязвимость затрагивает только одну кодовую базу\. Если уязвимость связана с ошибками в open\-source библиотеках, протоколах или стандартах, то CVE назначается для каждого затронутого продукта\. Исключением являются случаи, когда невозможно оставаться защищенным используя уязвимый общий код\.  

### Преимущества CVE

У многих компаний уже есть системы для каталогизации и публикации информации об уязвимостях\. Использование CVE дает возможность организациям использовать единую систему для взаимодействия между собой и совместимыми с CVE инструментами\. 

Присваивание CVE ID конкретной уязвимости позволяет быстро и точно получать информацию о ней из различный источников\. Это помогает эффективно распределять усилия на устранение уязвимостей и обеспечение безопасности\.

CVE помогает оценить возможности инструментов обнаружения уязвимостей и выбрать те, что больше подходят для ваших нужд\. 

### Ограничения CVE

CVE не позиционирует себя как полноценную базу по уязвимостям, скорее это просто их перечисление\. Естественное ограничение такого определения – малое количество дополнительной информации\. Хотя в записи CVE есть ссылки на дополнительные ресурсы, работать с такими данными весьма неудобно\. Поэтому на основе CVE и существует множество баз уязвимостей, дополняющих её, например, [база NVD](https://nvd.nist.gov/), [VulDB](https://vuldb.com/), [Snyk](https://security.snyk.io/)\.

Другое ограничение CVE заключается в том, что не всем уязвимостям присваивается номер, а для некоторых его дают с задержкой\. Так по [данным](https://ics.kaspersky.com/media/ics-conference-2019/04-Artem-Zinenko-Nedostatki-publichnyh-baz-uyazvimostey.pdf) эксперта из "Лаборатории Касперского" от 2018 года 50% уязвимостей из CVE имеют задержку в 5 дней по сравнению с [базой ICS\-CERT](https://www.cisa.gov/uscert/ics/advisories), однако есть 10% дефектов отстающих от неё на более чем 269 дней\. 

Также возможны ситуации, когда у занесенной в базу уязвимости выясняются дополнительные особенности, однако такая информация может добавляться с опозданием или вовсе быть упущенной\.

## Популярные уязвимости

Оперативное устранение уязвимостей должно быть приоритетной задачей разработчиков ПО\. Оставление открытых уязвимостей без внимания приводит к успешным атакам\. Ущерб от таких атак может приводить как к репутационным, так и к финансовыми потерям\. Например, ущерб от атаки вымогателя WannaCry, использующего уязвимость в SMB протоколе EternalBlue, оценивают в 1 млрд долларов\. 

С каждым годом количество уязвимостей растет\. В 2021 году найдена 20061 уязвимость, что на 9,3% больше, чем в 2020 году\. Как видно из графика, который можно найти на [сайте NVD](https://nvd.nist.gov/general/visualizations/vulnerability-visualizations/cvss-severity-distribution-over-time), такой скачок был самым большим с 2017 года\. 

![0971_CVE_Vulnerability_ru/image3.png](https://import.viva64.com/docx/blog/0971_CVE_Vulnerability_ru/image3.png)



Рассмотрим на примере одних из самых эксплуатируемых в 2021 году уязвимостей по данным [CISA](https://www.cisa.gov/uscert/ncas/alerts/aa22-117a) и [Positive Technologies](https://www.ptsecurity.com/ru-ru/research/analytics/cybersecurity-threatscape-2021/#id8), что из себя они представляют и к чему могут привести\.

### ProxyLogon

ProxyLogon – группа уязвимостей \(CVE\-2021\-26855, CVE\-2021\-26857, CVE\-2021\-26858, CVE\-2021\-27065\) почтового сервера Microsoft Exchange\. 

Хакерская группа HAFNIUM впервые использовала эти уязвимости в январе 2021 и почти 2 месяца оставалась без обнаружения\. В начале марта Microsoft узнала об этих уязвимостях и выпустила необходимые исправления безопасности\. Однако за это время около 250000 серверов подверглись атакам\.

[CVE\-2021\-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855) CVSS 9\.8\. Уязвимость позволяет подделать запрос на стороне сервера, обойти аутентификацию MS Exchange и получить права администратора\. Для того чтобы атака сработала, атакующему нужно получить доступ к локальному серверу Microsoft Exchange через порт 443\. 

[CVE\-2021\-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065) CVSS 7\.8\. Позволяет получить доступ к веб\-интерфейсу ECP \(Exchange Control Panel\) и с помощью него загружать файлы на сервер Exchange\. Для того чтобы воспользоваться уязвимостью нужна аутентификация, которую как раз и проходят с помощью уязвимости CVE\-2021\-26855\. Используя эти уязвимости атакующий может загрузить веб\-шелл и с помощью него получить удаленный доступ к системе\. Это дает возможность злоумышленнику запустить вредоносный код, получить учетные данные, развернуть программы вымогатели\.

[CVE\-2021\-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858) CVSS 7\.8\. Как и предыдущая, данная уязвимость позволяет записывать произвольные файлы; также возможна работа в связке с CVE\-2021\-26855 для обхода аутентификации\.

[CVE\-2021\-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857) CVSS 7\.8\. Проблема десериализации в службе Unified Messaging\. Эта уязвимость дает запускать код с правами SYSTEM на сервере Exchange\. Для эксплуатации требуется, чтобы соответствующий служба была настроена\. 

После того как информация об уязвимостях была распространена к HAFIUM присоединились и другие злоумышленники\. В ходе атак пострадали такие организации как Министерство труда и социальных дел в Чехии, почтовые отделения в Праге, а также Европейское банковское управление\. Хакеры не только крали данные почтовых ящиков, но и устанавливали на скомпрометированные сервера майнеры и шифровальщики\. 

### Log4j

Впервые уязвимость в популярной библиотеке Log4j была обнаружена в декабре 2021 года\. Log4j используется в множестве приложений и серверах, например, таких компаний как Apple, Amazon, Twitter, Cloudflare и других\. Изначально ошибку зафиксировали при выявлении багов на серверах Minecraft\.

[CVE\-2021\-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) CVSS 10\.0\. Log4Shell – уязвимость дает возможность выполнять произвольный код, причем для атаки достаточно чтобы ссылающаяся на адрес атакующего запись оказалась в логах\. Для этого можно разместить вредоносную строку, например, jndi:ldap://\[URL\-атакующего\] в URL\-адресе HTTP\-запроса\. Когда приложение или сервер будет обрабатывать такие логи, запись заставит сервер выполнить запрос на указанный URL\. В ответ на запрос отдается Java класс, который и выполняет произвольный код\. 

После обнаружения уязвимости разработчики Apache Software Foundation выпустили патч в версии 2\.15\.0, однако спустя несколько дней была обнаружена уязвимость, которой присвоили номер CVE\-2021\-45046\.

[CVE\-2021\-45046](https://nvd.nist.gov/vuln/detail/CVE-2021-45046) СVSS 9\.0\. Атакующий может эксплуатировать уязвимость, если в ПО использованы нестандартные шаблоны с поиском по контексту\. Это даёт возможность создать переменную поиска, которая вызовет рекурсивный поиск, что приведёт к атаке вида "отказ в обслуживании" \(DoS\) и отключению уязвимых служб\. Для некоторых специфических конфигураций эксплуатация уязвимости может привести к удалённому выполнению кода\. Из\-за обнаружения такой возможности изначальная оценка по CVSS этой уязвимости изменилась с 3,7 до 9\.0\. 

В первом обновлении разработчики выключили лишь одну функцию JNDI по поиску сообщений\. Этого было недостаточно и в следующем патче Apache по умолчанию выключила всю поддержку JNDI\. 

Однако из\-за возросшего интереса исследователей безопасности к библиотеке было выявлено еще несколько уязвимостей\. 

[CVE\-2021\-45105](https://nvd.nist.gov/vuln/detail/CVE-2021-45105) CVSS 5\.9\. Уязвимость дает реализовать атаку "отказ в обслуживании", при использовании специального рекурсивного запроса\. 

[CVE\-2021\-44832](https://nvd.nist.gov/vuln/detail/CVE-2021-44832) CVSS 6\.6\. Уязвимость может привести к выполнению произвольного кода, если у атакующего есть права на изменение файла конфигурации\. Хотя эту уязвимость и сложнее эксплуатировать, чем Log4Shell, злоумышленник может использовать её после получения необходимых прав с помощью других уязвимостей\.

По [данным](https://www.cisa.gov/uscert/ncas/alerts/aa22-117a) Агентства по кибербезопасности и инфраструктуре США \(CISA\) уязвимость Log4Shell стала самой популярной у киберпреступников в 2021 году\. Злоумышленники используют уязвимости в Log4j для различных целей, например, создания DDoS\-ботнетов и установки криптомайнеров\. 

Из [исследования](https://www.rezilion.com/wp-content/uploads/2022/04/Log4Shell-4-Months-Later.pdf) компании Rezilion следует, что до сих пор остаётся ещё множество уязвимых приложений\. В основном угроза сохраняется для не обновлённых контейнеров и публичных серверов Minecraft\.

Так же всё ещё остаются приложения, использующие библиотеку Log4J версии 1\.x, потому что оригинальная уязвимость Log4Shell [CVE\-2021\-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) не относится к этой версии\. Однако поддержка Log4J 1\.x прекращена с 2015 года и в ней также содержится множество других уязвимостей\.

### Как оставаться защищённым?

Если уязвимость попала в базу CVE, это означает, что для нее уже готово решение в виде патча и рекомендаций от производителя ПО\. Поэтому самым простым способом поддерживать безопасность является своевременное скачивание обновлений\. 

В случае, когда обновление осложнено или невозможно, применяют "виртуальный патч" – оперативное временное решение, блокирующее возможность эксплуатации уязвимости\.  Обычно виртуальные патчи реализуются на файрволлах\. После анализа входящих пакетов они препятствуют проникновению вредоносного трафика к уязвимому приложению\. 

Виртуальный патч не устраняет дефекты в приложении и не покрывает все возможные способы использования уязвимости атакующими, однако он снижает риск подвергнуться атаке до тех пор, пока не будет внедрено постоянное решение\.

Для определения существующих уязвимостей у приложений в системе применяют сканеры безопасности\. Также, мерой борьбы с уязвимостями может стать анализ доступного исходного кода используемых программ\. 

Для поиска потенциальных уязвимостей применяют SAST \(Static Application Security Testing\) – анализ кода без запуска исследуемого приложения\.  Наиболее эффективным методом использования анализатора кода является использование его с начала разработки\. Это увеличивает шанс нахождения ошибки еще на этапе кодирования\. Чем дольше уязвимое место находится в программе, тем сложнее и дороже обойдется её устранение\. О преимуществах использования SAST можете прочитать в статье: "[Место SAST в Secure SDLC](https://pvs-studio.ru/ru/blog/posts/0937/)"\. A о том, как PVS\-Studio помогает в поисках уязвимостей, можно почитать в отдельной [статье](https://pvs-studio.ru/ru/blog/posts/cpp/0514/)\. 

Наиболее распространённые потенциальные уязвимости публикуются в нескольких списках, таких как [CWE Top 25](https://cwe.mitre.org/top25/archive/2021/2021_cwe_top25.html) и [OWASP Top 10](https://owasp.org/www-project-top-ten/)\. OWASP Top 10 – отчёт проекта OWASP \(Open Web Application Security Project\) об основных проблемах связанных с безопасностью веб\-приложений\. CWE Top 25 предоставляет отчёт о самых распространенных недостатках в программном обеспечении и оборудовании\. Умение SAST\-анализаторов работать с этими списками позволяет сосредоточиться разработчикам на устранении серьёзных уязвимостей, которые могут причинить наибольший ущерб в случае их эксплуатации\.

Для автоматизации проверки на наличие уязвимостей, найденных в кодовой базе компонентов с открытым исходным кодом, применяют методику Software Composition Analysis \(SCA\)\. SCA\-инструменты идентифицируют конкретные версии open\-source библиотек и находят связанные с ними уязвимости\. SCA\-решения также помогают избегать проблем с использованием библиотек с истекшей поддержкой и устранить риски, связанные с лицензиями\.  

О планах добавить SCA в PVS\-Studio почитать можно [здесь](https://pvs-studio.ru/ru/blog/posts/csharp/0876/)\.

## Заключение

Надеюсь, что данная статья помогла вам разобраться в том, что такое CVE, и напомнила о крупных уязвимостях прошедшего года\. 

Использование PVS\-Studio как SAST\-решения поможет найти потенциальные уязвимости и повысит безопасность кода\. Регулярное использование статического анализа позволяет выявлять ошибки как можно раньше и тратить меньше ресурсов на их исправление\. Анализатор PVS\-Studio успешно справляется с поиском дефектов, классифицируемых по CWE и стандартами OWASP\. Также планируется реализация SCA функций для поиска проблемных зависимостей\. 

Предлагаю [скачать и попробовать](https://pvs-studio.ru/ru/pvs-studio/try-free/) PVS\-Studio на вашем проекте, ведь всегда есть вероятность, что в нём найдутся ошибки, которые нарушают безопасность вашего кода\.