Skip to content

Security: IndeecDen/megapbx-max

Security

SECURITY.md

Security

Сообщить об уязвимости

Не публикуйте токены, .env, payload с персональными данными, содержимое SQLite или готовые эксплойты в public issue.

Свяжитесь с владельцем репозитория через GitHub Security Advisory или защищённый канал. Укажите:

  • версию и компонент;
  • шаги воспроизведения без реальных секретов;
  • ожидаемый и фактический результат;
  • влияние и возможные последствия.

Production-требования

  • храните /etc/megapbx-max.env в режиме 0600;
  • используйте разные значения для MAX_BOT_TOKEN, MAX_WEBHOOK_SECRET, MEGAPBX_CRM_TOKEN и MEGAPBX_API_TOKEN;
  • передавайте токены заголовками; для MegaPBX допускается явно включённый legacy query-token, при этом на всех reverse proxy исключите query string из логов;
  • используйте HTTPS с доверенным сертификатом на порту 443;
  • не отключайте проверку X-CRM-Token и X-Max-Bot-Api-Secret;
  • оставляйте query-token для MegaPBX выключенным, если CRM не требует legacy-режим;
  • ограничивайте доступ к серверу, /var/lib/megapbx-max, SQLite и journal;
  • ротируйте MAX-токен через настройки бота после подозрительных событий;
  • не публикуйте .env, .venv, data/, резервные копии и webhook fixtures с ПДн;
  • назначайте бота в рабочую группу только с минимально необходимыми правами;
  • запускайте один экземпляр приложения на одну SQLite-базу.

Обработка данных

SQLite хранит business ID звонка, текст уведомления, нормализованный номер, имя закрывшего оператора, идентификатор сообщения MAX и временные счётчики. Эти данные нужны для корреляции, дедупликации и TTL-очистки.

База должна находиться в закрытом каталоге сервиса. Резервные копии следует шифровать и удалять по retention-политике. По умолчанию приложение не создаёт бессрочное архивирование.

Application-лог не должен содержать payload, телефон, имя клиента или токены. Для корреляции в логах используется SHA-256 fingerprint.

MAX callback

MAX Webhook secret передаётся открытым заголовом и проверяется в постоянном времени. Это защита от случайного вызова endpoint, а не HMAC-подпись payload. Доступ к HTTPS endpoint и секрету остаются обязательными.

Любой участник рабочего чата может нажать кнопку, как и в Telegram-версии. Для более строгого контроля следует ограничить рабочий чат или добавить allowlist MAX user_id в следующей версии.

There aren't any published security advisories