# 🔐 Security Policy ## Supported Versions Мы обеспечиваем поддержку безопасности для следующих версий: | Version | Supported | | ------- | ------------------ | | 2.x.x | ✅ Yes | | 1.x.x | ❌ No | | < 1.0 | ❌ No | ## Reporting a Vulnerability ### 🚨 Критические уязвимости Для сообщений о критических уязвимостях безопасности: **НЕ создавайте публичные Issues или Pull Requests** Вместо этого: 1. Свяжитесь с [@fringg](https://t.me/fringg) напрямую в Telegram 2. Укажите в сообщении "SECURITY VULNERABILITY" в начале 3. Опишите уязвимость детально 4. Дайте время на исправление (обычно 90 дней) ### 📧 Контактная информация - **Telegram**: [@fringg](https://t.me/fringg) - **Response Time**: 24-48 часов - **Fix Timeline**: 7-30 дней (в зависимости от критичности) ### 🔍 Что считается уязвимостью безопасности **Критические уязвимости:** - SQL инъекции - Remote Code Execution (RCE) - Обход аутентификации - Несанкционированный доступ к данным пользователей - Утечка API ключей или токенов - Bypass платежных проверок **Средние уязвимости:** - Cross-Site Scripting (XSS) в веб-компонентах - Небезопасная десериализация - Недостаточная валидация входных данных - Rate limiting bypass **Низкие уязвимости:** - Information disclosure - DoS атаки - Проблемы с логированием чувствительных данных ### 📝 Информация для включения в отчет 1. **Описание уязвимости** - Тип уязвимости - Затронутые компоненты - Потенциальное воздействие 2. **Шаги воспроизведения** - Детальные инструкции - Скриншоты или видео (если применимо) - Тестовые данные 3. **Proof of Concept** - Работающий эксплойт (если безопасно) - Логи или вывод команд 4. **Предлагаемые исправления** - Возможные решения - Альтернативные подходы ## Security Measures ### 🛡️ Текущие меры защиты **Аутентификация и авторизация:** - Проверка админ ID через ADMIN_IDS - Валидация всех пользовательских данных - Защита от несанкционированного доступа к админ функциям **Защита API:** - Поддержка различных методов аутентификации Remnawave - Безопасная передача куки для защищенных панелей - Rate limiting для предотвращения злоупотреблений - Timeout для внешних запросов **Защита данных:** - Хеширование чувствительной информации - Безопасное хранение API ключей - Логирование без записи чувствительных данных - Регулярные бекапы с возможностью восстановления **Платежная безопасность:** - Валидация webhook подписей - Проверка сумм платежей - Защита от duplicate payments - Безопасная обработка платежных данных **Инфраструктурная безопасность:** - Docker контейнеризация - Изоляция сетевого трафика - Минимальные права доступа - Регулярные обновления зависимостей ### 🔒 Конфиденциальные данные **Что НЕ логируется:** - API ключи и токены - Пароли и секретные ключи - Персональные данные пользователей - Детали платежных транзакций - Webhook секреты **Защита в коде:** ```python # ✅ Правильно logger.info(f"User {user_id} created subscription") logger.debug(f"Payment webhook received for order {order_id}") # ❌ Неправильно logger.info(f"API key: {api_key}") logger.debug(f"Webhook payload: {webhook_data}") ``` ### 🌐 Сетевая безопасность **HTTPS обязателен:** - Все внешние API вызовы через HTTPS - Webhook endpoints защищены TLS - Проверка SSL сертификатов **Firewall конфигурация:** ```bash # Открыть только необходимые порты ufw allow 80/tcp # HTTP (redirect to HTTPS) ufw allow 443/tcp # HTTPS ufw deny 8080/tcp # Unified FastAPI сервер доступен только из внутренней сети ``` ### 📊 Мониторинг безопасности **Автоматические проверки:** - Мониторинг неудачных попыток аутентификации - Отслеживание подозрительной активности - Проверка целостности платежей - Мониторинг состояния внешних сервисов **Алерты:** - Множественные неудачные попытки входа - Неожиданные изменения в конфигурации - Критические ошибки в платежных системах - Недоступность Remnawave API ## Best Practices for Developers ### 🔐 Безопасное программирование **Input Validation:** ```python # ✅ Правильно def validate_user_id(user_id: str) -> int: if not user_id.isdigit(): raise ValueError("Invalid user ID format") uid = int(user_id) if uid <= 0: raise ValueError("User ID must be positive") return uid # ❌ Неправильно def get_user(user_id): return session.execute(f"SELECT * FROM users WHERE id = {user_id}") ``` **SQL Injection Prevention:** ```python # ✅ Правильно - используйте SQLAlchemy ORM async def get_user_subscriptions(user_id: int): result = await session.execute( select(Subscription).where(Subscription.user_id == user_id) ) return result.scalars().all() # ❌ Неправильно - raw SQL без параметров async def get_user_subscriptions(user_id: int): result = await session.execute( f"SELECT * FROM subscriptions WHERE user_id = {user_id}" ) ``` **API Keys Management:** ```python # ✅ Правильно class Config: REMNAWAVE_API_KEY: str = os.getenv("REMNAWAVE_API_KEY", "") def validate_required_env(self): if not self.REMNAWAVE_API_KEY: raise ValueError("REMNAWAVE_API_KEY is required") # ❌ Неправильно API_KEY = "your_api_key_here" # Никогда не хардкодьте ключи ``` **Error Handling:** ```python # ✅ Правильно - не раскрывайте внутреннюю информацию try: result = await remnawave_api.create_subscription(data) except RemnaWaveAPIError as e: logger.error(f"RemnaWave API error: {e}") await message.answer("Временные проблемы с сервисом. Попробуйте позже.") # ❌ Неправильно - раскрытие внутренних деталей except Exception as e: await message.answer(f"Error: {str(e)}") ``` ### 🔍 Code Review Security Checklist - [ ] Нет хардкода API ключей или паролей - [ ] Все пользовательские данные валидируются - [ ] SQL запросы используют параметризированные запросы - [ ] Ошибки логируются без раскрытия чувствительной информации - [ ] Внешние запросы используют таймауты - [ ] Webhook подписи проверяются - [ ] Rate limiting применяется где необходимо - [ ] Авторизация проверяется для защищенных операций ### 📋 Environment Variables Security **Обязательные переменные:** ```env # Критически важные - должны быть установлены BOT_TOKEN=your_bot_token REMNAWAVE_API_KEY=your_api_key ADMIN_IDS=123456789,987654321 # Webhook секреты - генерируйте случайные значения TRIBUTE_WEBHOOK_SECRET=another_random_secret CRYPTOBOT_WEBHOOK_SECRET=yet_another_secret ``` **Генерация безопасных секретов:** ```bash # Генерация случайного секрета openssl rand -hex 32 # Или используйте Python python -c "import secrets; print(secrets.token_hex(32))" ``` ### 🐳 Docker Security **Dockerfile best practices:** ```dockerfile # Не запускайтесь под root RUN groupadd -r appuser && useradd -r -g appuser appuser USER appuser # Минимальные права на файлы COPY --chown=appuser:appuser . /app # Удаляйте ненужные пакеты RUN apt-get remove --purge -y build-essential && \ apt-get autoremove -y && \ apt-get clean ``` **docker-compose.yml security:** ```yaml services: bot: # Ограничьте ресурсы deploy: resources: limits: memory: 512M cpus: '0.5' # Не пробрасывайте порты наружу без необходимости ports: - "127.0.0.1:8080:8080" # Только localhost # Read-only root filesystem read_only: true tmpfs: - /tmp ``` ## Security Updates ### 📅 График обновлений - **Критические уязвимости**: Исправляются в течение 24-48 часов - **Высокий приоритет**: Исправляются в течение 7 дней - **Средний приоритет**: Исправляются в течение 30 дней - **Низкий приоритет**: Исправляются в следующем планируемом релизе ### 🔄 Процесс обновления 1. **Уведомление**: Администраторы получают уведомление о доступных обновлениях 2. **Тестирование**: Обновления тестируются в изолированной среде 3. **Развертывание**: Постепенное развертывание с возможностью отката 4. **Мониторинг**: Наблюдение за стабильностью после обновления ### 📢 Уведомления о безопасности Подпишитесь на уведомления: - **Telegram**: [Bedolaga Chat](https://t.me/+wTdMtSWq8YdmZmVi) - **GitHub**: Watch repository для получения уведомлений о релизах - **RSS**: Следите за GitHub Releases ## Compliance and Standards ### 📜 Соответствие стандартам **GDPR Compliance:** - Минимизация сбора данных - Право на удаление данных - Уведомление о нарушениях безопасности - Согласие на обработку данных **PCI DSS (для платежей):** - Не храним данные банковских карт - Используем сертифицированные платежные провайдеры - Шифрование чувствительных данных - Регулярные аудиты безопасности ### 🛡️ Third-party Security **Используемые сервисы:** - **Telegram API**: Официальный API с высоким уровнем безопасности - **Remnawave**: VPN панель с собственными мерами безопасности - **YooKassa**: PCI DSS сертифицированный платежный провайдер - **CryptoBot**: Криптовалютные платежи с блокчейн безопасностью **Регулярные проверки:** - Мониторинг безопасности dependencies - Обновление библиотек и зависимостей - Проверка CVE для используемых компонентов ## Incident Response ### 🚨 В случае инцидента безопасности 1. **Немедленно**: - Изолируйте затронутую систему - Сохраните логи и доказательства - Уведомите команду разработки 2. **В течение часа**: - Оцените масштаб инцидента - Определите затронутых пользователей - Начните процедуры восстановления 3. **В течение дня**: - Устраните уязвимость - Восстановите нормальную работу - Уведомите пользователей (если необходимо) 4. **После инцидента**: - Проведите post-mortem анализ - Обновите процедуры безопасности - Внедрите дополнительные защитные меры ### 📊 Отчетность **Внутренние отчеты:** - Еженедельные отчеты о безопасности - Ежемесячные аудиты логов - Квартальные обзоры политик безопасности **Внешние уведомления:** - Уведомление пользователей о критических обновлениях - Публикация Security Advisories при необходимости - Сотрудничество с исследователями безопасности --- **Помните**: Безопасность - это постоянный процесс, а не одноразовая настройка. Регулярно обновляйте зависимости, следите за новостями безопасности и не стесняйтесь сообщать о подозрительной активности.