Common Vulnerability Scoring System
Common Vulnerability Scoring System (CVSS) — открытый стандарт, используемый для расчета количественных оценок уязвимости в безопасности компьютерной системы, обычно с целью понять приоритет её исправления.
Оценки рассчитываются по специальным формулам на основе нескольких метрик и приблизительно оценивают простоту внедрения эксплойта и его влияние на компьютерную систему. Результатом расчета являются три числовые оценки (Base Score, Temporal Score и Environmental Score), каждая из которых может принимать значение от 0 до 10, где 10 выражает максимальную опасность.
Последней версией стандарта является 3.1, выпущенная в июне 2019 года. По разным соображениям одни компании используют старую версию стандарта CVSSv2, другие новую CVSSv3, а третьи совмещают использование разных версий.
История
[править | править код]Исследования, проводимые в 2003—2004 годах Национальным Консультативным Советом по Инфраструктуре (англ. National Infrastructure Advisory Council, NIAC), привели к появлению в феврале 2005 года первой версии CVSS. Первоначальной целью было получение открытых и универсальных методов оценки серьёзности уязвимостей в программном обеспечении. В апреле 2005 NIAC запустила сайт Forum of Incident Response and Security Teams (сокр. FIRST), на котором была опубликована первая версия стандарта.
Первая версия стандарта не подвергалась экспертной оценке сторонних организаций, поэтому реальные отзывы компаний, специализировавшихся на разработке программного обеспечения и пытавшихся его использовать, обнажили многие серьёзные проблемы, в связи с чем в июне 2007 вышла вторая версия стандарта. Дальнейшее развитие привело к выходу третьей версии стандарта в июне 2015.
Основные моменты
[править | править код]CVSS пытается оценить уязвимость с разных сторон[1]:
- Качественная оценка уязвимости, которая не зависит ни от времени, ни от программного окружения, выражаемая через базовые метрики (Base metrics):
- Access Vector (AV) показывает каким путём уязвимость может быть внедрена.
- Access Complexity (AC) показывает насколько легко или сложно использовать данную уязвимость.
- Authentication (Au) оценивает количество аутентификаций, которые атакующий должен произвести прежде чем воспользоваться уязвимостью.
- Влияние уязвимости на компьютерную систему (Impact metrics):
- Confidentiality (C) описывает влияние на конфиденциальность данных, обрабатываемых системой.
- Integrity (I) описывает влияние на целостность данных компьютерной системы.
- Availability (A) описывает влияние уязвимости на доступность компьютерной системы. Например атаки, которые влияют на пропускную способность сети или занимающие процессорное время, влияют на доступность системы.
- Временны́е метрики (Temporal metrics), учитывающие реакцию производителя уязвимого продукта, которые изменяются с момента обнаружения уязвимости и до момента её исправления:
- Exploitability (E) показывает текущее состояние способов эксплуатации уязвимости, в том числе автоматизированных.
- Remediation Level (RL) является корректирующим числом, позволяющим смягчать временную оценку по мере того, как становятся доступны исправления для уязвимости.
- Report confidence (RC) позволяет измерить уровень уверенности в существовании уязвимости и достоверности её технических данных.
- Метрики уязвимости, учитывающие конкретные требования безопасности к системе, в которой работает уязвимый продукт (Environmental metrics):
- Collateral Damage Potential (CDP) оценивает потенциальный ущерб для компании от данной уязвимости, например потенциальный убыток, физический ущерб оборудованию и т. п.
- Target Distribution (TD) оценивает долю уязвимых систем в компьютерной сети.
- Impact Subscore Modifier включает в себя корректирующие числа confidentiality (CR), integrity (IR) и availability (AR), позволяющие скорректировать Impact metrics и конечную оценку под конкретные требования безопасности конкретного окружения.
Метрики для расчета берутся из таблиц, в которых приводится их описание, качественное и количественное значения. Ниже в таблице приведены метрики, введенные со второй версии стандарта[1].
Оценка | Метрика | Описание | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Base Score | Access Vector (AV) |
| ||||||||||||||||||
Access Complexity (AC) |
| |||||||||||||||||||
Authentication (Au) |
| |||||||||||||||||||
Confidentiality (C) |
| |||||||||||||||||||
Integrity (I) |
| |||||||||||||||||||
Availability (A) |
| |||||||||||||||||||
Temporal Score | Exploitability (E) |
| ||||||||||||||||||
Remediation Level (RL) |
| |||||||||||||||||||
Report Confidence (RC) |
| |||||||||||||||||||
Environmental Score | Collateral Damage Potential (CDP) |
| ||||||||||||||||||
Target Distribution (TD) |
| |||||||||||||||||||
Impact Subscore Modifier |
|
Формулы для расчета в CVSSv2
[править | править код]Оценка рассчитывается по следующим формулам. Значения для параметров выбираются из таблицы, приведенной выше. Дробные результирующие числа следует округлять до первого десятичного разряда, что ниже выражается через функцию .
Для расчета используются следующие формулы.
Для расчета используется следующие формулы. рассчитывается по той же формуле, что и , но вместо нужно подставить .
Пример
[править | править код]В 2002 году в серверном приложении Apache была выявлена уязвимость CVE-2002-0392, приводившая к повреждению памяти сервера при фрагментированном кодировании запросов для него. Зная это, злоумышленник может создать успешный эксплойт, способный в одних случаях привести к отказу сервера в обслуживании, а в других — к выполнению произвольного кода с привилегиями серверного приложения.
Используя CVSS метрики для расчета базовой оценки, проблему можно описать так:
- AV равняется N, так как запрос формируется удаленно на прикладном уровне модели OSI.
- AC равняется L, потому что для успешной работы эксплойта достаточно сформировать особый запрос для сервера и никаких особых требований со стороны сервера не требуется.
- Au равняется N, потому что сервер обработает этот запрос без аутентификации клиента.
- Поскольку конечный результат эксплуатации уязвимости зависит от самого запроса, то следует принимать во внимание только самый вероятный случай использования уязвимости. За такой случай можно принять исполнение произвольного кода злоумышленника для извлечения данных из базы данных сервера, например получения данных аутентификации других клиентов. В этом случае параметрам C и I следует присвоить значение P (Partial). Также, вероятно злоумышленник будет использовать эксплойт, чтобы вывести сервер из строя, тогда A следует присвоить значение С (Complete). В этом примере мы будем предполагать второй вариант использования, поэтому C и I мы присвоим N (None), а параметру A мы присвоим значение C.
Таким образом, параметры для расчета базовой оценки можно выразить следующей текстовой строкой, на практике называемой вектором:
AV:N/AC:L/Au:N/C:N/I:N/A:C
Так как Apache Foundation подтвердил уязвимость для 1.3 и 2.0 версий сервера, то для Temporal Score вектор будет таким:
E:F/RL:O/RC:C
Вектор для Environmental Score зависит от того, что для использующей сервер Apache компании важнее и какие у неё мощности. Для данного примера пусть вектор будет таким:
CDP:H/TD:H/CR:M/IR:M/AR:H
Подставив количественные значения показателей из таблицы, получим следующие результаты.
Учитывая такие большие оценки для данной уязвимости, мы должны как можно скорее обновить наши серверы Apache, как минимум до версии 2.1.
Критика и сравнение версий стандарта
[править | править код]Несколько поставщиков программного обеспечения оказались недовольными CVSSv2:
- Компания Risk Based Security, которая управляет базой Open Sourced Vulnerability Database, и Open Security Foundation выразили своё недовольство стандартом в открытом письме к FIRST[2]. В частности авторы указали на недостаточную детализацию в нескольких метриках, что не даёт должным образом различать уязвимости разных типов и профилей риска. Также было отмечено, что система оценок требует слишком глубоких знаний о влиянии уязвимости на систему.
- Компания Oracle предложила ещё один уровень для показателей Confidentiality, Integrity и Availability — Partial+, — чтобы закрыть большой разрыв между значениями Partial и Complete[3].
Чтобы устранить некоторые из этих критических замечаний, в 2012 году началась разработка стандарта CVSSv3, окончательная версия которого была выпущена в июне 2015 года. Было изменено, добавлено и удалено несколько показателей и немного поправлены формулы при сохранении диапазона оценки от 0 до 10.
Основные отличия CVSSv3 от CVSSv2 следующие:
- Для базовой оценки были добавлены новые метрики (UI (взаимодействие с пользователем), PR (требуемые привилегии)), чтобы помочь в различении уязвимостей, связанных с привилегиями простого пользователя и администратора.
- В векторе базовой оценки была добавлена метрика S (Scope), чтобы отличать уязвимости, которые могут быть сначала внедрены, а потом использованы для атаки на другие части системы или сети.
- Метрики Confidentiality, Integrity и Availability в третьей версии имеют другие градации: None, Low и High, вместо None, Partial и Complete.
- Метрика Access Complexity была переименована в Attack Complexity, чтобы показать, что требования к правам доступа были перенесены в отдельную метрику.
- В метрику Access Vector было добавлено значение Physical (P), чтобы показать, что для использования уязвимости требуется физический доступ к оборудованию.
- Полностью изменены все метрики для Environmental Score, чтобы более точно описывать требования к безопасности системы. Были добавлены метрики отражающие важность конфиденциальности, целостности и доступности.
В июне 2019 года была выпущена версия 3.1[4]. Данная версия не вносит новых изменений в стандарт, а лишь детализирует описание некоторых метрик для лучшего их понимания.
Применение
[править | править код]Различные версии CVSS были приняты в качестве основного метода для количественной оценки уязвимостей многими организациями. Вот лишь некоторые примеры:
Примеры уязвимостей со счётом 10,0
[править | править код]- CVE-2024-30510
- Злонамеренный пользователь билетной системы Salon может записать на веб-сервер файл вредоносного типа, чтобы попытаться найти «дыру» в системе обработки, или в дальнейшем его исполнить, если веб-сервер позволяет.
- CVE-2024-30247
- Из-за неверной конфигурации веб-панели небольшого дистрибутива для встраиваемых систем NextCloudPi кто угодно может выполнять команды консоли от имени администратора.
- CVE-2024-3094
- Втёршийся в доверие на проекте XZ разработчик два года внедрял бэкдор, который вносит коррективы в скрипт сборки, и тот извлекает готовый объектный файл из наборов тестовых файлов, вместо того, чтобы компилировать. Неизвестный центр, пославший подписанное сообщение, может удалённо исполнять любые команды консоли.
Примечания
[править | править код]- ↑ 1 2 A Complete Guide to the Common Vulnerability Scoring System (англ.). www.first.org. Forum of Incident Response and Security Teams (июнь 2007). Дата обращения: 6 мая 2021. Архивировано 8 марта 2022 года.
- ↑ CVSSv2 Shortcomings, Faults, and Failures Formulation . www.riskbasedsecurity.com. Дата обращения: 7 мая 2021. Архивировано 7 мая 2021 года.
- ↑ Use of Common Vulnerability Scoring System (CVSS) by Oracle . www.oracle.com. Дата обращения: 7 мая 2021. Архивировано 6 мая 2021 года.
- ↑ Common Vulnerability Scoring System version 3.1: Specification Document (англ.). www.first.org. Forum of Incident Response and Security Teams (июнь 2019). Дата обращения: 7 мая 2021. Архивировано 8 марта 2022 года.
- ↑ National Vulnerability Database: Official Site . nvd.nist.gov. Дата обращения: 7 мая 2021. Архивировано 6 апреля 2018 года.
- ↑ Manion, Art. Vulnerability Severity Using CVSS (англ.). insights.sei.cmu.edu (12 апреля 2012). Дата обращения: 7 мая 2021. Архивировано 7 мая 2021 года.