Seguridad

«Confía en nosotros» no es una respuesta.

Klorn lee el correo que te escriben otras personas para que tú no tengas que hacerlo. Esa frase es el modelo de amenazas: la entrada principal es texto escrito por desconocidos, algunos de ellos con malas intenciones. Esto es lo que la arquitectura garantiza de verdad, con el archivo que implementa cada garantía.

Esta traducción se ofrece por comodidad; la versión en inglés es la que prevalece. Leer la versión en inglés

Verificación de Google y evaluación independiente

Google completó su revisión de verificación OAuth de Klorn el 2026-10-03. Antes de eso, TAC Security evaluó Klorn de forma independiente según CASA Tier 2; resultado: In Compliance (conforme). La carta de validación (Letter of Validation) de esa evaluación se envió después a Google.

Evaluación
CASA Tier 2, pruebas dinámicas de seguridad de aplicaciones (DAST), realizada por TAC Security
Resultado
In Compliance (conforme), en el nivel de garantía AL1 (OWASP ASVS Level 1)
Fechas
Evaluado el 2026-08-12 · informe emitido el 2026-08-30 · revisión de Google completada el 2026-10-03
Reevaluación
Anual. La próxima evaluación está prevista para agosto de 2027

Los cinco permisos de Google y el porqué de cada uno

Estos cinco son los permisos de Google aprobados en esa revisión, y los únicos permisos de correo y calendario que solicita Klorn. No pide el permiso de acceso completo a Gmail y, en Calendar, solo pide calendar.events y calendar.readonly, nunca el permiso completo de Calendar.

gmail.readonly
Leer tus mensajes para que Klorn pueda clasificarlos, mostrar el motivo de cada decisión y resumir un hilo cuando lo pidas.
gmail.modify
Cambiar el estado de un mensaje cuando actúas en Klorn: archivar o desarchivar, mover a la papelera o sacarlo de ella, destacar, marcar como leído o no leído, y guardar un borrador de respuesta en Gmail.
gmail.send
Enviar correo solo cuando tú lo apruebas —una respuesta que confirmas, una baja por mailto que solicitas— o una respuesta automática según reglas que configuras tú mismo.
calendar.readonly
Leer la disponibilidad (libre/ocupado) de todos tus calendarios, para contrastar los correos de reuniones con tu agenda real y detectar conflictos.
calendar.events
Crear, cambiar o eliminar un evento en tu calendario principal cuando se lo pides a Klorn; no la configuración ni el uso compartido del calendario.

Al iniciar sesión con Google solo se piden tu nombre y tu correo. Los permisos de correo y calendario llegan después, en una segunda pantalla de consentimiento, cuando conectas una bandeja de entrada; y una conexión solo de calendario pide calendar.readonly sin ningún permiso de correo. (openid y userinfo.email/userinfo.profile también aparecen en ese archivo: identifican qué cuenta inició sesión, no son sensibles y no forman parte de lo que revisó Google.)

Adónde van los datos

Los tokens OAuth se cifran con AES-256-GCM antes de guardarse, todas las superficies alojadas usan solo TLS y la analítica nunca incluye el contenido de los mensajes; consulta la tabla de abajo para ver el archivo detrás de cada punto. Los registros caducan según el calendario fijo descrito en Cuánto tiempo se guarda cada cosa. Si prefieres que tu correo no pase en absoluto por nuestros servidores, autoaloja el mismo código con tu propia clave de modelo o un modelo local. La política de privacidad está en /privacy.

Qué significa esto y qué no. La revisión y la evaluación comprueban cómo trata Klorn los datos de Google que solicita. No son un respaldo de Klorn por parte de Google ni cubren nada más allá de esos permisos. Hoy puedes conectar Gmail, Google Calendar, Naver Mail (beta) e iCloud Mail (beta); otros proveedores aún no están disponibles.

Lo que garantiza la arquitectura

PropiedadLo que es cierto de verdadDónde comprobarlo
El correo es una entrada hostilCada cuerpo de correo, asunto y cadena de terceros se envuelve en marcadores <untrusted_content> antes de llegar a un modelo, y antes se eliminan las etiquetas envolventes preexistentes para que un mensaje manipulado no pueda cerrar el envoltorio. La inyección de prompts está dentro del alcance, no es una limitación aceptadaSECURITY.md
Cifrado de tokens en reposoAES-256-GCM antes de que el token toque la base de datos, con rotación del llavero (sobres v1/v2) para que una sospecha de filtración se resuelva rotando la clave sin un corte general. Si falta la clave fuera de dev/test, se aborta el arranque en lugar de recurrir a un respaldocrypto-tokens.ts
Acciones salientesEnviar, borrar definitivamente y reenviar a direcciones externas no pueden depender de la confianza del clasificador. Cada una requiere un recibo emitido en el momento de la aprobación que fija un sha256 de la carga canónica, verificado de nuevo al ejecutarse. Si algo cambió entretanto, la acción se rechazaattention-floor.ts
Comodidades de desarrolloEl secreto JWT de desarrollo, la clave de cifrado de desarrollo, el CORS de localhost y el usuario de demostración están detrás de una lista de permitidos de dev/test que falla en cerrado para cualquier otro NODE_ENVenv.ts
AnalíticaSolo propia. Una lista corta de nombres de eventos genéricos en la propia base de datos Postgres de Klorn. Ningún rastreador externo y nunca el contenido de los mensajesanalytics.ts
Cifrado en tránsitoSolo TLS en todas las superficies alojadas: API, web, API de Google, proveedores de modelosself-hosting.md

Cuánto tiempo se guarda cada cosa

La retención de registros la impone un barrido programado, no una promesa: las acciones del agente, el procesamiento de correo, la entrega de notificaciones push y los registros de webhooks se eliminan a los 90 días, las filas de límite de tasa a los 30 y la contabilidad de tokens a los 180 para analizar desviaciones de coste. Los plazos son una tabla en el código fuente, no un ajuste que podamos ampliar en silencio sin que se note en un diff.

Cómo informar de una vulnerabilidad

Escribe a k0820086@gmail.com con una descripción y los pasos para reproducirla. Por favor, no abras un issue público para un hallazgo explotable. Recibirás un acuse de recibo en unos días; las correcciones de la barrera de aprobación y de las rutas de cifrado de tokens tienen prioridad sobre todo lo demás. Los datos de contacto legibles por máquina están en /.well-known/security.txt.

Lo que no afirmamos. Aparte de la evaluación CASA Tier 2 mencionada arriba, Klorn no ha pasado una prueba de penetración de terceros ni una auditoría SOC 2, y esta página no lo da a entender. Es un producto en beta mantenido por una sola persona. El control compensatorio es que el código es AGPL-3.0 y las rutas relevantes para la seguridad se nombran arriba por archivo: puedes leerlas en lugar de fiarte de nuestra palabra.

SECURITY.md contiene la versión extensa, incluidas las carencias conocidas que decidimos declarar en lugar de omitir.