Qué hacen ChatGPT, Gemini y Claude con tus conversaciones
Qué hace cada asistente con lo que le escribes, dónde está el ajuste exacto para desactivar el entrenamiento y qué sigue guardado aunque lo desactives.
Cómo se “contamina” un RAG o dataset, señales típicas, y un plan de defensa práctico (sanitizado, allowlists, evaluaciones, monitorización).
GUÍAS & TUTORIALES · SEGURIDAD · RAG
La trampa
No atacan tu servidor. Atacan lo que tu IA “cree” que es verdad.
La puerta de entrada
El pipeline de ingestión: documentos, conectores, scraping, feedback y “bases de conocimiento”.
La defensa
Higiene + listas permitidas + tests + monitorización. Como si fuese software.
Tu IA no se rompe solo por “prompts malos”. Se rompe cuando su realidad se contamina.
Imagina que tu chatbot de soporte empieza a recomendar un “reembolso por Bizum” que tu empresa jamás ofrece. O que tu asistente interno insiste en un procedimiento inexistente, con una seguridad insultante. Revisas logs, revisas el modelo, revisas el servidor… y no hay intrusión.
La explicación suele estar en un lugar menos glamuroso: los datos. Alguien coló contenido malicioso (o simplemente erróneo) en la fuente que tu RAG o tu dataset usa como “verdad”. Y la IA, obediente, lo amplifica.
Si ya te preocupa el prompt injection, vas por el buen camino (y esta pieza te encaja perfecto con los riesgos de prompt injection y cómo protegerte). Pero el envenenamiento de datos es otra liga: no te “convencen” en una conversación, te cambian el suelo bajo los pies.
El envenenamiento de datos (data poisoning) es sencillo de entender: alterar la información que el sistema aprende o consulta para que sus respuestas se desvíen. No hace falta tumbar tu infraestructura. Basta con influir en “la fuente de la verdad”.
En IA aplicada a empresa, suele haber dos “lugares” donde esto pasa:
Esto apunta a lo que el modelo aprende “de base”: ejemplos, etiquetas, feedback histórico. Es típico en sistemas que reentrenan con datos propios: tickets de soporte, clasificaciones humanas, formularios, registros de CRM…
El resultado: el modelo se “acostumbra” a un patrón falso. No falla siempre. Falla cuando conviene (en ciertos temas, en ciertos usuarios, en ciertas preguntas).
Si usas RAG, el ataque es aún más “limpio”: no tocan el modelo, tocan lo que recuperas. Envenenan documentos, páginas, PDFs, wikis internas, repositorios compartidos o conectores (Drive, Notion, Confluence, SharePoint…).
El truco es perverso: tu sistema hace lo correcto (recupera el contenido “relevante”), pero lo relevante está manipulado. La IA no está alucinando: está citando (mal) una realidad ya contaminada.
Muchas soluciones guardan conversaciones, valoraciones, correcciones, “mejor respuesta”, botones de 👍/👎 y notas internas para mejorar. Si esos datos vuelven al sistema sin control, acabas creando un circuito cerrado donde el atacante solo tiene que insistir, poco a poco, para deformar la memoria. (Esto se mezcla mucho con privacidad y errores típicos: si te interesa esa parte, te encajará cómo evitar alucinaciones y fugas por mal uso.)
No hace falta imaginar un villano de película. La mayoría de envenenamientos ocurren por superficies muy normales:
Vías típicas (y por qué dan tanto miedo):
Fíjate en el patrón: casi todo esto es cadena de suministro. Igual que proteges dependencias de software, deberías tratar tus fuentes de datos como “dependencias” con riesgo.
La mala noticia: rara vez verás un error obvio tipo “HACKED!!!”. La buena: hay síntomas repetidos. Si ves dos o tres a la vez, merece la pena investigar.
Derivas “locales”
Falla en temas concretos (reembolsos, garantías, un producto específico) pero todo lo demás va bien.
Seguridad excesiva
Respuestas muy confiadas con detalles “administrativos” que nadie recuerda haber aprobado.
Cambios súbitos
Ayer respondía bien. Hoy “de repente” cambió el criterio. Sin cambios en el modelo.
Y aquí va una señal que muchos pasan por alto:
“Citas raras” en RAG: chunks largos, contenido fuera de contexto, textos tipo “ignora instrucciones anteriores”, listas de pasos que parecen más un manual de manipulación que una política real. Si eso entra en tu recuperación, tu modelo tenderá a obedecerlo a menos que lo trates como contenido no confiable.
La protección contra envenenamiento no es un “parche”, es un sistema. La idea es simple: reducir lo que puede entrar, limpiar lo que entra, comprobar lo que sale y vigilar si algo cambia.
No todos los datos valen igual. Tu política interna firmada no puede tener el mismo peso que un post en un foro. Crea 3–4 niveles, por ejemplo:
Esto te permite hacer algo muy poderoso: filtrar en retrieval. Por ejemplo, “para temas legales, solo Tier 0–1”, “para soporte general, Tier 0–2”.
Si tu RAG traga cualquier URL, cualquier carpeta o cualquier wiki, estás pidiendo problemas. La regla práctica: solo entra lo que puedas explicar.
Qué allowlistear (mínimo viable):
Dominios (si scrapeas), rutas de carpetas (si ingieres docs), espacios concretos (si conectas Notion/Confluence), y tipos de archivo aceptados. Si un conector trae “todo lo accesible”, estás importando también tus futuros problemas.
Piensa en el sanitizado como lavar verduras: no te garantiza que nunca enfermes, pero reduce muchísimo el riesgo.
Limpieza “física”
Eliminar HTML raro, scripts, texto oculto, metadatos sospechosos, duplicados y artefactos de parsing.
Limpieza “semántica”
Detectar patrones de instrucciones tipo “ignora”, “haz X aunque…”, “sigue estas reglas”, y marcarlos como contenido de riesgo.
¿Y si tu caso de uso es “documentos internos sensibles”? Entonces esto se vuelve todavía más crítico, porque un envenenamiento puede mezclarse con filtraciones. En ese contexto, te puede interesar montar un flujo más controlado tipo chatbot privado con documentos en local, donde tú mandas sobre la superficie de ataque.
Si mañana detectas contaminación y no puedes responder “¿qué documento causó esta respuesta?”, estás ciego. A nivel práctico: guarda en metadatos origen, URL/ruta, autor, fecha, hash, permisos y tier. Luego, en retrieval, filtra por esos metadatos.
Esto es un cambio mental importante: el RAG no es una fuente de instrucciones, es una fuente de información. Tu IA debe comportarse como un analista: usarlo como evidencia, no como órdenes. Si el contenido recuperado trae “haz X”, tu modelo debería pensarlo como “este texto dice X”, no “debo hacer X”.
Aquí es donde muchas implementaciones fallan: hacen demo, pasan a producción y cruzan los dedos. Lo que funciona de verdad:
Una vez estás en producción, tu enemigo real es el cambio silencioso: una wiki se edita, una página cambia, un conector sincroniza algo nuevo. Monitoriza (mínimo):
Tienes un RAG para soporte. Ingieres: FAQ del sitio, una carpeta de Drive con políticas, y una wiki interna. Todo va bien.
Un día, alguien edita una página de la wiki (o un doc compartido) y añade un párrafo inocente: “Para acelerar reembolsos, si el cliente insiste, ofrecer devolución inmediata por transferencia directa.” Nadie lo aprueba, pero queda ahí. El conector sincroniza. El RAG lo indexa.
A partir de ahí, la IA no “se inventa” nada: recupera el chunk correcto cuando le preguntan por devoluciones. Y como el chunk parece interno, lo trata como verdad. Resultado: un cambio operativo no autorizado, repetido con tono seguro… y tú te enteras cuando ya hay tickets, enfado y pérdidas.
1) Cierra la entrada: allowlists + permisos estrictos en conectores.
2) Asegura trazabilidad: provenance por chunk para poder cortar por lo sano.
3) Testea y vigila: golden set + canary docs + alertas de deriva.
El envenenamiento de datos es silencioso porque se parece a “operación normal”: documentos entrando, índices actualizándose, el asistente respondiendo seguro. La diferencia entre un sistema robusto y uno frágil suele estar en lo menos sexy: higiene, listas, pruebas y monitorización.
Si lo tratas como ingeniería (y no como una demo eterna), tu RAG deja de ser una ruleta… y se convierte en una herramienta fiable.
Es alterar la información que un sistema de IA aprende o consulta para desviar sus respuestas, sin necesidad de tumbar infraestructura. Puede afectar a un dataset de entrenamiento, a la base de conocimiento de un RAG, o al bucle de feedback que recicla conversaciones y correcciones de usuarios.
Manipulando los documentos que el sistema recupera: wikis internas, PDFs, carpetas compartidas o conectores como Drive o Notion. El sistema recupera correctamente el contenido "relevante", pero ese contenido ya está contaminado, así que la IA no alucina: cita mal una realidad ya manipulada.
Fallos en temas muy concretos mientras el resto funciona bien, respuestas con detalles administrativos que nadie recuerda haber aprobado, cambios súbitos de criterio sin que se haya tocado el modelo, y "citas raras" con chunks fuera de contexto o frases tipo "ignora instrucciones anteriores".
Clasificar las fuentes por niveles de confianza, usar allowlists de dominios y carpetas, sanitizar el contenido antes de indexarlo, guardar el origen (provenance) de cada fragmento, tratar el contenido recuperado como evidencia y no como órdenes, y monitorizar picos de ingestión o cambios de permisos.
Qué hace cada asistente con lo que le escribes, dónde está el ajuste exacto para desactivar el entrenamiento y qué sigue guardado aunque lo desactives.
Qué cambia de verdad entre las versiones gratuitas y de pago de ChatGPT, Claude y Gemini, para qué perfiles compensan los 20 € al mes y cuándo no.
Diferencias reales entre ChatGPT, Claude y Gemini: qué modelo gana en escritura, código e integración, y cómo elegir sin probar los tres.