AI Red Teaming Lab — Parte 1

Qué es PyRIT, por qué importa y qué vamos a construir

Introducción: el problema que PyRIT intenta resolver

Cuando queremos evaluar una aplicación web tradicional, el proceso mental que tenemos es: mapeas la superficie de ataque, identificas endpoints, buscas inyecciones, pruebas autenticación, revisas configuración etc… Hay metodologías consolidadas (OWASP, PTES), herramientas maduras (Burp Suite, Nmap, Metasploit) y un modelo mental claro de qué es una vulnerabilidad y cómo se explota.

Con los sistemas de IA generativa, ese modelo mental no funciona directamente, y esta es la problemática que estoy viendo en ámbito laboral , la gente está intentando tratar a lo agentes de IA como aplicaciones , y esto es un grave error.

El problema no es técnico en el sentido clásico. No estás buscando un buffer overflow ni un SQLi. Estás evaluando el comportamiento de un sistema que, por definición, genera respuestas no deterministas a partir de entradas en lenguaje natural. Las «vulnerabilidades» no son bugs en el código, suelen ser desviaciones del comportamiento esperado que pueden tener consecuencias de seguridad reales: información sensible filtrada, instrucciones maliciosas ejecutadas, guardrails bypasseados, contenido dañino generado.

Esto introduce un problema de escala que viendo de hacer red teaming manual no puede resolver. Si tienes por ejemplo un LLM desplegado en producción respondiendo a millones de peticiones al día, no puedes evaluar su seguridad mandando prompts manualmente uno a uno , podrías necesitar un equipo de 20 o 30 personas para ello si la cantidad de agentes es muy grandi , al final necesitas automatización.,necesitas trazabilidad y necesitas poder repetir los ataques, variarlos sistemáticamente, y medir los resultados.

Ahí es donde entra PyRIT.

¿Qué es PyRIT?

PyRIT (Python Risk Identification Tool for generative AI) es un framework open source desarrollado por el Microsoft AI Red Team — el equipo interno de Microsoft que lleva años haciendo red teaming sobre los propios modelos y aplicaciones de IA de la compañía.

El proyecto nació de una necesidad real: el equipo necesitaba herramientas que no existían. Las herramientas de seguridad tradicionales no están diseñadas para evaluar comportamiento de LLMs, y los enfoques manuales de red teaming de IA no escalan. Así que construyeron las suyas, y en 2024 las hicieron públicas.

Qué hace PyRIT exactamente

PyRIT no es una herramienta única con una función fija. Es un framework modular compuesto por varios componentes que se pueden combinar para construir evaluaciones de seguridad complejas:

Targets: representan el sistema que queremos evaluar. Puede ser Azure OpenAI, la API de OpenAI directa, un endpoint de HuggingFace, un modelo local con Ollama, o incluso una aplicación web completa instrumentada con Playwright. El concepto clave es que un target es cualquier sistema que recibe una entrada y devuelve una respuesta.

Attacks: definen la estrategia de ataque. El más básico es PromptSendingAttack, que simplemente envía una lista de prompts al target. Pero hay ataques más sofisticados: CrescendoAttack (construye el ataque de forma incremental a lo largo de una conversación), TreeOfAttacksWithPruning (usa otro LLM como «red teamer» automatizado), entre otros.

Converters: transforman los prompts antes de enviarlos. Esto incluye técnicas como codificación en Base64, traducción a otro idioma, inserción de caracteres especiales, o cualquier manipulación que pueda ayudar a bypassear filtros. Los converters se pueden encadenar.

Scorers: evalúan las respuestas del target. Aquí está uno de los aspectos más interesantes de PyRIT: ¿cómo sabes si un ataque «funcionó»? Puedes usar otro LLM como juez (LLM-as-judge), conectar Azure AI Content Safety para clasificación automática, definir criterios custom, o usar escalas Likert para evaluación más matizada.

Memory: PyRIT persiste todas las conversaciones, ataques y scores en una base de datos (SQLite por defecto, Azure SQL para despliegues más serios). Esto permite auditoría completa, reproducibilidad, y análisis posterior.

La diferencia con otras herramientas

En el espacio de LLMSecOps hay varias herramientas que por ejemplo traté en la certificación de CAISP: Garak (también orientado a evaluación de LLMs, más focalizado en evaluaciones automáticas predefinidas), Promptfoo (testing de prompts orientado a QA y CI/CD), y Rebuff (detección de prompt injection en producción).

PyRIT al final se posiciona de forma diferente: es más un framework para construir evaluaciones custom que una herramienta de escaneo out-of-the-box. La analogía más apropiada en el mundo tradicional sería compararla con Metasploit — no te da una vulnerabilidad específica, te da la infraestructura para construir y ejecutar exploits de forma estructurada.

CoPyRIT: la interfaz gráfica

CoPyRIT es la GUI oficial de PyRIT, construida en React con Fluent UI (el design system de Microsoft), que expone las capacidades core del framework a través de una interfaz web. El propio Microsoft AI Red Team la usa en su trabajo diario.

Lo que se puede hacer desde CoPyRIT:

  • Chat interactivo contra targets configurados: lanzas prompts manualmente, ves las respuestas, exploras conversaciones de forma ramificada (puedes bifurcar una conversación en un punto concreto para explorar distintas direcciones)
  • Historial completo de ataques: filtratable por tipo de ataque, outcome, converter usado, operador, etc. Todo queda registrado automáticamente en la base de datos de PyRIT
  • Gestión de targets: configuras los endpoints (Azure OpenAI, OpenAI, etc.) con sus credenciales directamente desde la UI
  • Panel de Converters: aplicas transformaciones a los prompts desde la interfaz

Arquitectura que vamos a seguir :

Componentes y por qué cada uno

Azure Container Apps: es el servicio de hosting para CoPyRIT. La alternativa más obvia sería una VM, pero Container Apps tiene ventajas claras para un lab: escala a cero cuando no lo usemos (no consume crédito si no estás trabajando), no tendremos que gestionar el sistema operativo, y el despliegue desde una imagen Docker es directo. El coste en idle es prácticamente cero.

Azure Container Registry (ACR): almacena la imagen Docker de CoPyRIT. ACR tiene integración nativa con el resto de servicios Azure y permite usar managed identity para el pull de imágenes (sin credenciales en texto plano).

Azure OpenAI Service con GPT-4o: es el target del lab, el sistema que vamos a evaluar. Usarlo como target tiene una ventaja didáctica importante: es un modelo con guardrails bien documentados, lo que hace más interesante explorar sus límites y medir qué técnicas tienen efecto y cuáles no.

Entra ID (autenticación): protege el acceso a CoPyRIT. Aunque es un lab personal, exponer una herramienta de red teaming sin autenticación en internet no tiene ningún sentido. Container Apps permite configurar Entra auth con pocos comandos, y Azure for Students ya tiene un tenant de Entra asociado.

Flujo de datos simplificado

  1. Abres CoPyRIT en el navegador (URL pública de Container Apps)
  2. Te autenticas con tu cuenta Microsoft via Entra
  3. Configuras Azure OpenAI como target (endpoint + API key)
  4. Lanzas un ataque — CoPyRIT envía el prompt al backend PyRIT
  5. El backend construye la petición y la envía al endpoint de Azure OpenAI
  6. La respuesta vuelve, PyRIT la almacena en la DB y la muestra en la UI
  7. Opcionalmente, un scorer evalúa la respuesta automáticamente

Qué usaremos para este lab

Cuenta y acceso

  • Azure for Students — si eres estudiante puedes activarla en azure.microsoft.com/free/students. Da $100 de crédito sin tarjeta, válido 12 meses. Si ya tienes una suscripción de pago también funciona, obviamente.
  • Cuenta Microsoft — necesaria para Entra ID.

Herramientas locales

bash

# Verificar que tienes lo necesario:
az --version          # Azure CLI >= 2.50
docker --version      # Docker Desktop o Docker Engine
git --version         # Para clonar el repo de PyRIT
python --version      # Python >= 3.11 (para pruebas locales)

Si te falta alguno:

Objetivo:

Montar este lab no es solo un ejercicio. Hay un argumento más amplio que vale la pena.

La adopción de LLMs en producción está acelerando de forma significativa. Cada vez más organizaciones despliegan agentes de IA, chatbots, sistemas de RAG y pipelines de procesamiento de lenguaje natural que interactúan con datos sensibles o toman decisiones con impacto real. La superficie de ataque se está expandiendo, y los equipos de seguridad que no desarrollen capacidades para evaluar estos sistemas van a quedarse atrás.

El problema es que el conocimiento en este área está muy concentrado. Hay pocas personas con experiencia real en AI red teaming, los frameworks son jóvenes, y la documentación asume con frecuencia niveles de conocimiento que no son universales.

Esta serie intenta asentar los conceptos que necesito para construir el lab real, documentar cada decisión técnica, y hacerlo accesible para gente de IT pero sin experiencia previa en seguridad de IA casi como soy yo ahora vamos. xD

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *