Политика безопасности
Последнее обновление: 13 мая 2026
Разделы
1. Как сообщить об уязвимости
1.1. Если вы нашли уязвимость в OmniSolver Code, напишите нам напрямую:
- Telegram: @Matveillo — самый быстрый способ.
- Email: mmatveii19992008@gmail.com.
1.2. В отчёте укажите: краткое описание, шаги для воспроизведения, ожидаемое и фактическое поведение, оценку влияния (например по шкале CVSS) и при возможности minimal PoC. Скриншоты, HAR-файлы и логи — приветствуются. Не публикуйте детали публично до согласования.
1.3. Ответ — в течение 48 часов в рабочие дни. Критические уязвимости (RCE, выход за пределы аккаунта, доступ к чужим данным) обрабатываются вне очереди.
2. Что мы считаем допустимым исследованием безопасности
Можно:
- Тестировать сервис от имени собственного аккаунта.
- Использовать собственные тестовые/демо-данные.
- Анализ публичных endpoint'ов:
/api/pricing/catalog,/health, статические файлы. - Сообщать о найденных проблемах через каналы из раздела 1.
3. Какие уязвимости нас интересуют (приоритет)
- Critical: RCE на сервере, SQL-инъекция с доступом к чужим данным, обход авторизации, чтение/запись чужого workspace или vault, эскалация привилегий до админа.
- High: XSS с доступом к session_token, CSRF на критичных эндпоинтах, утечка персональных данных, обход биллинга, SSRF из URL-import / parse / search.
- Medium: ограниченный self-XSS, недостатки rate-limit'ов, информация в ошибках, проблемы CSP, открытые редиректы.
- Low: отсутствие best-practice заголовков, минорные UX-баги с security-привкусом.
- Not in scope: отсутствие SPF/DMARC на доменах, theoretical timing attacks без PoC, отчёты автоматических сканеров без воспроизводимого PoC, DDoS, отчёты про missing security headers вида
X-Permitted-Cross-Domain-Policies, clickjacking на страницах без чувствительных действий, проблемы безопасности в зависимостях без эксплуатируемого пути.
4. Что уже сделано на стороне сервиса
- Транспорт: HTTPS/TLS 1.3 (Let's Encrypt), HSTS с
preload+includeSubDomains, редирект 80 → 443. - Заголовки: CSP (с CSP-report endpoint),
X-Content-Type-Options: nosniff,X-Frame-Options: SAMEORIGIN,Referrer-Policy: strict-origin-when-cross-origin,Permissions-Policyс урезанным набором разрешений,Cross-Origin-Opener-Policy. - Сессии: httpOnly cookie
session_token, SameSite=Lax, Secure, криптографически случайный 64-байтный токен, TTL 30 дней с продлением. - Пароли: bcrypt с cost 12, dummy-проверка против user enumeration по timing'у.
- Шифрование данных: содержимое сообщений, SSH-учётки, GitHub PAT, vault-секреты — Fernet (AES-128-CBC + HMAC-SHA256), ключ вне БД.
- Rate-limit: nginx-уровень (
omni_auth10r/m +omni_api120r/m с burst), application-уровень (sliding window per-IP, anti-OTP-oracle locks). - SQL: только параметризованные запросы; для
LIKE— собственный_escape_like()+ESCAPE '\\'. - Path traversal: reject
../\\/ NUL,resolve().relative_to(),is_symlink()-проверка во всех workspace-операциях. - SSRF: async DNS pre-check (RFC1918/loopback/reserved/link-local) + post-connect peer-IP check (защита от DNS-rebinding TOCTOU).
- SSH: известные хосты (TOFU known_hosts), строгая проверка отпечатка после первого подключения.
- WS origin validation для
/ws/chatи/ws/admin-log. - Анти-фрод: device fingerprint (ThumbmarkJS, без сторонней телеметрии), captcha при логине, защита от мульти-аккаунтов с device fingerprint.
- Файрвол: UFW, открыты только 80 и 443.
- Backups: ежедневные снимки БД, retention 30 дней.
- Audit log: все мутирующие действия и privacy-relevant read'ы админов (просмотр/экспорт чатов, скачивание файлов, ban/freeze, promo, provider toggle и др.) пишутся в
admin_audit_log. - Право пользователя: экспорт всех данных, удаление аккаунта (
POST /api/account/delete-me).
5. Раскрытие после исправления
5.1. После выпуска фикса мы согласовываем с репортёром текст public-acknowledgement (опционально, с указанием имени/ника, если хотите). Принудительной публикации мы не делаем — приватность исследователя для нас важнее публичности.
5.2. Если уязвимость затронула пользовательские данные, мы информируем затронутых пользователей в разумный срок и фиксируем инцидент во внутреннем журнале.
6. О чём этот документ не говорит
Это не bug bounty — фиксированных выплат нет. По исключительным случаям критических находок мы можем компенсировать репортёру подпиской / разовой благодарностью; решение принимается индивидуально и не является публичной офертой.
7. Контакты
Telegram-бот: @OmniSolverCode_bot
Telegram (админ): @Matveillo
Email: mmatveii19992008@gmail.com
Machine-readable: /.well-known/security.txt