Files
Anton Budylin b837254b83 docs: add open-source repository structure for contributors and auditors
- README.md: rewritten — component status, architecture overview, quick start, transparency section
- SECURITY.md: responsible disclosure policy, data flow transparency, known limitations (no E2E)
- CODE_OF_CONDUCT.md: community guidelines
- CONTRIBUTING.md: contribution workflow (was untracked, now committed)
- .github/ISSUE_TEMPLATE/: bug report, feature request, transparency audit templates
- .github/PULL_REQUEST_TEMPLATE.md: PR checklist
- docs/ARCHITECTURE.md: detailed architecture for code auditors — data flows, open vs closed components, ADRs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:47:37 +03:00

3.9 KiB

Политика безопасности — Ласточка

Раскрытие уязвимостей

Если вы нашли уязвимость в безопасности — пожалуйста, не создавайте публичный Issue.

Напишите на почту мейнтейнера (указана в профиле GitHub) с темой [SECURITY] Ласточка — краткое описание.

Мы стараемся ответить в течение 72 часов. После исправления проблема будет раскрыта публично (Coordinated Disclosure).

Область применения

Этот репозиторий покрывает:

  • Web-клиент (lastochka-ui/)
  • Android-клиент (lastochka-android/)
  • Desktop-клиент (lastochka-desktop/)
  • iOS-клиент (lastochka-ios/)
  • Форк Tinode-сервера (lastochka-server/)

Compliance-сервис (compliance/) — закрытый компонент, его уязвимости сообщайте тем же способом.

Что проверять аудиторам кода

Протокол передачи данных

  • Клиент ↔ Сервер: WebSocket over TLS (wss://) — стандарт Tinode.
  • REST API для загрузки медиа: HTTPS.
  • Сертификаты: Let's Encrypt, автообновление.

Нет кастомных протоколов, нет дополнительных HTTP-вызовов к третьим сторонам из клиентского кода (кроме FCM на Android — опционально).

Аутентификация

  • Стандартный механизм Tinode: basic auth (логин + bcrypt-хэш пароля).
  • Сессионные токены хранятся в localStorage (Web) / DataStore (Android). Срок действия — 7 дней.
  • 2FA: реализован в Compliance-сервисе (TOTP), не в Tinode-ядре.

Хранение данных на сервере

  • Сообщения и вложения — PostgreSQL, контролируемый нами сервер в РФ.
  • Медиафайлы — MinIO (S3-совместимое), тот же сервер.
  • Redis — только кэш сессий, TTL 24ч.

Что клиент НЕ делает

  • Не читает контакты телефона.
  • Не отправляет геолокацию.
  • Не собирает аналитику (нет Google Analytics, Firebase Analytics, Sentry).
  • Не использует рекламные SDK.

Известные ограничения

  • End-to-end шифрование не реализовано. Сообщения хранятся на сервере в открытом виде (относительно сервера). Это стандартное поведение Tinode. E2E — в планах.
  • Ключи шифрования находятся у оператора сервера.
  • Compliance-сервис имеет доступ к метаданным сообщений (по требованию ФЗ-152).

Мы не скрываем эти ограничения и фиксируем их явно.

Версионирование

Компонент Текущая версия
Web-клиент 0.1.0
Android 0.1.0
Desktop 0.1.0
Tinode-сервер (форк) см. lastochka-server/go.mod

Поддерживается только последняя версия. Уязвимости в старых версиях не исправляются отдельными патчами.

Благодарности

Исследователи безопасности, ответственно раскрывшие уязвимости, будут упомянуты в CHANGELOG (по желанию).