Безопасность — Asterisk
Что CLI Asterisk читает и хранит, где лежит пароль базы и что видит агент.
Что общего у всех CLI WireCat (связка ключей, разрешения, MCP и то, что никогда не попадает в лог), описано на
общей странице о безопасности. Здесь только то, что касается именно pbx.
pbx хранит настройки в config.json, а состояние в папках, которые показывает pbx doctor. Он читает АТС
и никогда в нее не пишет: Master.csv и аудиозаписи открываются только для чтения, а сеанс базы открывается только для
чтения и отправляет SELECT по таблице CDR, со значениями в виде параметров. Дайте ему пользователя, которому больше
ничего не разрешено, как показано на странице подключите Asterisk, и не открывайте
базу и AMI в интернет.
session start хранит пароль базы в связке ключей ОС или в закрытом файле там, где связка ключей не работает. Пароль
читается скрыто или из stdin, никогда из командной строки, и проверяется, прежде чем его сохранить. Он уходит только
драйверу базы и никогда не попадает в ответ, ошибку, запись запуска или лог. Профиль с локальным Master.csv пароля не
хранит.
Что лежит в хранилище
Хранилище WireCat хранит номера звонящих и их имена из Caller ID, внутренние номера, время звонков, пути к аудиозаписям и, после расшифровки, то, что было сказано. Копию аудиозаписи оно не хранит. Относитесь к хранилищу так же, как к самим звонкам: оно лежит на этом компьютере и доступно для чтения только вашему пользователю. Расшифровки, имена и номера доходят до агента с пометкой «недоверенные данные», никогда как инструкции.
Речь распознается на этом компьютере. Ни аудиозапись, ни расшифровка не уходят во внешний сервис.
Аудиозаписи и согласие
Запись телефонного разговора, ее хранение и перевод в текст может требовать согласия участников звонка, а как именно,
решает закон вашей страны (в России, например, 152-ФЗ о персональных данных). Сообщать звонящим, что звонок
записывается, и хранить записи не дольше разрешенного обязан владелец АТС. pbx читает только аудиозаписи,
которые АТС уже сделала, и не удаляет ни одной из них.
pbx personal mcp serve --http слушает только на 127.0.0.1, для браузерных приложений, которые доходят до него
через ваш собственный туннель. Каждое приложение входит по одноразовому коду, а сервер хранит хеш каждого выданного
входа в папке состояния, доступной для чтения только вам. pbx personal mcp revoke забывает их все.
Запись запуска хранит командную строку в том виде, как вы ее ввели, поэтому pbx runs show показывает, что было
запущено. Секрет при этом сохраняется как [redacted]: параметр с именем вроде token или password, пароль в ссылке,
длинная непрозрачная строка. Номер телефона заменяется на [redacted] внутри введенного слова, включая текст
сообщения: номер, записанный с «+» и кодом страны, или от 11 до 15 цифр подряд, так что длинный id такой длины тоже
скрывается. Чтобы не хранить ни одного введенного слова, выполните pbx personal config set record_input false.
Секрет распознается и по внешнему виду, в записи запуска и в сохраненном сообщении об ошибке: токен известного
формата (GitHub, OpenAI, Slack, AWS, Stripe, npm и подобные), учетные данные Bearer, случайная на вид строка из 20 и
более символов и случайная на вид последовательность из 20 и более шестнадцатеричных символов в нижнем регистре,
например шестнадцатеричный ключ или полный хеш коммита. Значение после имени секрета тоже скрывается, будь то после
=, : или пробела: password=, API_TOKEN=, password hunter2, pin 1234. Некоторые секреты похожи на обычные
слова и остаются: значение из одних букв после имени секрета и пробела (pin this message остается),
шестнадцатеричный ключ в верхнем регистре, короткий хеш коммита или UUID, короткий пароль, введенный без имени
секрета перед ним, и секрет внутри ссылки или пути к файлу, если он не известного формата и не стоит после имени
секрета.
config.json сохраняется доступным для чтения только вам (0600), а его папка создается только для вас (0700).
Файл или папка, созданные старой версией, могут быть открыты другим пользователям компьютера: pbx doctor
выводит каждый такой путь в files.problems и печатает chmod, который это исправляет. В Windows это не
проверяется. Об уязвимости сообщайте так, как описано в
SECURITY.md.