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

#

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 🙂

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


ссылка на оригинал статьи https://habr.com/ru/company/pvs-studio/blog/677440/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *