Мы обеспечиваем поддержку безопасности для следующих версий:
| Version | Supported |
|---|---|
| 2.x.x | ✅ Yes |
| 1.x.x | ❌ No |
| < 1.0 | ❌ No |
Для сообщений о критических уязвимостях безопасности:
НЕ создавайте публичные Issues или Pull Requests
Вместо этого:
- Свяжитесь с @fringg напрямую в Telegram
- Укажите в сообщении "SECURITY VULNERABILITY" в начале
- Опишите уязвимость детально
- Дайте время на исправление (обычно 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 атаки
- Проблемы с логированием чувствительных данных
-
Описание уязвимости
- Тип уязвимости
- Затронутые компоненты
- Потенциальное воздействие
-
Шаги воспроизведения
- Детальные инструкции
- Скриншоты или видео (если применимо)
- Тестовые данные
-
Proof of Concept
- Работающий эксплойт (если безопасно)
- Логи или вывод команд
-
Предлагаемые исправления
- Возможные решения
- Альтернативные подходы
Аутентификация и авторизация:
- Проверка админ 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
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)}")- Нет хардкода API ключей или паролей
- Все пользовательские данные валидируются
- SQL запросы используют параметризированные запросы
- Ошибки логируются без раскрытия чувствительной информации
- Внешние запросы используют таймауты
- Webhook подписи проверяются
- Rate limiting применяется где необходимо
- Авторизация проверяется для защищенных операций
Обязательные переменные:
# Критически важные - должны быть установлены
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))"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 cleandocker-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- Критические уязвимости: Исправляются в течение 24-48 часов
- Высокий приоритет: Исправляются в течение 7 дней
- Средний приоритет: Исправляются в течение 30 дней
- Низкий приоритет: Исправляются в следующем планируемом релизе
- Уведомление: Администраторы получают уведомление о доступных обновлениях
- Тестирование: Обновления тестируются в изолированной среде
- Развертывание: Постепенное развертывание с возможностью отката
- Мониторинг: Наблюдение за стабильностью после обновления
Подпишитесь на уведомления:
- Telegram: Bedolaga Chat
- GitHub: Watch repository для получения уведомлений о релизах
- RSS: Следите за GitHub Releases
GDPR Compliance:
- Минимизация сбора данных
- Право на удаление данных
- Уведомление о нарушениях безопасности
- Согласие на обработку данных
PCI DSS (для платежей):
- Не храним данные банковских карт
- Используем сертифицированные платежные провайдеры
- Шифрование чувствительных данных
- Регулярные аудиты безопасности
Используемые сервисы:
- Telegram API: Официальный API с высоким уровнем безопасности
- Remnawave: VPN панель с собственными мерами безопасности
- YooKassa: PCI DSS сертифицированный платежный провайдер
- CryptoBot: Криптовалютные платежи с блокчейн безопасностью
Регулярные проверки:
- Мониторинг безопасности dependencies
- Обновление библиотек и зависимостей
- Проверка CVE для используемых компонентов
-
Немедленно:
- Изолируйте затронутую систему
- Сохраните логи и доказательства
- Уведомите команду разработки
-
В течение часа:
- Оцените масштаб инцидента
- Определите затронутых пользователей
- Начните процедуры восстановления
-
В течение дня:
- Устраните уязвимость
- Восстановите нормальную работу
- Уведомите пользователей (если необходимо)
-
После инцидента:
- Проведите post-mortem анализ
- Обновите процедуры безопасности
- Внедрите дополнительные защитные меры
Внутренние отчеты:
- Еженедельные отчеты о безопасности
- Ежемесячные аудиты логов
- Квартальные обзоры политик безопасности
Внешние уведомления:
- Уведомление пользователей о критических обновлениях
- Публикация Security Advisories при необходимости
- Сотрудничество с исследователями безопасности
Помните: Безопасность - это постоянный процесс, а не одноразовая настройка. Регулярно обновляйте зависимости, следите за новостями безопасности и не стесняйтесь сообщать о подозрительной активности.