Уязвимость — слабое место в программе, оборудовании, настройках или процессах, которое злоумышленник может использовать для нарушения конфиденциальности, целостности или доступности системы.
Откуда берутся уязвимости
Большинство уязвимостей — ошибки программистов:
- нет проверки входных данных;
- ошибки работы с памятью;
- неправильная проверка прав доступа;
- слабая криптография.
Другие появляются из-за небезопасных настроек по умолчанию, забытых тестовых учётных записей, открытых админ-панелей или устаревших сторонних библиотек. Типы таких ошибок собраны в каталоге CWE, а самые частые проблемы веб-приложений — в рейтинге OWASP Top 10.
Публично известные уязвимости получают идентификатор CVE, например CVE-2021-44228. Программу CVE с 1999 года ведёт MITRE, а подробности добавляет американская база NVD. Сейчас каждый год публикуются десятки тысяч CVE.
Почему уязвимости важны для безопасности
Реальным риском уязвимость становится, когда для неё есть эксплойт, а уязвимая система доступна атакующему. Эксплуатация известных уязвимостей — один из главных способов проникновения в компании, наряду с фишингом и украденными паролями.
Критичность обычно оценивают по шкале CVSS, но главный вопрос другой: эксплуатируется ли уязвимость уже сейчас? Ошибка средней критичности под активной атакой срочнее «критической», которую никто не использует.
Управление уязвимостями на практике
- Ведите реестр активов и ПО, включая open source-зависимости (SBOM).
- Регулярно сканируйте системы. Расставляйте приоритеты по факту эксплуатации (CISA KEV, EPSS), доступности из интернета и важности для бизнеса.
- Устанавливайте исправления в установленные сроки. Если обновить нельзя, примените обходные меры или изолируйте систему.
- Опубликуйте политику раскрытия уязвимостей или запустите bug bounty, чтобы исследователи могли безопасно сообщать о проблемах.