Список 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 всегда можно посмотреть на нашем сайте.


#


CWE ID


Имя


Оценка


KEV


Диагностики PVS‑Studio


1


CWE‑787


Out-of-bounds Write


64,20


62


C++: V512, V557, V582, V645
C#: V3106
Java: V6025

2


CWE‑79


Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')


45,97


2


C#: V5610

3


CWE‑89


Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')


22,11


7


C#: V5608

4


CWE‑20


Improper Input Validation


20,63


20


C++: V739, V781, V1010, V1024, V5009

5


CWE‑125


Out-of-bounds Read


17,67


1


C++: V512, V557, V582
C#: V3106
Java: V6025

6


CWE‑78


Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')


17,53


32


C++: V1010, V5009
C#: V5616

7


CWE‑416


Use After Free


15,50


28


C++: V623, V723, V758, V774, V1017

8


CWE‑22


Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')


14,08


19


C#: V5609

9


CWE‑352


Cross-Site Request Forgery (CSRF)


11,53


1


Coming in the future


10


CWE‑434


Unrestricted Upload of File with Dangerous Type


9,56


6


Coming in the future


11


CWE‑476


NULL Pointer Dereference


7,15


0


C++: V522, V595, V664, V713, V1004
C#: V3027, V3042, V3080, V3095, V3100, V3125, V3145, V3146, V3148, V3149, V3152, V3153, V3168
Java: V6008, V6060, V6093

12


CWE‑502


Deserialization of Untrusted Data


6,68


7


C#: V5611

13


CWE‑190


Integer Overflow or Wraparound


6,53


2


C++: V629, V658, V673, V683, V1026, V1028, V1083, V1085, V5004, V5005, V5006, V5007, V5010, V5011
C#: V3113
Java: V6105

14


CWE‑287


Improper Authentication


6,35


4


Coming in the future


15


CWE‑798


Use of Hard-coded Credentials


5,66


0


C++: V5013
C#: V5601
Java: V5305

16


CWE‑862


Missing Authorization


5,53


1


Coming in the future


17


CWE‑77


Improper Neutralization of Special Elements used in a Command ('Command Injection')


5,42


5


C#: V5616

18


CWE‑306


Missing Authentication for Critical Function


5,15


6


Coming in the future


19


CWE‑119


Improper Restriction of Operations within the Bounds of a Memory Buffer


8,85


6


C++: V512, V557, V582, V769, V783, V1004

20


CWE‑276


Incorrect Default Permissions


4,84


0


Coming in the future


21


CWE‑918


Server-Side Request Forgery (SSRF)


4,27


8


C#: V5618

22


CWE‑362


Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')


3,57


6


Coming in the future


23


CWE‑400


Uncontrolled Resource Consumption


3,56


2


Coming in the future


24


CWE‑611


Improper Restriction of XML External Entity Reference


3,38


0


C#: V5614

25


CWE‑94


Improper Control of Generation of Code ('Code Injection')


3,32


4


C++: V1076

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


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


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


#


CWE ID


Название


Позиция в 2021 г


Позиция в 2022 г


Изменение за год


1


CWE‑362


Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')


33


22


11▲

2


CWE‑77


Improper Neutralization of Special Elements used in a Command ('Command Injection')


25


17


8▲

3


CWE‑400


Uncontrolled Resource Consumption


27


23


4▲

4


CWE‑476


NULL Pointer Dereference


15


11


4▲

5


CWE‑94


Improper Control of Generation of Code ('Code Injection')


28


25


3▲

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

#


CWE ID


Название


Позиция в 2021 г


Позиция в 2022 г


Изменение за год


1


CWE‑522


Insufficiently Protected Credentials


21


38


17▼

2


CWE‑200


Exposure of Sensitive Information to an Unauthorized Actor


20


33


13▼

3


CWE‑732


Incorrect Permission Assignment for Critical Resource


22


30


8▼

4


CWE‑306


Missing Authentication for Critical Function


11


18


7▼

«Новички» в Top 25:

#


CWE ID


Название


Позиция в 2021 г


Позиция в 2022 г


Изменение за год


1


CWE‑362


Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')


33


22


11▲

2


CWE‑400


Uncontrolled Resource Consumption


27


23


4▲

3


CWE‑94


Improper Control of Generation of Code ('Code Injection')


28


25


3▲

Ну и в конце – дефекты, которые выбыли из CWE Top 25 в 2022 году:

#


CWE ID


Название


Позиция в 2021 г


Позиция в 2022 г


Изменение за год


1


CWE‑200


Exposure of Sensitive Information to an Unauthorized Actor


20


33


13▼

2


CWE‑522


Insufficiently Protected Credentials


21


23


2▼

3


CWE‑732


Incorrect Permission Assignment for Critical Resource


22


30


8▼

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


  • первые десять мест в топе остаются достаточно стабильными;
  • 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 году:


#


CWE ID


Название


Оценка


KEV


Изменение за год


26


CWE‑295


Improper Certificate Validation


3,12


2


-


27


CWE‑427


Uncontrolled Search Path Element


3,12


0


7▲

28


CWE‑863


Incorrect Authorization


3,10


0


10▲

29


CWE‑269


Improper Privilege Management


3,06


3


-


30


CWE‑732


Incorrect Permission Assignment for Critical Resource


2,93


1


8▼

31


CWE‑843


Access of Resource Using Incompatible Type ('Type Confusion')


2,87


10


5▲

32


CWE‑668


Exposure of Resource to Wrong Sphere


2,68


0


21▲

33


CWE‑200


Exposure of Sensitive Information to an Unauthorized Actor


2,49


2


13▼

34


CWE‑1321


Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')


2,48


0


новый


35


CWE‑601


URL Redirection to Untrusted Site ('Open Redirect')


2,41


0


2▲

36


CWE‑401


Missing Release of Memory after Effective Lifetime


2,39


0


4▼

37


CWE‑59


Improper Link Resolution Before File Access ('Link Following')


2,38


4


6▼

38


CWE‑522


Insufficiently Protected Credentials


2,25


0


17▼

39


CWE‑319


Cleartext Transmission of Sensitive Information


2,15


0


4▼

40


CWE‑312


Cleartext Storage of Sensitive Information


2,01


0


1▲




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


Заключение


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


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


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


Комментарии (0)