Seguridad en AdWitch AI
Cómo AdWitch protege tus cuentas publicitarias de Meta y tus datos: cifrado de tokens, los permisos exactos de Meta que solicitamos, aislamiento de equipos, subencargados, retención y eliminación, y cómo reportar una vulnerabilidad.
Última actualización:
AdWitch opera en tus cuentas publicitarias de Meta con los permisos que tú le concedes. Por eso el manejo de los tokens de acceso y de los datos de las cuentas es el núcleo del producto, no un asunto secundario. Esta página describe los controles que realmente existen hoy en la plataforma, sin promesas. Cuando un control cambia, esta página y el registro de cambios cambian con él.
Tokens de acceso y secretos
- Los tokens de acceso de Meta se cifran en reposo con AES-256-GCM (IV aleatorio, etiqueta de autenticación) antes de escribirse en la base de datos. La clave de cifrado se deriva de un secreto que solo existe en el entorno de la aplicación, separado de la base de datos y de sus copias de seguridad: un volcado de la base por sí solo no expone los tokens.
- Los tokens nunca se muestran de vuelta en la interfaz ni en la API tras la conexión; solo su estado (válido, a punto de caducar, qué permisos contiene).
- Cada llamada a la Graph API de Meta se firma con
appsecret_proof, de modo que un token filtrado no puede reutilizarse fuera de nuestros servidores. Las cuentas publicitarias se conectan únicamente mediante Facebook Login for Business con la app de AdWitch: cada token lo emite Meta para nuestra app y al conectarlo se inspecciona condebug_tokenpara registrar la app, la validez, el tipo, la caducidad y los permisos. No aceptamos tokens pegados ni importados. - Las contraseñas se guardan como hashes bcrypt. La autenticación en dos pasos (TOTP, 6 dígitos / 30 segundos) está disponible para cualquier cuenta; el secreto TOTP se almacena cifrado con el mismo esquema que los tokens.
- Restablecer la contraseña revoca todas las sesiones existentes de la cuenta. Las sesiones individuales también pueden revocarse en el servidor.
Qué pedimos a Meta y por qué
Al conectar con «Continuar con Facebook», AdWitch solicita estos permisos y ningún otro:
| Permiso | Para qué |
|---|---|
ads_read | Leer campañas, conjuntos, anuncios, estadísticas y estado de entrega para informes, monitorización y el análisis del agente. |
ads_management | Crear y editar campañas, presupuestos, audiencias, creatividades y reglas automáticas cuando se lo pides al agente, o cuando el Autopilot está en un modo con permiso para actuar. |
business_management | Listar los Business Manager y las cuentas publicitarias a las que tienes acceso para elegir cuáles conectar. |
pages_show_list, pages_read_engagement | Listar las Páginas (y cuentas de Instagram vinculadas) desde las que se puede publicar un anuncio, y leer comentarios para moderarlos. |
pages_manage_ads | Publicar anuncios en nombre de una Página que administras. |
public_profile | Identificar al usuario de Facebook que hizo la conexión (necesario para atender los callbacks de Meta de desautorización y eliminación de datos). |
El trabajo de solo lectura (informes, monitorización) necesita únicamente ads_read; la plataforma registra qué permisos tiene realmente un token y rechaza las acciones de escritura cuando falta ads_management, en lugar de fallar a mitad de camino.
Aislamiento de equipos y roles
- Cada cuenta publicitaria, campaña, creatividad, conversación y archivo pertenece exactamente a un equipo. Cada consulta a la base de datos en la API está limitada al equipo de la sesión iniciada; no existen endpoints entre equipos.
- Los roles dentro de un equipo son Owner, Admin, Manager, Analyst y Viewer. Conectar cuentas, cambiar la configuración del Autopilot y la facturación se limitan a los roles superiores; Viewer y Analyst no pueden modificar nada en Meta.
- Los creativos y archivos adjuntos se almacenan en Cloudflare R2. Los enlaces estables se sirven a través de la API con controles de acceso por equipo; los enlaces firmados de corta duración permiten el acceso autorizado. Los archivos anteriores a este cambio se están copiando desde la CDN de Bunny.net a R2; la zona de Bunny se elimina en cuanto se verifica la copia.
- El personal de AdWitch solo puede entrar en el espacio de un cliente mediante una sesión de soporte explícita, marcada como tal en cada petición; esas sesiones tienen vetadas las funciones administrativas.
Controles de aplicación y red
- Todo el tráfico se sirve por HTTPS. La API envía cabeceras de seguridad estrictas (HSTS, Content-Security-Policy, protección contra frames).
- Las peticiones que cambian estado están protegidas contra CSRF: la API exige una petición same-site o un origen en la lista permitida.
- El inicio de sesión, el registro, los endpoints de IA y la API en su conjunto tienen límites de frecuencia por cliente.
- Las peticiones salientes originadas por entrada del usuario (descargar una imagen por URL, un destino de webhook) pasan por un cliente a prueba de SSRF: resuelve DNS una sola vez, rechaza rangos privados y link-local, fija la dirección validada y vuelve a validar cada redirección.
- Los webhooks entrantes se autentican antes de cualquier procesamiento: las entregas de Meta y Stripe se verifican por firma (los callbacks de Meta además por frescura y repetición); Higgsfield no envía firma, así que su URL de callback lleva un token secreto derivado del secreto de nuestra app y cualquier petición sin el token correcto se rechaza.
- Las acciones de escritura del agente en Meta pasan por una puerta de confirmación en el servidor: los argumentos de la herramienta se validan en el servidor y la acción se ejecuta solo tras tu confirmación en la conversación, por turno y por herramienta.
Subencargados
Compartimos datos con los siguientes proveedores, solo en la medida necesaria para la función que utilizas:
| Proveedor | Finalidad | Datos implicados |
|---|---|---|
| Meta Platforms | La propia plataforma publicitaria | Todo lo que pides al agente leer o cambiar en tus cuentas |
| Anthropic | Modelo de lenguaje del agente | Texto de la conversación, métricas de campañas y textos de creatividades incluidos en la conversación |
| Higgsfield | Generación de imágenes y vídeo | Prompts e imágenes de referencia que aportas para las creatividades |
| Cloudflare R2 | Almacenamiento de medios generados y subidos | Archivos de creatividades |
| Bunny.net | Medios anteriores al cambio a R2 (en retirada) | Archivos de creatividades |
| Stripe | Pagos con tarjeta | Datos de pago (los gestiona el proveedor; AdWitch no guarda números de tarjeta) |
| Resend | Correo transaccional | Dirección de correo, códigos de verificación, notificaciones |
| Telegram | Notificaciones y bot de soporte (opcional) | Id de usuario de Telegram y los mensajes que decides recibir |
La base de datos de la aplicación y la caché funcionan en servidores que operamos nosotros mismos; no se comparten con cargas de otros inquilinos.
Retención y eliminación
- Los callbacks de Meta se atienden automáticamente. Cuando eliminas AdWitch desde la configuración de Facebook (desautorización) o presentas una solicitud de eliminación de datos a través de Meta, la plataforma revoca los tokens almacenados y desconecta todas las conexiones de cuentas hechas por ese usuario de Facebook, en todos los equipos. Las solicitudes de eliminación reciben un código de confirmación y una página de estado; los registros de estado se conservan 90 días.
- La eliminación de la cuenta y del espacio de trabajo sigue la política de eliminación de datos: una solicitud a privacy@adwitch.ai se atiende en 30 días y elimina datos de perfil, configuración y tokens de cuentas publicitarias, historial de campañas y creatividades, analítica, sesiones y archivos de la base de conocimiento.
- Eliminar una cuenta publicitaria dentro de la app borra de inmediato su registro de conexión, incluido el token almacenado.
- Los registros de pago se conservan el tiempo que exige la legislación fiscal y contable, sin datos de tarjeta.
Divulgación responsable
Si crees haber encontrado una vulnerabilidad en AdWitch, escribe a security@adwitch.ai con los pasos para reproducirla. El mismo contacto está publicado en /.well-known/security.txt.
- Acusamos recibo en un plazo de 3 días laborables y te mantenemos informado hasta la resolución.
- Danos un tiempo razonable para corregir el problema antes de divulgarlo, no accedas a datos que no sean tuyos y no ejecutes escáneres automáticos contra producción ni interrumpas el servicio.
- No emprenderemos acciones legales contra investigadores que sigan estas reglas de buena fe. Actualmente no hay programa de recompensas; si lo deseas, te acreditamos en el registro de cambios.
No disponemos por ahora de certificaciones (SOC 2, ISO 27001); anunciaremos cualquier auditoría en esta página.
Preguntas sobre esta página: security@adwitch.ai. URL de la política: https://adwitch.ai/security