Respuesta de IA Sin Validación
El output de un LLM se renderiza o ejecuta directo sin verificar si coincide con el formato esperado o contiene contenido dañino.
Cómo Funciona
Los LLMs son no deterministas — pueden devolver formatos inesperados, datos alucinados, o incluso contenido malicioso si el modelo fue comprometido o el prompt fue inyectado. Renderizar ese output directo en una UI o base de datos sin validación puede llevar a XSS, corrupción de datos o errores de lógica en tu app.
// MAL: respuesta de IA renderizada directo en el DOM
const result = await openai.chat.completions.create({ messages });
const aiText = result.choices[0].message.content;
document.getElementById('output').innerHTML = aiText; // XSS si la IA devuelve <script>// BIEN: sanitiza el output de la IA antes de renderizar
import DOMPurify from 'dompurify';
const result = await openai.chat.completions.create({ messages });
const aiText = result.choices[0].message.content ?? '';
// Sanitiza antes de tocar el DOM
document.getElementById('output').innerHTML = DOMPurify.sanitize(aiText);Ejemplo Real
Investigadores demostraron en 2024 que la inyección indirecta de prompts a través de contenido web podía hacer que asistentes de IA en navegadores exfiltraran datos embebiendo instrucciones maliciosas en páginas que la IA estaba resumiendo — el output de la IA se renderizaba sin sanitización.
Cómo Prevenirlo
- Siempre sanitiza el HTML generado por IA con DOMPurify o equivalente antes de renderizar
- Valida que el output de la IA coincida con tu esquema esperado (usa Zod si esperas JSON)
- Usa innerText en lugar de innerHTML cuando solo necesitas mostrar texto
- Si la respuesta de la IA no coincide con los patrones esperados, falla de forma elegante en vez de renderizarla
- Nunca ejecutes código generado por IA sin un sandbox — ver CWE-95
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Inyección de Prompts
highEl input del usuario se concatena directo en el prompt del LLM, permitiendo que atacantes sobreescriban tus instrucciones y hagan que la IA haga lo que ellos quieran.
Filtración de PII a Modelos de IA
highTu app manda información personal identificable — emails, nombres, contraseñas, teléfonos — a APIs de IA externas, exponiendo datos de usuarios a proveedores de modelos de terceros.
API Key de IA en el Frontend
criticalTu API key de OpenAI, Anthropic u otro proveedor de IA está expuesta en el código del cliente, donde cualquiera puede robarla y acumular cargos en tu cuenta.
Sin Sanitización del Output de IA
mediumEl HTML o código generado por un LLM se renderiza directo en la UI sin sanitización, abriendo la puerta a ataques de XSS almacenado.