Some checks failed
Deploy on push / deploy (push) Failing after 39s
### 🚨 CRITICAL Security Fixes - **🔒 Open Redirect Protection**: Добавлена строгая валидация redirect_uri против whitelist доменов - **🔒 Rate Limiting**: Защита OAuth endpoints от брутфорса (10 попыток за 5 минут на IP) - **🔒 Logout Endpoint**: Критически важный endpoint для безопасного отзыва httpOnly cookies - **🔒 Provider Validation**: Усиленная валидация OAuth провайдеров с логированием атак - **🚨 GlitchTip Alerts**: Автоматические алерты безопасности в GlitchTip при критических событиях ### 🛡️ Security Modules - **auth/oauth_security.py**: Модуль безопасности OAuth с валидацией и rate limiting + GlitchTip алерты - **auth/logout.py**: Безопасный logout с поддержкой JSON API и browser redirect - **tests/test_oauth_security.py**: Комплексные тесты безопасности (11 тестов) - **tests/test_oauth_glitchtip_alerts.py**: Тесты интеграции с GlitchTip (8 тестов) ### 🔧 OAuth Improvements - **Minimal Flow**: Упрощен до минимума - только httpOnly cookie, нет JWT в URL - **Simple Logic**: Нет error параметра = успех, максимальная простота - **DRY Refactoring**: Устранено дублирование кода в logout и валидации ### 🎯 OAuth Endpoints - **Старт**: `v3.dscrs.site/oauth/{provider}` - с rate limiting и валидацией - **Callback**: `v3.dscrs.site/oauth/{provider}/callback` - безопасный redirect_uri - **Logout**: `v3.dscrs.site/auth/logout` - отзыв httpOnly cookies - **Финализация**: `testing.discours.io/oauth?redirect_url=...` - минимальная схема ### 📊 Security Test Coverage - ✅ Open redirect attack prevention - ✅ Rate limiting protection - ✅ Provider validation - ✅ Safe fallback mechanisms - ✅ Cookie security (httpOnly + Secure + SameSite) - ✅ GlitchTip integration (8 тестов алертов) ### 📝 Documentation - Создан `docs/oauth-minimal-flow.md` - полное описание минимального flow - Обновлена документация OAuth в `docs/auth/oauth.md` - Добавлены security best practices
5.2 KiB
5.2 KiB
GlitchTip Security Alerts Integration
🚨 Автоматические алерты безопасности OAuth
Система OAuth теперь автоматически отправляет алерты в GlitchTip при обнаружении подозрительной активности.
🎯 Типы алертов
🔴 Критические события (ERROR level)
open_redirect_attempt- Попытка open redirect атакиrate_limit_exceeded- Превышение лимита запросов (брутфорс)invalid_provider- Попытка использования несуществующего провайдераsuspicious_redirect_uri- Подозрительный redirect URIbrute_force_detected- Обнаружена брутфорс атака
🟡 Обычные события (WARNING level)
oauth_login_attempt- Обычная попытка входаprovider_validation- Валидация провайдераredirect_uri_validation- Валидация redirect URI
🏷️ Теги для фильтрации в GlitchTip
Каждый алерт содержит теги для удобной фильтрации:
{
"security_event": "rate_limit_exceeded",
"component": "oauth",
"client_ip": "192.168.1.100",
"oauth_provider": "github",
"has_redirect_uri": "true"
}
📊 Контекст события
Детальная информация в контексте security_details:
{
"ip": "192.168.1.100",
"provider": "github",
"attempts": 15,
"limit": 10,
"window_seconds": 300,
"severity": "high",
"malicious_uri": "https://evil.com/steal",
"attack_type": "open_redirect"
}
🔧 Интеграция в коде
Автоматические алерты
# При превышении rate limit
if len(requests) >= OAUTH_RATE_LIMIT:
send_rate_limit_alert(client_ip, len(requests))
return False
# При попытке open redirect
if not is_allowed:
send_open_redirect_alert(redirect_uri)
return False
Ручные алерты
from auth.oauth_security import log_oauth_security_event
# Отправка кастомного алерта
log_oauth_security_event("suspicious_activity", {
"ip": client_ip,
"details": "Custom security event",
"severity": "medium"
})
🛡️ Обработка ошибок
Система устойчива к сбоям GlitchTip:
try:
# Отправка алерта в GlitchTip
sentry_sdk.capture_message(message, level=level)
except Exception as e:
# Не ломаем основную логику
logger.error(f"Failed to send alert to GlitchTip: {e}")
📈 Мониторинг в GlitchTip
Фильтры для критических событий:
tag:security_event AND level:error
Фильтры по компонентам:
tag:component:oauth
Фильтры по IP адресам:
tag:client_ip:192.168.1.100
🚨 Алерты по типам атак
Open Redirect атаки:
tag:security_event:open_redirect_attempt
Брутфорс атаки:
tag:security_event:rate_limit_exceeded
Невалидные провайдеры:
tag:security_event:invalid_provider
📊 Статистика безопасности
GlitchTip позволяет отслеживать:
- Количество атак по времени
- Топ атакующих IP адресов
- Самые частые типы атак
- Географическое распределение атак
🔄 Настройка алертов
В GlitchTip можно настроить:
- Email уведомления при критических событиях
- Slack/Discord интеграции
- Webhook для автоматической блокировки IP
- Дашборды для мониторинга безопасности
✅ Тестирование
Система покрыта тестами:
# Запуск тестов GlitchTip интеграции
uv run python -m pytest tests/test_oauth_glitchtip_alerts.py -v
# Результат: 8/8 тестов прошли
✅ Critical events sent as ERROR
✅ Normal events sent as WARNING
✅ Open redirect alert integration
✅ Rate limit alert integration
✅ Failure handling (graceful degradation)
✅ Security context tags
✅ Event logging integration
✅ Critical events list validation
🎯 Преимущества
- Реальное время - мгновенные алерты при атаках
- Контекст - полная информация о событии
- Фильтрация - удобные теги для поиска
- Устойчивость - не ломает основную логику при сбоях
- Тестируемость - полное покрытие тестами
- Масштабируемость - готово для высоких нагрузок
Система безопасности OAuth теперь имеет полноценный мониторинг! 🔒✨