Reuniones y llamadasAsterisk

Seguridad — Asterisk

Qué lee y guarda la CLI de Asterisk, dónde vive la contraseña de la base de datos y qué ve un agente.

Lo que comparten todas las CLI de WireCat (el llavero, los permisos, MCP y lo que nunca llega a un registro) está en la página de seguridad común. Aquí solo queda lo propio de pbx.

pbx guarda sus ajustes en config.json y su estado en las carpetas que muestra pbx doctor. Lee la centralita y nunca escribe en ella: Master.csv y las grabaciones se abren solo para lectura, y una sesión de base de datos se abre en solo lectura y envía un SELECT de la tabla del CDR, con los valores como parámetros. Dale un usuario que no pueda hacer nada más, como muestra conecta tu Asterisk, y no expongas la base de datos ni AMI a internet.

session start guarda la contraseña de la base de datos en el llavero del sistema, o en un archivo privado donde no funciona ningún llavero. La contraseña se lee oculta o desde stdin, nunca desde la línea de comandos, y se comprueba antes de guardarla. Solo va al controlador de la base de datos, nunca a una respuesta, un error, un registro de ejecución o un log. Un perfil con un Master.csv local no guarda ninguna.

Qué guarda el almacén

El almacén de WireCat guarda los números de quienes llaman y sus nombres del identificador de llamada, las extensiones, las horas de las llamadas, las rutas de las grabaciones y, una vez transcritas, lo que se dijo. No guarda una copia de la grabación. Trata el almacén como las propias llamadas: está en este ordenador y solo tu usuario puede leerlo. Las transcripciones, los nombres y los números llegan al agente marcados como datos no fiables, nunca como instrucciones.

La voz se reconoce en este ordenador. Ninguna grabación ni transcripción va a un servicio externo.

Grabaciones y consentimiento

Grabar una llamada, guardarla y convertirla en texto puede requerir el consentimiento de las personas que participan, y la ley de tu país decide cómo (en Rusia, por ejemplo, la ley 152-FZ de datos personales). Avisar a quien llama de que la llamada se graba, y guardar las grabaciones solo el tiempo permitido, son deberes del titular de la centralita. pbx solo lee las grabaciones que la centralita ya hizo, y no borra ninguna.

pbx personal mcp serve --http escucha solo en 127.0.0.1, para aplicaciones del navegador que llegan a él a través de tu propio túnel. Cada aplicación inicia sesión con un código de un solo uso, y el servidor guarda un hash de cada inicio de sesión que concede, en la carpeta de estado, legible solo por ti. pbx personal mcp revoke los olvida todos.

Un registro de ejecución guarda la línea de comandos tal como la escribiste, así que pbx runs show te dice qué se ejecutó. Aun así, un secreto se guarda como [redacted]: una opción con nombre de token o de contraseña, una contraseña en un enlace, una cadena opaca larga. Un número de teléfono se sustituye por [redacted] dentro de la palabra que escribiste, también en el texto de un mensaje: uno escrito con su "+" y el código de país, o de 11 a 15 dígitos seguidos, así que también se oculta un id largo de esa longitud. Para no guardar ninguna de las palabras que escribes, ejecuta pbx personal config set record_input false.

Un secreto también se reconoce por su aspecto, en un registro de ejecución y en un mensaje de error guardado: un token con un formato conocido (GitHub, OpenAI, Slack, AWS, Stripe, npm y similares), una credencial Bearer, una cadena de aspecto aleatorio de 20 caracteres o más, y una serie de aspecto aleatorio de 20 o más caracteres hexadecimales en minúscula, como una clave hexadecimal o el hash completo de un commit. También se oculta el valor que sigue al nombre de un secreto, venga después de =, de : o de un espacio: password=, API_TOKEN=, password hunter2, pin 1234. Algunos secretos parecen palabras normales y se quedan: un valor solo de letras tras el nombre de un secreto y un espacio (pin this message se queda), una clave hexadecimal en mayúsculas, un hash de commit corto o un UUID, una contraseña corta escrita sin el nombre de un secreto delante, y un secreto dentro de un enlace o de una ruta de archivo, salvo que tenga un formato conocido o vaya tras el nombre de un secreto.

config.json se guarda de modo que solo tú puedas leerlo (0600), y su carpeta se crea solo para ti (0700). Un archivo o una carpeta que creó una versión anterior puede estar abierto a otros usuarios del ordenador: pbx doctor muestra cada uno en files.problems e imprime el chmod que lo corrige. En Windows no se comprueba. Informa de una vulnerabilidad como indica SECURITY.md.