Номера вроде «CVE-2021-44228» и «CVE-2017-5638» встречаются в каждой новости о крупном взломе. Разберём, что они означают и как независимому разработчику реалистично за этим поспевать.
Как читать номер
Идентификатор CVE состоит из трёх частей. Сам номер не несёт смысла серьёзности (это отдельная вещь).
Зачем он нужен
Уязвимости находят постоянно. Без общего имени «уязвимость, которую ты имеешь в виду» и «та, которую я исправил» могут оказаться разными вещами. Общий идентификатор позволяет новостям, патчам, сканерам и базам данных указывать на ровно одну и ту же уязвимость. Это отправная точка для любого исправления.
Кто присваивает номера
CVE ведёт программа CVE, которой управляет американская MITRE при финансировании CISA (США). Сами номера присваивают уполномоченные организации — CNA (CVE Numbering Authorities) по всему миру: производители ПО, исследовательские организации в области безопасности, национальные CERT и другие, всего несколько сотен. В Японии одна из них — JPCERT/CC.
У записи CVE есть состояние. «Reserved» (зарезервирована) означает, что номер выделен, но детали не раскрыты; «Published» (опубликована) — содержимое открыто; «Rejected» (отклонена) — запись отозвана как дубликат или ошибка. Если номер появился в новостях, а подробностей нет, он, возможно, ещё зарезервирован.
CVE, NVD и JVN
По одному и тому же идентификатору CVE разные источники показывают разную информацию.
| Название | Кто ведёт | Что содержит | Для чего использовать |
|---|---|---|---|
| CVE (cve.org) | MITRE (при поддержке CISA) | идентификатор, краткое описание, ссылки | официальный идентификатор и сводка |
| NVD | NIST (США) | данные CVE плюс оценки CVSS и затронутые продукты | оценка и список затронутых продуктов |
| JVN | JPCERT/CC и IPA | уязвимости японских продуктов, пояснения и исправления на японском | подробности на японском, японские продукты |
| KEV | CISA (США) | CVE, эксплуатация которых подтверждена, со сроками устранения | расстановка приоритетов |
CVE, CVSS и KEV: что сообщает каждый из них
Эти три ходят вместе, но отвечают на разные вопросы. Для расстановки приоритетов вы используете все три.
| Термин | На что отвечает | Пример |
|---|---|---|
| CVE | Какая уязвимость (имя) | CVE-2021-44228 (Log4Shell) |
| CVSS | Насколько серьёзно (0–10) | 10.0 (худший класс) |
| KEV | Эксплуатируется ли? | В списке эксплуатируемых → высший приоритет |
Высокий CVSS не автоматически высший приоритет
Оценка — это «теоретическое значение для наихудшего случая». На практике взвешивайте KEV (эксплуатируется ли она прямо сейчас) и то, используете ли вы затронутую функцию. 10.0, которой вы не пользуетесь, имеет малое воздействие; средняя оценка при активной эксплуатации — высший приоритет.
От присвоения до исправления
CVE не публикуется в тот же миг, как её нашли, — она проходит через координацию.
Обнаружение и сообщение
Зарезервировано
Опубликовано
Эксплуатируется (KEV)
Примеры: CVE, которые постоянно мелькают в новостях
Ниже — инциденты, разобранные на этом сайте, и их идентификаторы CVE. Запоминать номера не нужно; суть в том, что поиск по номеру собирает отовсюду сведения об одной и той же уязвимости.
| Идентификатор CVE | Обиходное название / продукт | Связанный инцидент |
|---|---|---|
| CVE-2014-0160 | Heartbleed (OpenSSL) | Heartbleed: утечка памяти сервера |
| CVE-2017-5638 | Apache Struts | Equifax: уязвимость не закрыли, раскрыты данные 147 млн человек |
| CVE-2018-13379 | VPN-устройство | Больница Ханда: по сообщениям, точка входа программы-вымогателя |
| CVE-2021-44228 | Log4Shell (Log4j) | Log4Shell: использовался через косвенные зависимости, о которых никто не знал |
| CVE-2023-34362 | MOVEit Transfer | MOVEit: ущерб распространился более чем на 2700 организаций |
| CVE-2024-3094 | XZ Utils | XZ Utils: бэкдор, подложенный в файлы релиза |
Как только номер опубликован, ту же информацию читают и атакующие. В инцидентах Equifax и больницы Ханда между выходом исправления и вторжением прошло время. Время до того, как вы примените исправление, — это время, когда вас можно атаковать.
Реалистичный способ поспевать
Отслеживать каждую CVE вручную невозможно, и промах превращается в инцидент. → Публичная CVSS 10.0, не замеченная месяцами
Поэтому пусть следят машины.
Частые ошибки
- Читать новости и вручную решать «наверное, нормально»
- Измерять риск по одному только тексту
package.json - «Обновлю когда-нибудь» без срока
Пусть следят машины
- Dependabot (GitHub): автоматические PR для CVE, совпадающих с вашими зависимостями
- osv-scanner (Google): проверяет ваш lock-файл в CI, одним шагом
- Судите по реально работающей версии (а не по нижней границе)
Ключ — судить по реально работающей версии: нижняя граница в package.json может отличаться от того, что реально работает (это заблуждение тоже подпитало инцидент с RCE).
Как проверить свою настройку
Узнайте, о чём идентификатор CVE
Введите номер из новостей в «Поиск CVE / KEV» — увидите оценку CVSS, вероятность эксплуатации (EPSS) и наличие в KEV в одном месте.
Составьте список CVE, затрагивающих ваши зависимости
Загрузите lock-файл (package-lock.json, pnpm-lock.yaml и т. п.) в сканер уязвимостей зависимостей — получите список подходящих CVE и GHSA. Для npm-проектов то же делает npm audit.
Сверьте серверы и устройства по продукту и версии
Для продуктов вне пакетного менеджера, например серверов и VPN-устройств, проверьте бюллетени вендора: затронута ли ваша версия. Если да, назначьте срок обновления (→ как разбираться с CVE на практике).
Источники (первичные)
- CVE Program, «Process» — cve.org (присвоение номеров CNA и состояния записей CVE)
- NIST, «National Vulnerability Database» — nvd.nist.gov
- JPCERT/CC и IPA, «JVN (Japan Vulnerability Notes)» — jvn.jp
- CISA, «Known Exploited Vulnerabilities Catalog» — cisa.gov
Читать дальше
- Глоссарий: Что такое CVSS (шкала серьёзности) · Что такое RCE
- Защита: Выстройте рутину отслеживания CVE