CVSS-оценка уязвимостей в коде BSL
- cvss
- безопасность
- sec
Каждая SEC-находка в массовом анализе получает CVSS 3.1 base score, severity и vector. Объективный приоритет уязвимостей по индустриальному стандарту.
Аудит безопасности BSL находит много чего: использование Выполнить(), пароли в коде, пустые блоки Попытка, передача недоверенных данных в чувствительные операции. Но без приоритизации список из ста находок выглядит одинаково страшно. Ребята из инфобеза в крупных компаниях привыкли работать с CVSS, и хотят видеть тот же стандарт в отчётах по 1С.
С сегодняшнего дня каждая SEC-находка в массовом анализе сопровождается CVSS 3.1 Base Score, severity и vector string.
Что добавилось
Раньше находка выглядела так:
{
"rule_id": "SEC013",
"object": "Документ.Заказ.МодульОбъекта",
"line": 42,
"message": "SQL injection через прямую конкатенацию"
}
Теперь поле дополнено CVSS-данными:
{
"rule_id": "SEC013",
"object": "Документ.Заказ.МодульОбъекта",
"line": 42,
"message": "SQL injection через прямую конкатенацию",
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"cvss_base_score": 9.8,
"severity": "Critical"
}
Vector string привязан к каждому правилу в YAML-метадате. Score вычисляется из vector по формуле CVSS 3.1 Base Score (без Temporal и Environmental). Severity это стандартное соответствие: 0.0 None, 0.1-3.9 Low, 4.0-6.9 Medium, 7.0-8.9 High, 9.0-10.0 Critical.
Почему 3.1, а не 4.0
CVSS 4.0 уже опубликован, но в индустриальной практике пока остаётся 3.1: NVD продолжает выдавать оценки в 3.1, БДУ ФСТЭК тоже на 3.1. Большинство статанализаторов и SIEM-систем настроены на парсинг 3.1-вектора. Переход на 4.0 имеет смысл когда сменится потребитель, не раньше.
Отдельный момент: 4.0 выкинул Confidentiality/Integrity/Availability в пользу более гранулярных метрик, и для большинства SEC-находок в 1С-коде новых полей пока нечем заполнить осмысленно.
Соответствие правил CVE и CWE
Каждое SEC-правило размечено CWE-кодом. Это позволяет связать находку с публичной классификацией:
| Правило | CWE | Описание |
|---|---|---|
| SEC006 | CWE-22 | Path traversal через ВнешнийФайл |
| SEC013 | CWE-89 | SQL injection через прямую конкатенацию |
| TNT001-TNT007 | CWE-20 / CWE-79 | Передача недоверенного ввода в операции |
Сопоставление ведётся в коде, не из внешней базы. Это значит что отчёт работает офлайн и не зависит от доступности NVD или MITRE.
SARIF-вывод
В SARIF-файле каждая находка получает дополнительное свойство security-severity со значением CVSS Base Score. GitHub Code Scanning читает это поле и автоматически расставляет приоритет на вкладке Security. Никаких дополнительных настроек на стороне CI не требуется.
properties:
security-severity: "9.8"
cvss_vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
cwe: "CWE-89"
Запуск
CVSS-оценка включается автоматически при --build-bulkanalysis. Отдельного флага не требуется. Если в каком-то правиле vector ещё не размечен, score просто не появится в выводе, но сама находка останется как раньше с base severity по уровню правила.