Skip to content

Security: Al3xanderMakunin/remnawave-bedolaga-telegram-bot

Security

SECURITY.md

🔐 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 напрямую в Telegram
  2. Укажите в сообщении "SECURITY VULNERABILITY" в начале
  3. Опишите уязвимость детально
  4. Дайте время на исправление (обычно 90 дней)

📧 Контактная информация

  • Telegram: @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 секреты

Защита в коде:

# ✅ Правильно
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 конфигурация:

# Открыть только необходимые порты
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:

# ✅ Правильно
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:

# ✅ Правильно - используйте 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:

# ✅ Правильно
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:

# ✅ Правильно - не раскрывайте внутреннюю информацию
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

Обязательные переменные:

# Критически важные - должны быть установлены
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

Генерация безопасных секретов:

# Генерация случайного секрета
openssl rand -hex 32

# Или используйте Python
python -c "import secrets; print(secrets.token_hex(32))"

🐳 Docker Security

Dockerfile best practices:

# Не запускайтесь под 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:

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
  • 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 при необходимости
  • Сотрудничество с исследователями безопасности

Помните: Безопасность - это постоянный процесс, а не одноразовая настройка. Регулярно обновляйте зависимости, следите за новостями безопасности и не стесняйтесь сообщать о подозрительной активности.

There aren’t any published security advisories