Ir al contenido
Guide

OWASP Top 10 para aplicaciones agentes: lo que los desarrolladores de API deben cambiar

| 10 min read

Las 10 principales aplicaciones agentes de OWASP enumeran los riesgos que la seguridad de su API existente pasa por alto. Cinco correcciones que los desarrolladores de API pueden enviar esta semana, con código.

Shield icon on dark background representing application security framework
Photo by FLY:D on Unsplash

Su API tiene limitación de velocidad, comprobaciones BOLA y validación de entradas. Un agente de IA evita los tres al encadenar seis puntos finales autorizados en una ruta de escalada de privilegios que su modelo de amenazas nunca consideró. Los informes de 520 incidentes de uso indebido de herramientas a principios de 2026 confirman que esto no es teórico.

OWASP publicó su Top 10 de aplicaciones agentes en 2026, elaborado por más de 100 investigadores de seguridad de Cisco, Microsoft, Google y la comunidad en general. La lista apunta a una nueva superficie de amenaza: la autónoma Agentes de IA que llaman a sus API, retienen memoria y toman decisiones sin la aprobación humana.

La original Top 10 de seguridad de API de OWASP asume un humano hace clic en un botón y activa una solicitud. La lista agente supone que una máquina dispara 50 solicitudes. en una cadena, cada uno informado por la respuesta anterior, sin ningún ser humano en el circuito. Mismas API, diferentes perfil del atacante.

Esta guía cubre los cinco riesgos agentes de OWASP que los desarrolladores de API pueden solucionar en la capa de API, con Código de trabajo que puedes enviar esta semana.

La capa de acción agente: por qué sus API son la superficie de ataque

Las API han evolucionado hasta convertirse en lo que los investigadores de seguridad ahora llaman la "capa de acción agente". Cada herramienta un Los agentes de IA utilizan, ya sea solicitando inventario, consultando una base de datos o enviando una notificación, mapas a un Llamada API. El agente no interactúa con una interfaz de usuario. Lee su especificación OpenAPI, descubre puntos finales y los llama en secuencia.

El 48,9% de las organizaciones no tiene visibilidad del tráfico de máquina a máquina. Eso significa la mitad de todas las API. La infraestructura no puede distinguir a un usuario humano de un agente autónomo. Si no puedes decirle al diferencia, no se pueden imponer reglas diferentes.

El OWASP Agentic Top 10 cubre: agencia excesiva, inyección rápida, vulnerabilidades de la cadena de suministro, Envenenamiento de la memoria, uso indebido de herramientas y escalada de privilegios, fallas en cascada, manejo inseguro de resultados, Registro insuficiente, fuga de datos y entorno de pruebas inadecuado. Esta guía se centra en los cinco riesgos. lo arreglas en la capa API.

1. Agencia excesiva: agentes que llaman a puntos finales que no deberían

Un agente de atención al cliente necesita leer el estado del pedido. Le das una clave API con acceso a todo tu API. El agente descubre que también puede cancelar pedidos, emitir reembolsos y eliminar cuentas. excesivo agencia significa que el agente tiene permisos más allá de su tarea.

Este es el equivalente agente de OWASP API5 (autorización de nivel de función rota), pero el ataque El vector es diferente. Un atacante humano descubre puntos finales de administración mediante el código fuente o adivinando la URL. Un agente los descubre a través de su especificación de OpenAPI o manifiesto de herramienta. El agente no necesita adivinar; Le entregaste el menú completo.

Solución: claves API con alcance y listas permitidas de puntos finales

Cree una clave API por agente. Cada clave se asigna a una lista explícita de puntos finales permitidos. Rechazar cualquier solicitud fuera de esa lista.

// Scoped API key configuration per agent
const agentPermissions = {
  "agent-order-bot": {
    allowedEndpoints: [
      "GET /api/orders/:id",
      "GET /api/orders/:id/status"
    ],
    rateLimit: { requests: 20, windowSeconds: 60 },
    maxChainDepth: 3
  },
  "agent-support-bot": {
    allowedEndpoints: [
      "GET /api/orders/:id",
      "POST /api/tickets",
      "GET /api/tickets/:id"
    ],
    rateLimit: { requests: 10, windowSeconds: 60 },
    maxChainDepth: 5
  }
};

// Middleware: check agent scope before processing
function enforceAgentScope(req, res, next) {
  const agentId = req.headers["x-agent-id"];
  const permissions = agentPermissions[agentId];

  if (!permissions) {
    return res.status(403).json({ error: "Unknown agent" });
  }

  const route = \`\${req.method} \${req.route.path}\

Para verificar que el JWT de un agente tenga el alcance correcto antes del procesamiento, inspeccione las notificaciones del token. El /v1/jwt/decode El punto final decodifica cualquier JWT sin necesidad de la clave de firma, por lo que puede Audite el contenido del token durante el desarrollo y en su proceso de CI:

curl -s -X POST https://api.botoi.com/v1/jwt/decode \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -d '{
    "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZ2VudC1vcmRlci1ib3QiLCJzY29wZSI6Im9yZGVycy5yZWFkIiwiaWF0IjoxNzQ5NTY0ODAwLCJleHAiOjE3NDk1NjgwMDB9.signature"
  }'

Respuesta:

{
  "success": true,
  "data": {
    "header": {
      "alg": "RS256",
      "typ": "JWT"
    },
    "payload": {
      "sub": "agent-order-bot",
      "scope": "orders.read",
      "iat": 1749564800,
      "exp": 1749568000
    }
  }
}

La scope reclamo dice orders.read. Si este agente llama POST /api/orders/:id/cancel, su middleware debería rechazar la solicitud antes de que llegue tu manejador.

2. Uso indebido de herramientas y escalada de privilegios: agentes encadenando llamadas API

El uso indebido de herramientas registró 520 incidentes en los primeros informes, lo que la convierte en la amenaza agente más común. el patrón: un agente llama al punto final A, extrae datos de la respuesta y luego usa esos datos para llamar punto final B de una manera que el desarrollador nunca anticipó.

Ejemplo: Un agente de integración de Stripe tiene acceso a GET /api/customers/:id y POST /api/refunds. El agente lee el historial de pagos de un cliente, identifica el transacción de mayor valor y se emite un reembolso a sí mismo. Cada llamada individual pasa la autorización. La cadena es la hazaña.

Solución: límites de tarifas por agente y seguimiento de la profundidad de la cadena

La limitación de velocidad estándar cuenta las solicitudes por IP o por clave API. La limitación de tasa agente añade dos dimensiones:

  • Límites por herramienta: Limitar cuántas veces un solo agente puede llamar a un punto final específico dentro de una ventana
  • Límites de profundidad de la cadena: Realice un seguimiento de cuántas llamadas API secuenciales realiza un agente en una sola sesión y córtelas en un umbral definido
Tipo de límite de tarifa lo que atrapa quien lo necesita
Por IP DDoS, relleno de credenciales Cada API
Por clave API Consumidores individuales abusivos Cada API
Por agente por herramienta Agente llamando a un punto final en un bucle API consumidas por los agentes
Profundidad de la cadena Escalada de privilegios en varios pasos API consumidas por los agentes

Requerir agentes para enviar una X-Agent-Session encabezamiento. Realice un seguimiento del recuento de llamadas por sesión. cuando el el recuento supera su umbral, devuelva un 429 con un mensaje de error claro.

3. Registro insuficiente: no hay visibilidad de las llamadas API del agente

El 48,9% de las organizaciones no ven el tráfico de máquina a máquina. Cuando un agente explota su API, usted Necesito responder: ¿qué agente? ¿Qué puntos finales? ¿En qué orden? ¿Durante qué ventana de tiempo? Registros de acceso estándar mostrar direcciones IP y marcas de tiempo. No muestran la identidad del agente ni las secuencias de llamadas.

La lista de agentes de OWASP señala el registro insuficiente como un riesgo principal porque los ataques de agentes parecen tráfico autorizado. Cada solicitud individual pasa la autenticación. El exploit vive en el patrón a lo largo de múltiples solicitudes.

Solución: requerir encabezados de atribución y registrar cadenas de llamadas

Agregue tres encabezados obligatorios para los consumidores de agentes:

  • X-Agent-ID: identificador único para el agente (vinculado a su clave API)
  • X-Agent-Session: identificador de la tarea o conversación actual
  • User-Agent: marco y versión del agente (p. ej., LangChain/0.3.1)
// Middleware: log every agent request with attribution
function agentAuditLog(req, res, next) {
  const logEntry = {
    timestamp: new Date().toISOString(),
    agentId: req.headers["x-agent-id"] || "unknown",
    apiKey: req.headers["x-api-key"]?.slice(-8) || "none",
    method: req.method,
    path: req.path,
    sessionId: req.headers["x-agent-session"] || "none",
    ip: req.ip,
    userAgent: req.headers["user-agent"]
  };

  // Structured JSON log for your SIEM
  console.log(JSON.stringify(logEntry));

  // Track chain depth per session
  const session = req.headers["x-agent-session"];
  if (session) {
    const depth = chainTracker.increment(session);
    if (depth > MAX_CHAIN_DEPTH) {
      return res.status(429).json({
        error: "Agent chain depth exceeded",
        maxDepth: MAX_CHAIN_DEPTH,
        currentDepth: depth
      });
    }
  }

  next();
}

Este middleware registra cada solicitud como JSON estructurado, que alimenta cualquier SIEM o agregador de registros. También refuerza la profundidad de la cadena mediante el seguimiento de llamadas secuenciales por sesión. Cuando investigas un incidente, puedes reconstruir la cadena completa filtrando por sessionId.

4. Manejo de resultados inseguro: agentes que confían en las respuestas de la API sin validación

Un agente llama a su API, recibe una respuesta JSON y la pasa al siguiente paso de su cadena. si el La respuesta contiene campos inesperados, tipos incorrectos o contenido inyectado, el agente propaga el problema. aguas abajo. Este es el equivalente agente de OWASP API10 (consumo inseguro de API), amplificado por el hecho de que los agentes procesan las respuestas automáticamente sin revisión humana.

Ejemplo: Un competidor compromete una API de precios de terceros. El agente busca el producto. precios, recibe una respuesta con un mensaje manipulado price campo establecido en 0.01 y realiza un pedido a ese precio. Ningún humano vio jamás la respuesta.

Solución: valide cada respuesta con un esquema JSON

Comience generando un esquema a partir de una buena respuesta conocida. El /v1/schema/json-to-jsonschema El punto final produce un esquema JSON a partir de cualquier JSON de muestra:

curl -s -X POST https://api.botoi.com/v1/schema/json-to-jsonschema \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -d '{
    "json": {
      "orderId": "ord_12345",
      "status": "shipped",
      "total": 49.99,
      "items": [
        { "sku": "WIDGET-A", "quantity": 2 }
      ]
    }
  }'

Respuesta:

{
  "success": true,
  "data": {
    "schema": {
      "type": "object",
      "properties": {
        "orderId": { "type": "string" },
        "status": { "type": "string" },
        "total": { "type": "number" },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "sku": { "type": "string" },
              "quantity": { "type": "integer" }
            }
          }
        }
      }
    }
  }
}

Luego valide cada respuesta que reciba su agente con ese esquema. El /v1/schema/validate El punto final compara un objeto JSON con cualquier esquema JSON y devuelve errores específicos:

curl -s -X POST https://api.botoi.com/v1/schema/validate \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -d '{
    "schema": {
      "type": "object",
      "required": ["orderId", "status", "total"],
      "properties": {
        "orderId": { "type": "string" },
        "status": { "type": "string", "enum": ["pending", "shipped", "delivered"] },
        "total": { "type": "number", "minimum": 0 }
      },
      "additionalProperties": false
    },
    "data": {
      "orderId": "ord_12345",
      "status": "shipped",
      "total": 49.99,
      "internalNote": "rush order"
    }
  }'

Respuesta:

{
  "success": true,
  "data": {
    "valid": false,
    "errors": [
      {
        "path": "",
        "message": "must NOT have additional properties: internalNote"
      }
    ]
  }
}

La validación atrapada internalNote, un campo que no pertenece a la respuesta. Si una API comienza a devolver campos inesperados, su agente deja de procesar en lugar de pasar datos contaminados.

Aquí está el patrón completo usando el SDK de Botoi Node.js:

import Botoi from "botoi";

const botoi = new Botoi({ apiKey: process.env.BOTOI_API_KEY });

// Step 1: generate a schema from a known-good response
const schemaResult = await botoi.schema.jsonToJsonschema({
  json: knownGoodResponse
});
const responseSchema = schemaResult.data.schema;

// Step 2: validate every agent-received response against that schema
async function validateAgentResponse(response) {
  const validation = await botoi.schema.validate({
    schema: responseSchema,
    data: response
  });

  if (!validation.data.valid) {
    console.error("Response failed validation:", validation.data.errors);
    throw new Error("Untrusted response rejected by schema validation");
  }

  return response;
}

5. Vulnerabilidades de la cadena de suministro: definiciones de herramientas comprometidas

Los agentes de IA descubren herramientas a través de servidores MCP, especificaciones de OpenAPI y manifiestos de herramientas. Si un atacante modifica una definición de herramienta, el agente llama a un punto final diferente, envía datos a un servidor diferente o ejecuta con parámetros diferentes a los previstos por el desarrollador.

Ejemplo: Utiliza un servidor MCP de código abierto que define 30 herramientas. Un atacante presenta una solicitud de extracción que cambia la URL API de una herramienta de api.stripe.com a api.str1pe.com. El cambio pasa la revisión del código porque es un solo carácter. tu agente ahora envía datos de pago al servidor del atacante.

Solución: definiciones de herramientas hash y verificación en tiempo de ejecución

Haga un hash de cada definición de herramienta en el momento de la implementación. Antes de que su agente registre una herramienta en tiempo de ejecución, vuelva a aplicar hash y comparar. El /v1/hash El punto final genera un hash SHA-256 de cualquier cadena:

curl -s -X POST https://api.botoi.com/v1/hash \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -d '{
    "text": "{\\"name\\":\\"get_order_status\\",\\"description\\":\\"Retrieve current order status by order ID\\",\\"parameters\\":{\\"orderId\\":\\"string\\"}}",
    "algorithm": "sha256"
  }'

Respuesta:

{
  "success": true,
  "data": {
    "hash": "a3f2b8c1d4e5f67890abcdef1234567890abcdef1234567890abcdef12345678",
    "algorithm": "sha256"
  }
}

Aquí está el flujo de trabajo de verificación de integridad completo utilizando el SDK de Botoi:

import Botoi from "botoi";
import fs from "fs";

const botoi = new Botoi({ apiKey: process.env.BOTOI_API_KEY });

// Hash every tool definition at deploy time
const toolDefs = JSON.parse(fs.readFileSync("./mcp-tools.json", "utf-8"));
const hashes = {};

for (const tool of toolDefs) {
  const result = await botoi.hash.sha256({
    text: JSON.stringify(tool)
  });
  hashes[tool.name] = result.data.hash;
}

fs.writeFileSync("./tool-hashes.json", JSON.stringify(hashes, null, 2));

// At runtime, verify before registering any tool
async function verifyToolIntegrity(tool) {
  const result = await botoi.hash.sha256({
    text: JSON.stringify(tool)
  });
  const expected = hashes[tool.name];

  if (result.data.hash !== expected) {
    throw new Error(
      \`Tool "\${tool.name}" failed integrity check. \\n\` +
      \`Expected: \${expected}\\n\` +
      \`Got: \${result.data.hash}\`
    );
  }
}

Ejecute el paso de generación de hash en su canalización de CI. Almacene el archivo hashes junto con su implementación artefacto. En tiempo de ejecución, cada herramienta se verifica antes del registro. Un solo carácter cambiado en cualquier La definición de la herramienta provoca un fallo grave.

OWASP agentic top 10 vs API Security top 10: comparación

Las dos listas se complementan. Así es como los cinco riesgos agentes se relacionan con su API más cercana. contrapartes y qué cambios:

Riesgo agente Riesgo de seguridad de API más cercano ¿Qué cambios para los agentes?
Agencia excesiva Autenticación de función rota API5 Los agentes descubren todos los puntos finales a partir de las especificaciones; claves de alcance por agente
Mal uso de herramientas Consumo de recursos API4 Los agentes encadenan llamadas para escalar; agregar límites de profundidad de cadena
Registro insuficiente Sin equivalente directo Las llamadas de agentes parecen tráfico autorizado; agregar encabezados de atribución
Salida insegura API10 Consumo Inseguro Los agentes procesan las respuestas sin revisión humana; agregar validación de esquema
Cadena de suministro Sin equivalente directo La herramienta comprometida definitivamente redirige el tráfico de los agentes; agregar hashes de integridad

Lista de verificación de envío: cinco soluciones para la seguridad de API agente

Cada solución es independiente. Elija uno, envíelo y pase al siguiente.

Arreglar que hacer Punto final de Botoi
Claves API con alcance Una clave por agente; puntos finales de la lista permitida por clave /v1/jwt/decode
Límites de tarifas por agente Seguimiento de la profundidad de la cadena por herramienta y por sesión
Encabezados de atribución Requerir X-Agent-ID, X-Agent-Session; registro JSON estructurado
Validación de respuesta Generar esquema a partir de una buena respuesta; validar todas las respuestas de los agentes /v1/schema/validate, /v1/schema/json-to-jsonschema
Integridad de la herramienta La herramienta hash se define en el momento de la implementación; verificar en tiempo de ejecución /v1/hash

¿Qué viene después?

El Top 10 completo de OWASP para aplicaciones agentes se encuentra en owasp.org. Cisco, Microsoft y Google anunciaron iniciativas de seguridad agente en RSAC 2026, así que espere herramientas y estándares para avanzar rápidamente durante el resto del año.

Los cinco riesgos restantes en la lista (inyección rápida, envenenamiento de la memoria, fallas en cascada, pérdida de datos) Fugas y Sandboxing inadecuado) requieren correcciones en la capa de marco del agente, no en la capa de API. si Si ejecuta un marco de agente, lea el documento completo de OWASP. Si ejecuta API, las cinco correcciones anteriores son tu punto de partida.

Comience con claves API con alcance. Ese único cambio bloquea la mayoría del uso excesivo de agencia y herramientas. escenarios. Luego agregue encabezados de atribución para que pueda ver lo que están haciendo sus agentes. El resto se desprende de visibilidad.

FAQ

¿En qué se diferencia el Top 10 de aplicaciones agentes de OWASP del Top 10 de seguridad de API de OWASP?
API Security Top 10 (2023) aborda los riesgos de los consumidores humanos: autorización incumplida, fallas de autenticación, exposición excesiva de datos. Agentic Applications Top 10 (2026) aborda los riesgos de los agentes autónomos de IA que encadenan llamadas API, retienen memoria entre sesiones y toman decisiones sin supervisión humana. Ambas listas se aplican a las API, pero la lista agente apunta a patrones de máquina a máquina que el original nunca anticipó.
¿Qué es agencia excesiva en aplicaciones agentes?
La agencia excesiva ocurre cuando un agente de IA tiene acceso a puntos finales de API o acciones más allá de lo que requiere su tarea. Por ejemplo, un agente de atención al cliente con acceso a puntos finales de facturación, reembolso y eliminación de cuentas puede encadenar esas llamadas para escalar mucho más allá de responder preguntas. La solución son las claves API con alcance que restringen cada agente a los puntos finales exactos que necesita.
¿Necesito reconstruir mi API para lograr seguridad agente?
No. No es necesario reconstruir. Las cinco correcciones cubiertas en esta guía (claves API de alcance, límites de tasa por herramienta, encabezados de atribución de solicitudes, validación del esquema de respuesta y comprobaciones de integridad de la definición de herramientas) son adiciones a su API existente. Puedes enviar cada uno de forma independiente.
¿Por qué el uso indebido de herramientas es la amenaza más común a las aplicaciones agentes?
El uso indebido de herramientas y la escalada de privilegios registraron 520 incidentes en los primeros informes porque los agentes encadenan llamadas API de maneras que los desarrolladores nunca pretendieron. Un único agente puede llamar a un punto final de lectura, analizar la respuesta y luego llamar a un punto final de escritura utilizando los datos de la primera llamada para escalar privilegios. La mayoría de las API no tienen ningún mecanismo para detectar o bloquear cadenas de varios pasos desde una única sesión de agente.
¿Cómo atribuyo solicitudes de API a agentes de IA específicos?
Agregue un encabezado X-Agent-ID requerido a su API. Cada agente obtiene un identificador único vinculado a su clave API de ámbito. Registre tanto la clave API como el ID del agente en cada solicitud. Esto le brinda un seguimiento de auditoría completo de qué agente llamó a qué punto final, cuándo y en qué secuencia.

Empieza a construir con botoi

150+ endpoints de API para consultas, procesamiento de texto, generacion de imagenes y utilidades para desarrolladores. Plan gratuito, sin tarjeta de credito.