Common Vulnerability Scoring System (CVSS) — открытый стандарт, используемый для расчета количественных оценок уязвимости в безопасности компьютерной системы, обычно с целью понять приоритет её исправления.

Оценки рассчитываются по специальным формулам на основе нескольких метрик и приблизительно оценивают простоту внедрения эксплойта и его влияние на компьютерную систему. Результатом расчета являются три числовые оценки (Base Score, Temporal Score и Environmental Score), каждая из которых может принимать значение от 0 до 10, где 10 выражает максимальную опасность.

Последней версией стандарта является 3.1, выпущенная в июне 2019 года. По разным соображениям одни компании используют старую версию стандарта CVSSv2, другие новую CVSSv3, а третьи совмещают использование разных версий.

История Исследования, проводимые в 2003—2004 годах Национальным Консультативным Советом по Инфраструктуре (, NIAC), привели к появлению в феврале 2005 года первой версии CVSS. Первоначальной целью было получение открытых и универсальных методов оценки серьёзности уязвимостей в программном обеспечении. В апреле 2005 NIAC запустила сайт Forum of Incident Response and Security Teams (сокр. FIRST), на котором была опубликована первая версия стандарта.

Первая версия стандарта не подвергалась экспертной оценке сторонних организаций, поэтому реальные отзывы компаний, специализировавшихся на разработке программного обеспечения и пытавшихся его использовать, обнажили многие серьёзные проблемы, в связи с чем в июне 2007 вышла вторая версия стандарта. Дальнейшее развитие привело к выходу третьей версии стандарта в июне 2015.

Основные моменты CVSS пытается оценить уязвимость с разных сторон: Качественная оценка уязвимости, которая не зависит ни от времени, ни от программного окружения, выражаемая через базовые метрики (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 и конечную оценку под конкретные требования безопасности конкретного окружения.

Метрики для расчета берутся из таблиц, в которых приводится их описание, качественное и количественное значения. Ниже в таблице приведены метрики, введенные со второй версии стандарта. +Сводная таблица с метриками CVSSv2ОценкаМетрикаОписаниеBase Score Access Vector (AV)КачественноевыражениеКоличественноевыражениеПояснениеLocal (L)0,395Атакующий должен иметь физический доступ к системе, либо иметь учётную запись для удалённой работыAdjacent Network (A)0,646Атакующий должен иметь доступ к широковещательной сети или к домену коллизийNetwork (N)1Уязвимый интерфейс работает на сетевом уровне или более верхнем уровне модели OSI Access Complexity (AC)High (H)0,35Существуют некоторые особые условия для проведения атаки, например состояние гонки в системе, или выполняются некоторые требования социальной инженерии, которые могут быть подмечены знающим специалистомMedium (M)0,61Существуют некоторые дополнительные требования для атаки, например определяется конкретный источник атаки или есть требование специальной конфигурации для атакуемой системы, отличной от стандартнойLow (L)0,71Не существует особых требований для использования уязвимости Authentication (Au)Multiple (M)0,45Для использования уязвимости атакующий должен аутентифицироваться не менее двух раз, даже если используются одни и те же учётные данныеSingle (S)0,56Для использования уязвимости атакующий должен аутентифицироваться один разNone (N)0,704Для использования уязвимости аутентификация не нужна Confidentiality (C)None (N)0Нет влияния на конфиденциальность системыPartial (P)0,275Широко раскрывается только отдельный ограниченный объём данныхComplete (C)0,660Полное раскрытие всех данных системы Integrity (I)None (N)0Нет влияния на целостность системыPartial (P)0,275Объем изменяемых данных системы четко ограниченComplete (C)0,660Атакующий может изменять любые данные системы Availability (A)None (N)0Нет влияния на доступность системыPartial (P)0,275Наблюдается частичное снижение производительностиComplete (C)0,660Полная потеря атакованного ресурсаTemporal Score Exploitability (E)Unproven (U)0,85Код эксплойта недоступен, либо эксплойт является теоретическимProof-of-concept (P)0,9Доступен демонстрационный код эксплойта, но он не универсален и покрывает только один или несколько частных случаевFunctional (F)0,95Доступен код эксплойта и он работает в большинстве ситуаций, где присутствует уязвимостьHigh (H)1,0Доступен код эксплойта и он может внедряться в систему автоматизированным способом, например в форме червя или вирусаNot Defined (ND)1,0Игнорировать эту метрику Remediation Level (RL)Official Fix (O)0,87Доступно полное решение устранения уязвимости от поставщика либо в виде обновления, либо в виде патчаTemporary Fix (T)0,90У поставщика есть временное решение, частично смягчающее негативные последствия от уязвимостиWorkaround (W)0,95Доступно неофициальное решение или средство защиты от сторонних разработчиковUnavailable (U)1,0Доступного решения нет, либо предложенное решение невозможно применить. Обычно уязвимость пребывает в этом состоянии сразу после обнаруженияNot Defined (ND)1,0Игнорировать эту метрику Report Confidence (RC)Unconfirmed (UC)0,9Один неподтвержденный источник, либо несколько источников, но не описывающих уязвимость более-менее одинаково. В том числе и слухи об уязвимостиUncorroborated (UR) 0,95Несколько источников, которые в целом описывают уязвимость одинаково. Допустимы небольшие разногласияConfirmed (C)1,0Уязвимость подтверждена и поставщиком и производителем затронутого продуктаNot Defined (ND)1,0Игнорировать эту метрикуEnvironmental Score Collateral Damage Potential (CDP)None (N)0Уязвимость не несет никаких потерь для бизнесаLow (L)0,1Незначительная потеря доходов или производительности системыLow-Medium (LM)0,3Умеренный ущербMedium-High (MH)0,4Значительный ущербHigh (H)0,5Катастрофический ущербNot Defined (ND)0Игнорировать эту метрику Target Distribution (TD)None (N)0Целевых систем не существует, либо они существуют в лабораторных условияхLow (L)0,251-25 % затрагиваемой системыMedium (M)0,7526-75 % затрагиваемой системыHigh (H)1,076-100 % затрагиваемой системыNot Defined (ND)1,0Игнорировать эту метрику Impact Subscore ModifierLow (L)0,5Потеря (конфиденциальности (CR) / целостности (IR) / доступности (AR)), вероятно, будет иметь лишь ограниченное влияние на организациюMedium (M) 1,0Потеря (конфиденциальности (CR) / целостности (IR) / доступности (AR)) может серьёзно повлиять на организациюHigh (H)1,51Потеря (конфиденциальности (CR) / целостности (IR) / доступности (AR)) может иметь катастрофические последствия для организацииNot Defined (ND)1,0Игнорировать эту метрику

Формулы для расчета в 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. В частности авторы указали на недостаточную детализацию в нескольких метриках, что не даёт должным образом различать уязвимости разных типов и профилей риска. Также было отмечено, что система оценок требует слишком глубоких знаний о влиянии уязвимости на систему. Компания Oracle предложила ещё один уровень для показателей Confidentiality, Integrity и Availability — Partial+, — чтобы закрыть большой разрыв между значениями Partial и Complete.