mediumCWE-79OWASP LLM02:2025

Sin Sanitización del Output de IA

El 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.

Cómo Funciona

Si tu app le pide a un LLM que genere contenido HTML (emails, reportes, markdown) y lo renderizas con dangerouslySetInnerHTML o innerHTML sin eliminar tags maliciosos, un atacante puede usar inyección de prompts para que la IA devuelva una etiqueta script. Ese script luego corre en el navegador de cada usuario que ve el contenido.

Código Vulnerable
// MAL: renderizando markdown generado por IA como HTML sin sanitización
const aiHtml = marked(aiGeneratedMarkdown); // convierte markdown a HTML
return <div dangerouslySetInnerHTML={{ __html: aiHtml }} />;
Código Seguro
// BIEN: sanitiza el HTML después de la conversión de markdown
import DOMPurify from 'dompurify';
const rawHtml = marked(aiGeneratedMarkdown);
const safeHtml = DOMPurify.sanitize(rawHtml, { USE_PROFILES: { html: true } });
return <div dangerouslySetInnerHTML={{ __html: safeHtml }} />;

Ejemplo Real

Investigadores mostraron que los asistentes de escritura con IA que generan contenido HTML podían ser manipulados vía inyección indirecta de prompts para incluir payloads XSS. Si ese contenido se almacena y se muestra a otros usuarios, se convierte en una vulnerabilidad XSS almacenado a escala.

Cómo Prevenirlo

  • Siempre pasa el HTML generado por IA por DOMPurify antes de usar dangerouslySetInnerHTML
  • Usa una Content Security Policy (CSP) que bloquee scripts inline como medida de defensa en profundidad
  • Considera usar un renderer de markdown que genere HTML sanitizado por defecto (como rehype-sanitize)
  • Valida que el output de la IA solo contenga elementos HTML esperados para tu caso de uso
  • Loguea los outputs de IA que contengan patrones sospechosos (tags script, event handlers) para revisión

Tecnologías Afectadas

Node.jsReact

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas