- Распространенные уязвимости и воздействия — Common Vulnerabilities and Exposures
- СОДЕРЖАНИЕ
- Идентификаторы CVE
- Поля данных CVE
- Описание
- использованная литература
- Дата создания записи
- Устаревшие поля
- Изменения в синтаксисе
- CVE SPLIT и MERGE
- Искать идентификаторы CVE
- CVE использование
- Проблемы с назначением CVE
- CWE Top 25 2021. Что такое, с чем едят и чем полезен при статическом анализе?
- CWE. Что такое и с чем едят
- Положение дел сегодня
- Изменения в CWE Top 25 за последний год
- Заключение
Распространенные уязвимости и воздействия — Common Vulnerabilities and Exposures
Система Common Vulnerabilities and Exposures ( CVE ) предоставляет эталонный метод для общедоступных уязвимостей и уязвимостей информационной безопасности . Система национальной кибербезопасности США FFRDC , управляемая The Mitre Corporation , обслуживается при финансовой поддержке Управления национальной кибербезопасности США Министерства внутренней безопасности США. Система была официально запущена для общественности в сентябре 1999 года.
Content Security Automation Protocol использует CVE и идентификаторы CVE перечислены в системе митры, а также в США Национальной базы данных уязвимостей .
СОДЕРЖАНИЕ
Идентификаторы CVE
В документации MITER Corporation идентификаторы CVE (также называемые «именами CVE», «номерами CVE», «идентификаторами CVE» и «CVE») определены как уникальные общие идентификаторы для широко известных уязвимостей информационной безопасности в общедоступных пакетах программного обеспечения. Исторически идентификаторы CVE имели статус «кандидата» («CAN-») и затем могли быть переведены в записи («CVE-»), однако эта практика была прекращена в 2005 году, и все идентификаторы теперь назначаются как CVE. Присвоение номера CVE не является гарантией того, что он станет официальной записью CVE (например, CVE может быть неправильно назначен проблеме, которая не является уязвимостью безопасности или дублирует существующую запись).
CVE присваиваются органом нумерации CVE (CNA). Хотя некоторые поставщики ранее действовали как CNA, имя и обозначение не были созданы до 1 февраля 2005 г. Существует три основных типа присвоения номеров CVE:
- В Митра Corporation функционирует как редактор и первичного CNA
- Различные CNA назначают номера CVE для своих продуктов (например, Microsoft, Oracle, HP, Red Hat и т. Д.)
- Сторонний координатор, такой как Координационный центр CERT, может назначить номера CVE для продуктов, на которые не распространяются другие CNA.
При исследовании уязвимости или потенциальной уязвимости полезно получить номер CVE на ранней стадии. Номера CVE могут не отображаться в базах данных MITER или NVD CVE в течение некоторого времени (дни, недели, месяцы или потенциально годы) из-за проблем, на которые наложено эмбарго (номер CVE был назначен, но проблема не была обнародована) или в случаи, когда запись не исследуется и не записывается MITER из-за проблем с ресурсами. Преимущество ранней кандидатуры CVE заключается в том, что вся будущая переписка может относиться к номеру CVE. Информацию о получении идентификаторов CVE для проблем с проектами с открытым исходным кодом можно получить в Red Hat .
CVE предназначены для публично выпущенного программного обеспечения; это может включать бета-версии и другие предварительные версии, если они широко используются. Коммерческое программное обеспечение включено в категорию «публично выпущенное», однако специально разработанное программное обеспечение, которое не распространяется, обычно не получает CVE. Кроме того, сервисам (например, интернет-провайдеру электронной почты) не назначаются CVE для уязвимостей, обнаруженных в сервисе (например, уязвимости XSS), если только проблема не существует в базовом программном продукте, который распространяется публично.
Поля данных CVE
База данных CVE содержит несколько полей:
Описание
Это стандартное текстовое описание проблемы. Одна общая запись:
Это означает, что номер записи был зарезервирован Mitre для выпуска или CNA зарезервировал номер. Таким образом, в случае, когда CNA заранее запрашивает блок номеров CVE (например, Red Hat в настоящее время запрашивает CVE блоками по 500), номер CVE будет помечен как зарезервированный, даже если сам CVE не может быть назначен CNA для некоторых время. Пока CVE не назначен, Mitre уведомляется об этом (т. Е. Прекращается действие эмбарго и проблема становится общедоступной), а Mitre исследовал проблему и написал ее описание, записи будут отображаться как «** RESERVED **. «.
использованная литература
Это список URL-адресов и другой информации
Дата создания записи
Это дата создания записи. Для CVE, назначенных непосредственно Mitre, это дата, когда Mitre создал запись CVE. Для CVE, назначенных CNA (например, Microsoft, Oracle, HP, Red Hat и т. Д.), Это также дата, созданная Mitre, а не CNA. Случай, когда CNA запрашивает блок номеров CVE заранее (например, Red Hat в настоящее время запрашивает CVE блоками по 500), дату входа, которую CVE назначает CNA.
Устаревшие поля
Следующие поля ранее использовались в старых записях CVE, но больше не используются.
- Фаза: фаза, в которой находится CVE (например, CAN, CVE).
- Голоса: Раньше члены правления голосовали «да» или «против» по поводу того, следует ли принимать CAN и преобразовывать ее в CVE.
- Комментарии: Комментарии к проблеме.
- Предложено: когда проблема была впервые предложена.
Изменения в синтаксисе
Для поддержки идентификаторов CVE за пределами CVE-YEAR-9999 (также известного как проблема CVE10k) в 2014 году в синтаксис CVE были внесены изменения, которые вступили в силу 13 января 2015 года.
Новый синтаксис CVE-ID имеет переменную длину и включает:
Префикс CVE + год + произвольные цифры
ПРИМЕЧАНИЕ. Произвольные цифры переменной длины начинаются с четырех фиксированных цифр и дополняются произвольными цифрами только при необходимости в календарном году, например, CVE-YYYY-NNNN и при необходимости CVE-YYYY-NNNNN, CVE-YYYY-NNNNNN и скоро. Это также означает, что не потребуется никаких изменений в ранее назначенных идентификаторах CVE-ID, которые содержат не менее четырех цифр.
CVE SPLIT и MERGE
CVE пытается назначить одну CVE для каждой проблемы безопасности, однако во многих случаях это может привести к чрезвычайно большому количеству CVE (например, когда в приложении PHP обнаруживается несколько десятков уязвимостей межсайтового скриптинга из-за отсутствия использования htmlspecialchars() или небезопасного создания файлов в /tmp ).
Чтобы справиться с этим, существуют руководящие принципы (могут быть изменены), которые охватывают разделение и объединение проблем в отдельные номера CVE. В качестве общего правила сначала следует рассмотреть проблемы, которые необходимо объединить, затем проблемы следует разделить по типу уязвимости (например, переполнение буфера или переполнение стека ), а затем по версии программного обеспечения, на которую она влияет (например, если одна проблема затрагивает версии с 1.3.4 по 2.5.4, а другие затрагивают 1.3.4–2.5.8 (они будут SPLIT), а затем сообщать о проблеме (например, Алиса сообщает об одной проблеме, а Боб сообщает о другой проблеме, проблемы будут разделены на отдельные номера CVE).
Другой пример: Алиса сообщает об уязвимости создания файла / tmp в версии 1.2.3 и ранее веб-браузера ExampleSoft, помимо этой проблемы /tmp обнаружено несколько других проблем с созданием файлов, в некоторых случаях это можно рассматривать как два репортера (и, таким образом, SPLIT на две отдельные CVE, или, если Алиса работает в ExampleSoft, а внутренняя команда ExampleSoft находит остальные, они могут быть объединены в одну CVE). И наоборот, проблемы могут быть объединены, например, если Боб обнаружит 145 уязвимостей XSS в ExamplePlugin для ExampleFrameWork, независимо от затронутых версий, и так далее, они могут быть объединены в один CVE.
Искать идентификаторы CVE
База данных Mitre CVE может быть найдена в поиске по списку CVE, а база данных CVE NVD может быть найдена в Search CVE и базе данных уязвимостей CCE .
CVE использование
Идентификаторы CVE предназначены для использования с целью выявления уязвимостей:
Common Vulnerabilities and Exposures (CVE) — это словарь общих имен (т. Е. Идентификаторов CVE) для широко известных уязвимостей информационной безопасности. Общие идентификаторы CVE упрощают обмен данными между отдельными базами данных и инструментами сетевой безопасности и обеспечивают основу для оценки охвата инструментов безопасности организации. Если отчет одного из ваших инструментов безопасности включает идентификаторы CVE, вы можете быстро и точно получить доступ к информации об исправлениях в одной или нескольких отдельных CVE-совместимых базах данных для устранения проблемы.
Пользователям, которым был присвоен идентификатор CVE для уязвимости, рекомендуется убедиться, что они помещают идентификатор во все связанные отчеты о безопасности, веб-страницы, электронные письма и т. Д.
Проблемы с назначением CVE
Согласно разделу 7.1 Правил CNA, поставщик, получивший отчет об уязвимости системы безопасности, имеет в отношении нее полную свободу действий. [1] Это может привести к конфликту интересов, поскольку поставщик может попытаться оставить недостатки не исправленными, отказав в назначении CVE в первую очередь — решение, которое Mitre не может отменить.
Источник
CWE Top 25 2021. Что такое, с чем едят и чем полезен при статическом анализе?
Впервые поддержка классификации CWE появилась в PVS-Studio с релизом 6.21, который состоялся 15 января 2018 года. С тех пор прошло уже очень много времени, и хотелось бы рассказать об улучшениях, связанных с поддержкой этой классификации в последних версиях анализатора.
Мы позиционируем анализатор PVS-Studio не только как средство для поиска опечаток и ошибок в коде, но и как инструмент статического тестирования защищённости приложений (Static Application Security Testing, SAST). Для этого необходимо уметь находить ошибки и потенциальные уязвимости, а также сопоставлять их с различными стандартами (например CWE, OWASP, SEI CERT, MISRA, AUTOSAR). Почему именно потенциальные уязвимости? Потому что они (CWE) станут реальными уязвимостями (CVE), только если кто-нибудь начнёт их эксплуатировать. А для этого нередко должно совпасть множество порой не связанных между собой факторов.
Именно с этой целью мы решили проверить, а насколько же хорошо PVS-Studio покрывает самые распространённые на данный момент дефекты. Для этого достаточно обратиться к списку CWE Top 25, который мы почему-то долго обходили стороной. Что ж, пора исправляться!
CWE. Что такое и с чем едят
Думаю, для продолжения не помешает освежить в памяти основные моменты и определения. Если вы хорошо ориентируетесь в терминологии, знаете, чем отличается CVE от CWE, зачем нужен CVSS, как ранжируется CWE Top 25, то можете пропустить этот раздел. Остальным настоятельно советую ознакомиться для удобства дальнейшего чтения. Далее довольно вольный перевод и интерпретация некоторых пунктов CWE FAQ и CVE FAQ:
Чем «дефект» (недостаток) отличается от уязвимости в ПО?
Дефекты (недостатки) – это ошибки, сбои и прочие проблемы реализации, проектирования или архитектуры программного обеспечения, которые могут привести к уязвимостям.
Уязвимости – уже найденные кем-то ошибки, которые могут быть напрямую использованы злоумышленниками для получения доступа к системе или сети, нарушения работы сервисов и так далее.
Что такое CWE, чем отличается от CVE и при чем тут CVSS?
- CWE (Common Weakness Enumeration) – общий перечень дефектов (недостатков) безопасности.
- CVE (Common Vulnerabilities and Exposures) – перечень уязвимостей и дефектов, обнаруженных в различном программном обеспечении.
- CVSS (Common Vulnerability Scoring System) – числовая оценка, показывающая потенциальную серьёзность уязвимости (CVE). Она основана на стандартизированном наборе характеристик.
Что такое CWE Top 25?
CWE Top 25 – это список наиболее опасных и распространённых недостатков. Эти недостатки опасны потому, что часто их легко найти и использовать. Они могут позволить злоумышленникам помешать работе приложения, украсть данные или даже полностью захватить систему. CWE Top 25 – это значимый ресурс сообщества, который может помочь разработчикам, тестировщикам, пользователям, а также руководителям проектов, исследователям безопасности и преподавателям получить представление о наиболее распространённых и опасных на данный момент недостатках безопасности.
Каков алгоритм составления и ранжирования списка CWE Top 25?
При составлении текущей редакции списка CWE Top 25 были использованы данные, полученные из национальной базы данных уязвимостей США (U.D. National Vulnerability Database (NVD)) за 2019–2020 годы. Далее команда исследователей использовала на полученных данных собственную формулу для расчёта порядка ранжирования, учитывающую частоту, с которой какой-либо недостаток (CWE) является основной причиной уязвимости, и потенциальную опасность эксплуатации. Частота и прогнозируемая серьёзность нормализованы относительно своих минимальных и максимальных значений.
Для вычисления частоты упоминания в формуле подсчитывается, сколько раз CVE ссылались на CWE в базе данных NVD. В расчёте используются только те CVE, которые имеют ссылку на CWE, поскольку использование полного набора данных привело бы к очень низким показателям частоты и незначительной разнице между различными типами дефектов.
Fr(CWE_X) = (count(CWE_X ∈ NVD) — min(Freq)) / (max(Freq) — min(Freq))
Другим важным компонентом формулы ранжирования является расчёт серьёзности недостатка, который вычисляется по формуле:
Sv(CWE_X) = (average_CVSS_for_CWE_X — min(CVSS)) / (max(CVSS) — min(CVSS))
Ну и в конце вычисляется итоговая оценка путём перемножения оценки частоты упоминания на оценку серьёзности.
Score(CWE_X) = Fr(CWE_X) * Sv(CWE_X) * 100
Хотя этот метод и вносит некоторую предвзятость за счёт анализа только обнаруженных уязвимостей и потенциально может исключить широкий пласт данных, команда CWE считает, что в результате каждый год будет составляться более точный список CWE Top 25.
CWE Top 25 действительно обновляется каждый год?
Да, CWE Top 25 обновляется ежегодно. Предыдущие выпуски CWE Top 25 можно посмотреть в архиве.
Кто занимается составлением CWE Top 25?
Сообщество CWE включает как отдельных исследователей, так и представителей многочисленных организаций, научного сообщества и государственных структур, заинтересованных в активном сокращении и устранении недостатков в программном обеспечении. Конкретный список участников команды CWE можно получить на странице «CWE Community Members».
И зачем мне это знать?
Сегодня CWE используется как основное средство при обсуждении устранения и/или смягчения недостатков безопасности в архитектуре, дизайне, коде и реализации программного обеспечения. Организации используют CWE в качестве стандартной меры для оценки инструментов проверки безопасности ПО и в качестве общего базового стандарта для идентификации, предупреждения и смягчения негативных последствий.
Пару примеров ошибок?
Классификация CWE покрывает наиболее часто встречающиеся проблемы с разработкой ПО и различного оборудования. Например:
- программные дефекты: переполнения буферов, ошибки форматной строки; проблемы структуры и валидации данных; манипуляции со специальными элементами; ошибки путей; проблемы с обработчиками; ошибки пользовательского интерфейса; проблемы обхода каталогов и распознавания эквивалентности путей; ошибки аутентификации; ошибки управления ресурсами; недостаточный уровень проверки данных; проблемы оценки входящих данных и внедрение кода; проблемы предсказуемости и недостаточная «случайность» случайных чисел;
- аппаратные дефекты: ошибки вычислений, обычно связанные с процессорами, графикой, компьютерным зрением (Vision), искусственным интеллектом (AI), ПЛИС (FPGA) и микроконтроллерами (uControllers); вопросы разделения привилегий и контроля доступа, относящиеся к идентификации, общим ресурсам, контролю блокировок и другим возможностям и механизмам; вопросы питания, работы часов, обработки напряжения, тока или температуры, контроля тактовой частоты и сохранения/восстановления состояния.
Более подробно познакомиться с классификацией можно на сайте cwe.mitre.org.
Положение дел сегодня
С момента начала использования классификации CWE для диагностик PVS-Studio прошло более трёх лет, и хотелось бы отметить существенное увеличение их количества. Если в 2018 году мы покрывали всего 94 пункта списка CWE, то сейчас уже почти 130. Однако сегодня у нас разговор не про общее количество диагностик, а только про те, что входят в список наиболее опасных в 2021 году. Если же вас интересует полный список, то ознакомиться с ним можно в разделе «Соответствие CWE» нашей документации.
Ниже представлена таблица соответствия между списком CWE Top 25 2021 и диагностиками PVS-Studio с разделением по языкам программирования. В дальнейшем мы собираемся регулярно обновлять таблицу с покрытием CWE Top 25 на нашем сайте.
# | CWE ID | Имя | Оценка | Диагностики PVS-Studio |
---|---|---|---|---|
1 | CWE-787 | Out-of-bounds Write | 65,93 | C++: V512, V557, V582, V645 C#: V3106 Java: V6025 |
2 | CWE-79 | Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’) | 46,84 | C#: V5610 |
3 | CWE-125 | Out-of-bounds Read | 24,90 | C++: V512, V557, V582 C#: V3106 Java: V6025 |
4 | CWE-20 | Improper Input Validation | 20,47 | C++: V739, V781, V1010, V1024, V5009 |
5 | CWE-78 | Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’) | 19,55 | C++: V1010, V5009 |
6 | CWE-89 | Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’) | 19,54 | C#: V5608 |
7 | CWE-416 | Use After Free | 16,83 | C++: V623, V723, V758, V774, V1017 |
8 | CWE-22 | Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’) | 14,69 | C#: V5609 |
9 | CWE-352 | Cross-Site Request Forgery (CSRF) | 14,46 | Coming in the future |
10 | CWE-434 | Unrestricted Upload of File with Dangerous Type | 8,45 | Coming in the future |
11 | CWE-306 | Missing Authentication for Critical Function | 7,93 | Coming in the future |
12 | CWE-190 | Integer Overflow or Wraparound | 7,12 | C++: V629, V658, V673, V683, V1026, V1028, V5004, V5005, V5006, V5007, V5010, V5011 C#: V3113 Java: V6105 |
13 | CWE-502 | Deserialization of Untrusted Data | 6,71 | C#: V5611 |
14 | CWE-287 | Improper Authentication | 6,58 | Coming in the future |
15 | CWE-476 | NULL Pointer Dereference | 6,54 | C++: V522, V595, V664, V713, V1004 C#: V3027, V3042, V3080, V3095, V3100, V3125, V3145, V3146, V3148, V3149, V3152, V3153, V3168 Java: V6008, V6060, V6093 |
16 | CWE-798 | Use of Hard-coded Credentials | 6,27 | C++: V5013 C#: V5601 Java: V5305 |
17 | CWE-119 | Improper Restriction of Operations within the Bounds of a Memory Buffer | 5,84 | C++: V512, V557, V582, V769, V783, V1004 |
18 | CWE-862 | Missing Authorization | 5,47 | Coming in the future |
19 | CWE-276 | Incorrect Default Permissions | 5,09 | Coming in the future |
20 | CWE-200 | Exposure of Sensitive Information to an Unauthorized Actor | 4,74 | Coming in the future |
21 | CWE-522 | Insufficiently Protected Credentials | 4,21 | Coming in the future |
22 | CWE-732 | Incorrect Permission Assignment for Critical Resource | 4,20 | Coming in the future |
23 | CWE-611 | Improper Restriction of XML External Entity Reference | 4,02 | Coming in the future |
24 | CWE-918 | Server-Side Request Forgery (SSRF) | 3,78 | Coming in the future |
25 | CWE-77 | Improper Neutralization of Special Elements used in a Command (‘Command Injection’) | 3,58 | Coming in the future |
Как видно из таблицы, на данный момент статический анализатор PVS-Studio обеспечивает покрытие 52% (13 из 25) списка CWE Top 25 2021. Вроде 52% это не так и много, но тут стоит учесть, что работы в этом направлении продолжаются и в будущем мы сможем находить ещё больше дефектов. Если же сократить этот список до 10 наиболее опасных и распространённых недостатков, то картина станет лучше — общее покрытие вырастет до 80%. 🙂 Но это уже совсем другая история.
Изменения в CWE Top 25 за последний год
Для самых искушённых предлагаю посмотреть краткую статистку по передвижениям в CWE Top 25 за последний год.
Пять самых крупных передвижений вверх:
# | CWE ID | Название | Позиция в 2020 г | Позиция в 2021 г | Изменение за год |
---|---|---|---|---|---|
1 | CWE-276 | Incorrect Default Permissions | 41 | 19 | 22▲ |
2 | CWE-306 | Missing Authentication for Critical Function | 24 | 11 | 13▲ |
3 | CWE-502 | Deserialization of Untrusted Data | 21 | 13 | 8▲ |
4 | CWE-862 | Missing Authorization | 25 | 18 | 7▲ |
5 | CWE-77 | Improper Neutralization of Special Elements used in a Command (‘Command Injection’) | 31 | 25 | 6▲ |
Пять самых крупных передвижений вниз:
# | CWE ID | Название | Позиция в 2020 г | Позиция в 2021 г | Изменение за год |
---|---|---|---|---|---|
1 | CWE-200 | Exposure of Sensitive Information to an Unauthorized Actor | 7 | 20 | 13▼ |
2 | CWE-119 | Improper Restriction of Operations within the Bounds of a Memory Buffer | 5 | 17 | 12▼ |
3 | CWE-94 | Improper Control of Generation of Code (‘Code Injection’) | 17 | 28 | 11▼ |
4 | CWE-269 | Improper Privilege Management | 22 | 29 | 7▼ |
5 | CWE-732 | Incorrect Permission Assignment for Critical Resource | 16 | 22 | 6▼ |
Большинство CWE, представленных в таблице выше, относятся к категориям, которые трудно поддаются анализу. Объяснить их снижение в рейтинге (а соответственно и появление в этой таблице) можно тем, что сообщество улучшило свои образовательные, инструментальные и аналитические возможности, тем самым уменьшив частоту упоминания ошибок, относящихся к данным категориям.
«Новички» в Top 25:
# | CWE ID | Название | Позиция в 2020 г | Позиция в 2021 г | Изменение за год |
---|---|---|---|---|---|
1 | CWE-276 | Incorrect Default Permissions | 41 | 19 | 22▲ |
2 | CWE-918 | Server-Side Request Forgery (SSRF) | 27 | 24 | 3▲ |
3 | CWE-77 | Improper Neutralization of Special Elements used in a Command (‘Command Injection’) | 31 | 25 | 6▲ |
Ну и в конце – дефекты, которые выбыли из CWE Top 25 в 2021 году:
# | CWE ID | Название | Позиция в 2020 г | Позиция в 2021 г | Изменение за год |
---|---|---|---|---|---|
1 | CWE-400 | Uncontrolled Resource Consumption | 23 | 27 | 4▼ |
2 | CWE-94 | Improper Control of Generation of Code (‘Code Injection’) | 17 | 28 | 11▼ |
3 | CWE-269 | Improper Privilege Management | 22 | 29 | 7▼ |
Заключение
Надеюсь, что данный материал был для вас интересен и помог разобраться в актуальной терминологии.
К счастью, в борьбе с потенциальными уязвимостями нам могут помочь статические анализаторы и поэтому, по традиции, мне хотелось бы предложить вам скачать и попробовать проверить свой проект статическим анализатором PVS-Studio. Вдруг и у вас в код закралась парочка CWE, которые только и ждут удобного момента, чтобы стать полноценными CVE 🙂
Источник