- 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>
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:
basicauth (логин + 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 (по желанию).