Проверка того, что веб-сервер или сервер приложений настроен с использованием белого списка ресурсов или систем, к которым сервер может отправлять запросы
Описание
Это требование подразумевает, что веб-сервер или сервер приложений должен быть настроен таким образом, чтобы разрешать отправку запросов только к заранее определенным ресурсам или системам. Это помогает предотвратить атаки, такие как SSRF (Server-Side Request Forgery), где злоумышленник может заставить сервер отправить запросы к нежелательным или вредоносным ресурсам.
Почему это важно
- Безопасность: Настройка белого списка ресурсов помогает предотвратить несанкционированный доступ к внутренним системам и ресурсам, которые не должны быть доступны извне.
 - Контроль доступа: Белый список позволяет администраторам четко контролировать, к каким ресурсам может обращаться сервер, что снижает риск утечек данных и атак.
 - Соблюдение стандартов: Многие стандарты безопасности требуют ограничения доступа к ресурсам и системам, чтобы минимизировать риски.
 - Устойчивость к атакам: Эффективная настройка белого списка делает систему более устойчивой к атакам, связанным с несанкционированным доступом.
 
Способы реализации с примерами
Настройка белого списка на уровне сервера: Используйте конфигурацию сервера для определения разрешенных адресов и ресурсов.
Пример (настройка белого списка в Nginx):
location /api/ {
    proxy_pass http://backend_service;
    proxy_set_header Host $host;
    # Разрешить запросы только к определенным адресам
    set $allowed 0;
    if ($http_host = "allowed-domain.com") {
        set $allowed 1;
    }
    if ($allowed = 0) {
        return 403;  # Доступ запрещен
    }
}
Использование библиотек для управления запросами: В приложениях можно использовать библиотеки, которые поддерживают белые списки для исходящих запросов.
Пример (использование Python с библиотекой requests):
import requests
ALLOWED_HOSTS = ['api.allowed-domain.com', 'another.allowed-domain.com']
def make_request(url):
    host = url.split('/')[2]  # Извлечение хоста из URL
    if host not in ALLOWED_HOSTS:
        raise ValueError("Запрос к этому хосту не разрешен.")
    response = requests.get(url)
    return response.json()
# Пример использования
try:
    data = make_request('https://api.allowed-domain.com/data')
    print(data)
except ValueError as e:
    print(e)
Логирование и мониторинг: Внедрите механизмы логирования и мониторинга для отслеживания попыток доступа к неразрешенным ресурсам.
Пример (логирование попыток доступа):
import logging
logging.basicConfig(level=logging.INFO)
def make_request(url):
    host = url.split('/')[2]
    if host not in ALLOWED_HOSTS:
        logging.warning(f"Попытка доступа к неразрешенному хосту: {host}")
        raise ValueError("Запрос к этому хосту не разрешен.")
    response = requests.get(url)
    return response.json()
Примеры уязвимого кода
# Пример уязвимого кода на Python
def make_request(url):
    # Отсутствие проверки на разрешенные хосты
    response = requests.get(url)  # Уязвимость: запросы могут быть отправлены к любым ресурсам
    return response.json()
Проблема: Если сервер не проверяет, к каким ресурсам он может отправлять запросы, злоумышленники могут использовать это для доступа к внутренним системам или ресурсам.
Причины, к которым может привести несоблюдение требования
- Уязвимость к атакам: Отсутствие белого списка может привести к атакам SSRF, где злоумышленник может заставить сервер отправить запросы к внутренним ресурсам.
 - Проблемы с безопасностью данных: Неавторизованный доступ к внутренним системам может привести к утечкам данных и другим серьезным последствиям.
 - Нарушение стандартов: Несоблюдение требований безопасности может привести к юридическим последствиям и штрафам.
 
Рекомендации
- Настройте белый список ресурсов на уровне сервера для ограничения исходящих запросов.
 - Используйте библиотеки и фреймворки, которые поддерживают управление белыми списками.
 - Внедрите механизмы логирования и мониторинга для отслеживания попыток доступа к неразрешенным ресурсам.
 - Регулярно проверяйте код на наличие уязвимостей, связанных с отправкой запросов.
 - Обучите сотрудников важности соблюдения политики безопасности при работе с внешними ресурсами.