CWE Top 25 2022. Обзор изменений

Список CWE Top 25 отражает наиболее серьёзные недостатки безопасности ПО. Предлагаю вам ознакомиться с обновлённым топом в обзоре изменений за прошедший год.

CWE_top_25_2022_ru

Мы позиционируем анализатор PVS‑Studio не только как средство для поиска ошибок в коде, но и как инструмент для статического тестирования защищённости приложений (Static Application Security Testing, сокр. SAST). Для лучшего понимания трендов и планирования диагностических правил нет ничего лучше, чем заглянуть в свежий список наиболее актуальных проблем безопасности. Таких списков несколько, например, OWASP Top 10, SANS Top 25, и уже названный ранее CWE Top 25.

Кстати, в прошлом году мы уже писали обзор изменений в CWE Top 25 2021. При желании с ним можно ознакомиться здесь.


Немного теории

Для лучшего понимания контекста не помешает освежить в памяти основные моменты. Для этого я кратко пробегусь по следующим темам:


  • чем CVE отличается от CWE;
  • зачем нужен CVSS;
  • что такое NVD и KEV;
  • как ранжируется CWE Top 25 в 2022 году.

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

Чем «дефект» (недостаток) отличается от уязвимости в ПО?

Дефекты (недостатки) — это ошибки, сбои и прочие проблемы реализации, проектирования или архитектуры программного обеспечения, которые могут привести к уязвимостям.

Уязвимости — уже найденные кем-то ошибки, которые могут быть напрямую использованы злоумышленниками для получения доступа к системе или сети, нарушения работы сервисов и так далее.

Что такое CWE, чем отличается от CVE, при чем тут CVSS и откуда взялся KEV?


  • CWE (Common Weakness Enumeration) — общий перечень дефектов (недостатков) безопасности.
  • CVE (Common Vulnerabilities and Exposures) — перечень уязвимостей, обнаруженных в программном обеспечении.
  • CVSS (Common Vulnerability Scoring System) — числовая оценка, показывающая потенциальную критичность уязвимости (CVE). Она основана на стандартизированном наборе характеристик.
  • KEV (Known Exploited Vulnerabilities) — каталог известных эксплуатируемых уязвимостей.

И зачем мне вообще знать про CWE?

Сегодня CWE используется как основное средство при обсуждении устранения и/или смягчения недостатков безопасности в архитектуре, дизайне, коде и реализации программного обеспечения. Организации используют CWE в качестве стандартной меры для оценки инструментов проверки безопасности ПО и в качестве общего базового стандарта для идентификации, предупреждения и смягчения негативных последствий.

CWE_top_25_2022_ru/image2.png

Что такое CWE Top 25?

CWE Top 25 — это список наиболее опасных и распространённых недостатков. Эти недостатки опасны потому, что часто их легко найти и использовать. Они могут позволить злоумышленникам помешать работе приложения, украсть данные или даже полностью захватить систему. CWE Top 25 — это значимый ресурс сообщества, который может помочь получить представление о наиболее распространённых и опасных на данный момент недостатках безопасности.

Каков алгоритм составления и ранжирования списка CWE Top 25 2022?

Основными источниками информации для исследования в этом году являлись:


  • национальная база данных уязвимостей США (U.D. National Vulnerability Database (NVD)) за 2020–2021 годы;
  • каталог эксплуатируемых уязвимостей (KEV) агентства по кибербезопасности и защите инфраструктуры США (Cybersecurity and Infrastructure Security Agency (CISA)), составленного в ноябре 2021 года.

Полученные данные команда исследователей преобразовала согласно методу «View-1003» для уменьшения специфичности записей. Благодаря этому, например, CWE‑122 (Heap-Based Buffer Overflow) будет преобразована к базовой CWE‑787 (Out-of-Bounds Write). Также были отфильтрованы следующие категории записей:


  • без оценки CVSS;
  • помеченные как отклонённые;
  • для которых отсутствует сопоставление CVE → CWE;
  • относящиеся к категориям «CWE‑Other» и «NVD-CWE‑noinfo».

Далее команда исследователей применила собственную формулу для расчёта порядка ранжирования, учитывающую частоту, с которой какой-либо недостаток (CWE) является основной причиной уязвимости, и потенциальную опасность эксплуатации. Частота и прогнозируемая серьёзность нормализованы относительно своих минимальных и максимальных значений. Для вычисления частоты упоминания в формуле подсчитывается, сколько раз CVE ссылались на CWE в базе данных NVD.

Freq = {count (CWE_X' ∈ NVD) for each CWE_X' in NVD}

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

В целом методология анализа данных в этом году не претерпела существенных изменений. А вот уже в следующем году авторы планируют более значительные перемены. Вот некоторые из них:


  • возможность создания узкоспециализированных списков, как например Top 25 для мобильных приложений и т.п.;
  • рассмотреть возможность изменения метрик, используемых для составления списка, для уменьшения предвзятости данных (подробнее);
  • улучшить методику View-1003;
  • использовать другие способы нормализации, кроме View-1003;
  • по возможности, проводить сопоставления CVE → CWE более часто, чтобы уменьшить число единовременных правок в данные по сопоставлению.

Более подробно о методологии подготовки и анализа данных можно прочитать в дополнительных сведениях к исследованию.

Насколько большая выборка в этом году?

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

CWE Top 25 действительно обновляется каждый год?

Да, CWE Top 25 обновляется ежегодно. Предыдущие выпуски CWE Top 25 можно посмотреть в архиве.

Кто занимается составлением CWE Top 25?

Сообщество CWE включает как отдельных исследователей, так и представителей многочисленных организаций, научного сообщества и государственных структур, заинтересованных в активном сокращении и устранении недостатков в программном обеспечении. Конкретный список участников команды CWE можно посмотреть на странице «CWE Community Members».

Более подробно познакомиться с классификацией можно на сайте cwe.mitre.org.


Положение дел сегодня

Ниже представлена таблица соответствия между списком CWE Top 25 2022 и диагностиками PVS-Studio с разделением по языкам программирования. Наиболее актуальную таблицу с покрытием CWE Top 25 всегда можно посмотреть на нашем сайте.

Как видно из таблицы, на данный момент статический анализатор PVS-Studio обеспечивает покрытие 68% (17 из 25) списка CWE Top 25 2022. В прошлом году это значение составляло 52%. Довольно значимое улучшение покрытия за год и во многом это заслуга большого количества SAST-ориентированных диагностик, выпущенных за прошедший год.


Изменения за последний год

Самые крупные передвижения вверх:


Самые крупные передвижения вниз:
«Новички» в Top 25:
Ну и в конце — дефекты, которые выбыли из CWE Top 25 в 2022 году:

Краткий итог по изменениям:


  • первые десять мест в топе остаются достаточно стабильными;
  • CWE‑787 (Out-of-bounds Write) всё также удерживает лидерство;
  • CWE‑502 (Deserialization of Untrusted Data) и CWE‑862 (Missing Authorization) уверенно поднимаются год от года;
  • в этом году в топ ворвался CWE‑362 (Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')), поднявшись сразу на 11 пунктов вверх по сравнению с прошлым годом;
  • появившаяся в 2020 и резко взлетевшая в прошлом году CWE‑306 (Missing Authentication for Critical Function) сильно потеряла позиции в текущем;
  • самым же крупным движением вниз отметилась CWE‑522 (Insufficiently Protected Credentials), которая упала вниз сразу на 17 пунктов.


За бортом

Бонусом предлагаю посмотреть, какие недостатки оказались ниже основного списка CWE Top 25 в 2022 году и вполне могут подняться в 2023 году:

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


Заключение

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

К счастью, в борьбе с потенциальными уязвимостями помогают статические анализаторы, и поэтому по традиции мне хотелось бы предложить вам скачать и попробовать проверить свой проект статическим анализатором PVS-Studio. Вдруг и у вас в код закралась парочка CWE, которые только и ждут удобного момента, чтобы стать полноценными CVE:)


Дополнительные ссылки


© Habrahabr.ru