Проверка наличия защиты приложения от захвата поддоменов
Описание
Это требование подразумевает, что веб-приложение должно иметь механизмы защиты от захвата поддоменов. Захват поддомена происходит, когда злоумышленник получает контроль над поддоменом, который не используется или неправильно настроен, что может привести к различным атакам, включая фишинг, утечку данных и другие угрозы безопасности.
Почему это важно
- Защита от фишинга: Захваченные поддомены могут использоваться для создания фишинговых сайтов, которые обманывают пользователей и крадут их данные.
 - Снижение рисков: Защита от захвата поддоменов помогает предотвратить несанкционированный доступ к ресурсам и данным.
 - Поддержание репутации: Захваченные поддомены могут негативно сказаться на репутации компании и доверии пользователей.
 - Соблюдение нормативных требований: Многие отрасли требуют наличия мер безопасности для защиты от захвата поддоменов.
 
Способы реализации с примерами
Настройка DNS: Убедитесь, что все поддомены, которые не используются, правильно настроены и не указывают на несуществующие или ненадежные ресурсы.
Пример:
- Убедитесь, что поддомены, которые не используются, либо удалены, либо настроены на возврат 404 ошибки, а не на открытие пустых страниц.
 
Использование заголовка CNAME: Настройте поддомены с использованием CNAME, указывающего на контролируемый ресурс, чтобы предотвратить их захват.
Пример:
subdomain.example.com CNAME controlled.example.com
Мониторинг поддоменов: Реализуйте мониторинг поддоменов, чтобы отслеживать изменения в DNS-записях и получать уведомления о любых подозрительных изменениях.
Пример:
- Используйте инструменты мониторинга DNS, которые уведомляют вас о любых изменениях в записях поддоменов.
 
Регулярные аудиты: Проводите регулярные аудиты всех поддоменов и их настроек, чтобы убедиться, что они соответствуют требованиям безопасности.
Пример:
- Создайте скрипт или используйте инструменты для проверки всех поддоменов на наличие активных записей и их правильной настройки.
 
Использование механизма проверки поддоменов: Реализуйте механизм, который проверяет, что все поддомены, используемые вашим приложением, зарегистрированы и контролируются вами.
Пример:
def is_subdomain_controlled(subdomain):
    controlled_subdomains = ['app.example.com', 'api.example.com']
    return subdomain in controlled_subdomains
@app.route('/check_subdomain', methods=['GET'])
def check_subdomain():
    subdomain = request.args.get('subdomain')
    if is_subdomain_controlled(subdomain):
        return jsonify({'message': 'Subdomain is controlled.'}), 200
    else:
        return jsonify({'message': 'Subdomain is not controlled.'}), 403
Примеры уязвимого кода
# Пример уязвимого кода на Python
@app.route('/check_subdomain', methods=['GET'])
def check_subdomain():
    subdomain = request.args.get('subdomain')
    # Отсутствие проверки на контроль поддомена
    return jsonify({'message': 'Subdomain check completed.'}), 200
Проблема: В этом коде отсутствует проверка на контроль поддомена, что может привести к захвату поддомена.
Причины, к которым может привести несоблюдение требования
- Захват поддомена: Злоумышленники могут захватить поддомен, который не используется, и использовать его для атак.
 - Фишинг: Захваченные поддомены могут быть использованы для создания фишинговых сайтов, что может привести к утечке данных пользователей.
 - Проблемы с доверием: Пользователи могут потерять доверие к системе, если они столкнутся с проблемами безопасности, связанными с захваченными поддоменами.
 
Рекомендации
- Убедитесь, что все поддомены, которые не используются, правильно настроены или удалены.
 - Настройте поддомены с использованием 
CNAME, указывающего на контролируемый ресурс. - Реализуйте мониторинг поддоменов для отслеживания изменений в DNS-записях.
 - Проводите регулярные аудиты поддоменов и их настроек.
 - Реализуйте механизм проверки поддоменов, чтобы убедиться, что они контролируются вами.