A02:2025 Небезопасная конфигурация 
Общие сведения.
Поднявшись с 5-го места в предыдущем выпуске, ошибки конфигурации обнаружены в 100% протестированных приложений в той или иной форме, со средней частотой встречаемости 3,00% и более 719 тыс. случаев CWE в этой категории рисков. По мере перехода к высококонфигурируемому программному обеспечению рост этой категории закономерен. Среди наиболее значимых CWE: CWE-16 Конфигурация и CWE-611 Неправильное ограничение ссылок на внешние XML-сущности (XXE).
Таблица оценок.
| Число CWE | Макс. частота встречаемости | Ср. частота встречаемости | Макс. охват | Ср. охват | Ср. взвешенная эксплуатируемость | Ср. взвешенное воздействие | Общее число встречаемостей | Общее число CVE |
| 16 | 27,70% | 3,00% | 100,00% | 52,35% | 7,96 | 3,97 | 719 084 | 1 375 |
Описание.
Небезопасная конфигурация — это ситуация, когда система, приложение или облачный сервис настроены некорректно с точки зрения безопасности, что создаёт уязвимости.
Приложение может быть уязвимым, если:
- Отсутствует надлежащее усиление защиты в любой части стека приложения или неправильно настроены разрешения в облачных сервисах.
- Включены или установлены ненужные функции (например, ненужные порты, сервисы, страницы, учётные записи, тестовые фреймворки или привилегии).
- Стандартные учётные записи и их пароли по-прежнему включены и не изменены.
- Отсутствует центральная конфигурация для перехвата избыточных сообщений об ошибках. Обработка ошибок раскрывает трассировки стека или иные излишне информативные сообщения пользователям.
- В обновлённых системах последние функции безопасности отключены или настроены небезопасно.
- Избыточное приоритизирование обратной совместимости, приводящее к небезопасной конфигурации.
- Параметры безопасности серверов приложений, фреймворков (например, Struts, Spring, ASP.NET), библиотек, баз данных и т.д. не установлены в безопасные значения.
- Сервер не отправляет заголовки или директивы безопасности, либо они не установлены в безопасные значения.
Без согласованного повторяемого процесса усиления конфигурации безопасности приложений системы подвергаются повышенному риску.
Как предотвратить.
Необходимо внедрить безопасные процессы установки, в том числе:
- Повторяемый процесс усиления защиты, обеспечивающий быстрое и простое развёртывание другой среды с надлежащей блокировкой. Среды разработки, контроля качества и производства должны быть настроены одинаково, с использованием разных учётных данных в каждой среде. Этот процесс следует автоматизировать для минимизации усилий при создании новой безопасной среды.
- Минимальная платформа без каких-либо ненужных функций, компонентов, документации или примеров. Удалите или не устанавливайте неиспользуемые функции и фреймворки.
- Задача по проверке и обновлению конфигураций с учётом всех заметок по безопасности, обновлений и патчей как часть процесса управления патчами (см. A03 Уязвимости цепочки поставок ПО). Проверяйте разрешения облачного хранилища (например, разрешения S3 bucket).
- Сегментированная архитектура приложений обеспечивает эффективное и безопасное разделение между компонентами или арендаторами с помощью сегментации, контейнеризации или групп облачной безопасности (ACL).
- Отправка директив безопасности клиентам, например заголовков безопасности.
- Автоматизированный процесс проверки эффективности конфигураций и параметров во всех средах.
- Заблаговременно добавьте центральную конфигурацию для перехвата избыточных сообщений об ошибках как резервную меру.
- Если эти проверки не автоматизированы, они должны проходить ручную проверку не реже одного раза в год.
- Используйте федерацию удостоверений, краткосрочные учётные данные или механизмы доступа на основе ролей, предоставляемые базовой платформой, вместо встраивания статических ключей или секретов в код, конфигурационные файлы или конвейеры.
Примеры сценариев атак.
Сценарий №1: Сервер приложений поставляется с примерами приложений, не удалёнными с производственного сервера. Эти примеры имеют известные уязвимости безопасности, которые злоумышленники используют для компрометации сервера. Предположим, одно из них — консоль администратора, а стандартные учётные данные не были изменены. Тогда злоумышленник входит с паролем по умолчанию и захватывает контроль.
Сценарий №2: Листинг директорий не отключён на сервере. Злоумышленник обнаруживает, что может просто просматривать директории. Он находит и скачивает скомпилированные классы Java, декомпилирует и реверсирует их для просмотра кода. Затем обнаруживает серьёзную уязвимость контроля доступа в приложении.
Сценарий №3: Конфигурация сервера приложений разрешает возврат подробных сообщений об ошибках, например трассировок стека, пользователям. Это потенциально раскрывает конфиденциальную информацию или базовые уязвимости, такие как версии компонентов с известными уязвимостями.
Сценарий №4: Облачный провайдер (CSP) по умолчанию открывает разрешения на совместный доступ для Интернета. Это позволяет получить доступ к конфиденциальным данным, хранящимся в облаке.
Ссылки.
- OWASP Testing Guide: Configuration Management
- OWASP Testing Guide: Testing for Error Codes
- Application Security Verification Standard V13 Configuration
- NIST Guide to General Server Hardening
- CIS Security Configuration Guides/Benchmarks
- Amazon S3 Bucket Discovery and Enumeration
- ScienceDirect: Security Misconfiguration
Список связанных CWE
-
CWE-5 J2EE Misconfiguration: Data Transmission Without Encryption
-
CWE-13 ASP.NET Misconfiguration: Password in Configuration File
-
CWE-315 Cleartext Storage of Sensitive Information in a Cookie
-
CWE-526 Exposure of Sensitive Information Through Environmental Variables
-
CWE-611 Improper Restriction of XML External Entity Reference
-
CWE-614 Sensitive Cookie in HTTPS Session Without 'Secure' Attribute
-
CWE-776 Improper Restriction of Recursive Entity References in DTDs ('XML Entity Expansion')
-
CWE-942 Permissive Cross-domain Policy with Untrusted Domains
-
CWE-1174 ASP.NET Misconfiguration: Improper Model Validation