Los agentes de IA están llamando a su API: 5 errores de autenticación que crean puertas traseras
El 80% de los equipos utilizan agentes de IA en producción, pero sólo el 22% los trata como identidades independientes. Cinco errores de autenticación que convierten tu API en una puerta abierta.
Una encuesta realizada en 2026 a más de 900 profesionales encontró que el 80,9% de los equipos de ingeniería ejecutan agentes de IA en pruebas o producción. La misma encuesta encontró que sólo el 21,9% trata a esos agentes como entidades independientes portadoras de identidad. el resto comparte credenciales, omitir pistas de auditoría y otorgar acceso API general al código que se ejecuta sin supervisión.
Esa brecha es un problema de seguridad. OWASP publicó su Top 10 de aplicaciones agentes en 2026, y el uso indebido de herramientas y Privilege Escalation encabeza la lista con 520 incidentes reportados. Meta documentó un agente de IA deshonesto que pasaba cada control de identidad porque tenía credenciales válidas de un escenario de diputado confuso. El 48,9% de las organizaciones no puede incluso ver qué están haciendo sus agentes con el acceso API.
Esta publicación cubre los cinco errores de autenticación que convierten su API en una puerta abierta para los agentes de IA y cómo cerrar cada uno de ellos. uno con código de trabajo.
Error 1: compartir una única clave API entre todos los agentes
El 44% de los equipos utilizan claves API estáticas para los agentes de IA. Cuando varios agentes comparten una clave, se pierden tres cosas: auditoría senderos (¿qué agente realizó esta solicitud?), revocación granular (revocar un agente los mata a todos) y limitación de tasa por agente (un agente fuera de control agota la cuota para cada agente).
# Three different agents share one API key
# Agent A: summarizes support tickets
# Agent B: processes refunds
# Agent C: exports customer PII
curl -X POST https://api.acme.com/v1/customers/export \\
-H "Authorization: Bearer sk_live_shared_key_for_all_agents" \\
-H "Content-Type: application/json" \\
-d '{"format": "csv", "include_pii": true}'
# Which agent made this request? You can't tell.
# Need to revoke Agent C? You break A and B too.
La solución: emitir una credencial única por agente. Cada clave se asigna a una identidad de agente específica, un alcance definido de puntos finales y su propio límite de velocidad. Cuando necesite revocar el Agente C, los agentes A y B siguen ejecutándose.
# Each agent gets its own scoped API key
curl -X POST https://api.acme.com/v1/tickets/summary \\
-H "Authorization: Bearer sk_live_agent_a_tickets_readonly" \\
-H "X-Agent-ID: agent-ticket-summarizer" \\
-H "Content-Type: application/json" \\
-d '{"ticket_id": "TKT-4829"}'
Utilice el X-Agent-ID encabezado junto a la clave API para que sus registros siempre atribuyan las solicitudes a un
agente específico. Decodifica el token para verificar que sus afirmaciones coincidan con el agente que realiza la llamada.
# Inspect what permissions an agent token carries
curl -s -X POST https://api.botoi.com/v1/jwt/decode \\
-H "Content-Type: application/json" \\
-d '{"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZ2VudC1yZWZ1bmQtcHJvY2Vzc29yIiwic2NvcGVzIjpbInJlZnVuZHM6d3JpdGUiLCJvcmRlcnM6cmVhZCJdLCJleHAiOjE3NDk2MDAsMDAwLCJpc3MiOiJhY21lLWF1dGgifQ.signature"}'
{
"success": true,
"data": {
"header": {
"alg": "RS256",
"typ": "JWT"
},
"payload": {
"sub": "agent-refund-processor",
"scopes": ["refunds:write", "orders:read"],
"exp": 1749600000,
"iss": "acme-auth"
}
}
}
El confuso problema del diputado: El incidente del agente rebelde de Meta ocurrió porque el agente mantuvo Credenciales válidas que otorgaron acceso más allá de su alcance previsto. El agente pasó todos los controles de identidad. el las credenciales eran legítimas. El problema fue que nadie los ajustó al propósito del agente.
Error 2: otorgar acceso completo a la API cuando un agente necesita un punto final
El 35% de las organizaciones dependen de cuentas de servicios compartidos para los agentes de IA. Una cuenta de servicio con acceso API completo significa que su agente de resumen de boletos también puede procesar reembolsos, exportar PII del cliente y eliminar registros. Ése es un principio de violación de privilegios mínimos.
Alcance cada token de agente hasta los puntos finales y acciones mínimos que necesita. Un agente de procesamiento de reembolsos obtiene
refunds:write y orders:read. Nada más.
// Mint a scoped token for each agent at deploy time
interface AgentTokenClaims {
sub: string; // unique agent identity
scopes: string[]; // minimum required permissions
exp: number; // short TTL: 1-24 hours
iss: string; // your auth service
rate_limit: number; // requests per minute for this agent
}
const agentClaims: AgentTokenClaims = {
sub: "agent-refund-processor",
scopes: ["refunds:write", "orders:read"],
exp: Math.floor(Date.now() / 1000) + 3600, // 1 hour
iss: "acme-auth",
rate_limit: 30,
};
Antes de implementar un agente, verifique que su token tenga los alcances correctos y no haya caducado. Decodificar el
token con el punto final Botoi JWT para inspeccionar los reclamos y el is_expired bandera.
# Decode the token and check expiry before trusting claims
curl -s -X POST https://api.botoi.com/v1/jwt/decode \\
-H "Content-Type: application/json" \\
-d '{
"token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZ2VudC10aWNrZXQtc3VtbWFyaXplciIsInNjb3BlcyI6WyJ0aWNrZXRzOnJlYWQiXSwiZXhwIjoxNzQ5Njg2NDAwfQ.abc123"
}'
{
"success": true,
"data": {
"header": {
"alg": "HS256",
"typ": "JWT"
},
"payload": {
"sub": "agent-ticket-summarizer",
"scopes": ["tickets:read"],
"exp": 1749686400
},
"signature": "abc123",
"is_expired": false,
"expires_at": "2025-06-11T22:40:00.000Z",
"expires_in_seconds": 3600
}
}
| Acercarse | Control de alcance | Revocación | Pista de auditoría | Riesgo |
|---|---|---|---|---|
| Cuenta de servicio compartida | Ninguna | Rompe a todas las agentes | Sin atribución | Alta |
| Clave API estática por agente | Solo nivel de clave | Por agente | Por clave | Medio |
| JWT con alcance por agente | Punto final + acción | Por agente + vencimiento | Reclamaciones completas | Bajo |
| Intercambio de tokens OBO | Heredado + reducido | Por sesión | cadena completa | Más bajo |
Las nuevas soluciones de IAM para agentes de IA admiten el intercambio de tokens en nombre de OBO. El agente recibe un token. derivado de la sesión del usuario original, cuyo alcance se ajusta automáticamente a los permisos que ese usuario otorgó. esto Este enfoque crea una cadena de autorización completa desde el usuario hasta el agente y la API.
Error 3: las credenciales del agente no tienen caducidad
El 43% de los equipos utilizan autenticación de nombre de usuario/contraseña para los agentes de IA. Esas credenciales no caducan. API estática Las claves tampoco caducan, a menos que incluya la caducidad en su sistema. Una credencial de agente que vive para siempre Es una credencial que puede ser robada, filtrada en registros o guardada en un repositorio y explotada meses después.
Establezca un TTL máximo de 1 a 24 horas en los tokens de agente. Genere una nueva credencial en cada implementación o en un horario. Utilice el generador de contraseñas de Botoi para crear secretos de alta entropía para la firma HMAC.
# Generate a high-entropy secret for HMAC signing
curl -s -X POST https://api.botoi.com/v1/password/generate \\
-H "Content-Type: application/json" \\
-d '{"length": 64, "uppercase": true, "lowercase": true, "numbers": true, "symbols": false}'
{
"success": true,
"data": {
"password": "kX9mT2vR8nL4wQ6jY3bA5cF7hD1gP0sE9uI2oK4lM6nB8xZ3vC5tR7yW0qJ1aG"
}
}
Agregar firma de solicitud HMAC
Más allá de la autenticación basada en token, firme cada carga útil de solicitud con HMAC-SHA256. Tu API verifica la firma antes procesando la solicitud. Esto demuestra que la carga útil no fue manipulada en tránsito y vincula cada solicitud a un secreto de agente específico.
# Sign a request payload so your API can verify the sender
PAYLOAD='{"agent_id":"agent-refund-processor","action":"refund","order_id":"ORD-7291"}'
curl -s -X POST https://api.botoi.com/v1/hash/hmac \\
-H "Content-Type: application/json" \\
-d "{
\\"text\\": \\"$PAYLOAD\\",
\\"key\\": \\"kX9mT2vR8nL4wQ6jY3bA5cF7hD1gP0sE9uI2oK4lM6nB8xZ3vC5tR7yW0qJ1aG\\",
\\"algorithm\\": \\"sha256\\"
}"
{
"success": true,
"data": {
"hmac": "a3f8c2d1e5b7094f6d2c8a1e3b5f7d9e4c6a8b0d2f4e6c8a0b2d4f6e8c0a2b4",
"algorithm": "sha256"
}
}
Su servidor API vuelve a calcular el HMAC utilizando su copia almacenada del secreto del agente. Si los hashes coinciden, el La solicitud es auténtica. Si no lo hacen, rechácelo.
Automatizar la rotación secreta
La rotación manual no escala cuando se ejecutan docenas de agentes. Cree un script de rotación que genere un nuevo secreto, lo implementa, verifica la conectividad y luego revoca el anterior.
import Botoi from "@botoi/sdk";
const botoi = new Botoi({ apiKey: process.env.BOTOI_API_KEY });
async function rotateAgentSecret() {
// Generate a new 64-character secret
const { data } = await botoi.password.generate({
length: 64,
uppercase: true,
lowercase: true,
numbers: true,
symbols: false,
});
console.log("New secret generated. Deploy to agent, then revoke the old one.");
// Hash the new secret for storage (never store plaintext)
const hashed = await botoi.hash.sha256({ input: data.password });
console.log("Hashed for DB:", hashed.data.hash);
return { secret: data.password, hash: hashed.data.hash };
}
rotateAgentSecret();
Error 4: omitir el registro de solicitudes para llamadas de máquina a máquina
El 48,9% de las organizaciones no ven el tráfico de máquina a máquina. Registran llamadas API humanas pero eximen las internas comunicación de servicio a servicio desde su pila de observabilidad. Los agentes de IA caen en ese punto ciego.
Cuando un agente se porta mal, envía una avalancha de solicitudes, accede a puntos finales fuera de su alcance o obtiene comprometido, debe responder tres preguntas: ¿qué agente, cuándo y qué tocó? Sin petición iniciando sesión, no puedes responder a ninguna de ellas.
// Express middleware: log every agent request
app.use("/v1/*", (req, res, next) => {
const agentId = req.headers["x-agent-id"] || "unknown";
const start = Date.now();
res.on("finish", () => {
const log = {
timestamp: new Date().toISOString(),
agent_id: agentId,
method: req.method,
path: req.path,
status: res.statusCode,
duration_ms: Date.now() - start,
ip: req.ip,
user_agent: req.headers["user-agent"],
};
console.log(JSON.stringify(log));
});
next();
});
Capture la identidad del agente, el punto final, el método HTTP, el código de estado y la duración de cada solicitud. Enviar estructurado registros en su plataforma de observabilidad. Establezca alertas para anomalías: picos repentinos en el volumen de solicitudes, solicitudes de puntos finales fuera del alcance del agente o tasas de error elevadas.
Realice un seguimiento de lo que envía el agente, no de lo que dice que envía. Registre el hash de carga útil de la solicitud
(usando /v1/hash) junto con los metadatos. Esto le proporciona evidencia de manipulación sin
almacenar cargas útiles confidenciales en su sistema de registro.
Error 5: tratar la autenticación del agente de la misma manera que la autenticación humana
Sólo el 18 % de los líderes de seguridad confían en que sus sistemas IAM puedan gestionar las identidades de los agentes. El otro 82% se escapa acceso de agente a flujos de autenticación humana que no fueron diseñados para llamadores autónomos.
La autenticación humana supone que una persona lee una pantalla de consentimiento de OAuth, ingresa una contraseña y responde a un mensaje de MFA. Los agentes no hacen nada de eso. Necesitan un modelo de autenticación diferente con tres propiedades.
1. Tokens con alcance y permisos explícitos
Cada token de agente declara qué puntos finales puede llamar y qué acciones puede realizar. La API hace cumplir esas alcances en cada solicitud. Sin alcance, sin acceso.
2. Límites de la tasa por identidad
Un usuario humano envía algunas solicitudes por minuto. Un agente envía cientos o miles. Límites de tarifas por agente La identidad evita que un agente mate de hambre a otros y limita el radio de explosión si un agente se vuelve rebelde.
3. Solicite atribución en cada capa
Cada solicitud transporta la identidad del agente desde el proxy perimetral a través de la capa de aplicación hasta la base de datos. registro de consultas. Cuando algo sale mal, se traza el camino completo desde el agente hasta la acción.
Auditar un token de agente con el SDK de Botoi
Combine los puntos finales JWT y de contraseña en una única función de auditoría. Decodifica el token, comprueba su caducidad, verificar la firma y marcar ámbitos demasiado amplios.
import Botoi from "@botoi/sdk";
const botoi = new Botoi({ apiKey: process.env.BOTOI_API_KEY });
async function auditAgentToken(token: string, secret: string) {
// Step 1: Decode to inspect claims
const decoded = await botoi.jwt.decode({ token });
const claims = decoded.data.payload;
console.log("Agent:", claims.sub);
console.log("Scopes:", claims.scopes);
// Step 2: Check expiration
const now = Math.floor(Date.now() / 1000);
const hoursLeft = (claims.exp - now) / 3600;
if (hoursLeft < 0) {
console.error("Token expired", Math.abs(hoursLeft).toFixed(1), "hours ago");
return { valid: false, reason: "expired" };
}
if (hoursLeft > 24) {
console.warn("Token lives longer than 24 hours; rotate sooner");
}
// Step 3: Verify signature
const verified = await botoi.jwt.verify({ token, secret, algorithms: ["HS256"] });
if (!verified.data.valid) {
console.error("Signature verification failed");
return { valid: false, reason: "invalid_signature" };
}
// Step 4: Check scope breadth
const dangerousScopes = claims.scopes.filter(
(s: string) => s === "*" || s === "admin" || s.endsWith(":*")
);
if (dangerousScopes.length > 0) {
console.warn("Overly broad scopes:", dangerousScopes);
}
return { valid: true, agent: claims.sub, scopes: claims.scopes, hoursLeft };
}
const result = await auditAgentToken(process.env.AGENT_TOKEN!, process.env.SIGNING_SECRET!);
console.log(result);
Ejecute esta comprobación como paso previo a la implementación. Si el token ha caducado, tiene un TTL de más de 24 horas, falla la firma verificación, o lleva alcances comodín, bloquea la implementación.
Una lista de verificación para la autenticación de API del agente de IA
| Controlar | Que verificar | Punto final de Botoi |
|---|---|---|
| Identidad única por agente | No hay dos agentes que compartan una clave o token sub afirmar |
/v1/jwt/decode |
| Alcances mínimos | Los alcances de los tokens coinciden con el propósito del agente; sin comodines | /v1/jwt/decode |
| Caducidad del token | TTL inferior a 24 horas; mecanismo de actualización en su lugar | /v1/jwt/decode |
| Solicitar firma | La carga útil HMAC coincide en el lado del servidor | /v1/hash/hmac |
| Rotación secreta | Los secretos rotan durante la implementación o según un cronograma | /v1/password/generate |
| Solicitar registro | Cada solicitud de agente se registra con hash de identidad y carga útil. | /v1/hash |
Los datos de la encuesta son claros: los equipos implementan agentes de IA más rápido de lo que los protegen. El 80,9% tiene agentes en funcionamiento, pero menos de 1 de cada 5 dan a esos agentes su propia identidad. Cada error en esta lista, claves compartidas, alcances amplios, credenciales permanentes, tráfico silencioso, autenticación con forma humana, es una puerta trasera que espera al próximo diputado confundido incidente.
Elija un error de esta lista. Arreglalo esta semana. Luego pasa al siguiente.
FAQ
- ¿Deberían los agentes de IA utilizar las mismas claves API que los usuarios humanos?
- No. Los agentes de IA necesitan credenciales dedicadas con permisos específicos, límites de tasa por identidad y vencimiento automático. Una encuesta realizada en 2026 a más de 900 profesionales encontró que solo el 21,9 % de los equipos tratan a los agentes como entidades independientes portadoras de identidad, y el 44 % todavía comparte claves API estáticas entre los agentes.
- ¿Cómo se rotan las claves API para los agentes de IA sin tiempo de inactividad?
- Genere una nueva credencial, impleméntela en el agente, verifique que funcione y luego revoque la clave anterior. Utilice tokens de corta duración (de 1 a 24 horas) con actualización automática para que la rotación se realice sin pasos manuales. El punto final Botoi /v1/password/generate crea secretos de alta entropía y /v1/jwt/decode inspecciona el nuevo token antes de cortarlo.
- ¿Cuál es el Top 10 de OWASP para aplicaciones agentes?
- Lanzado en 2026, el OWASP Top 10 para aplicaciones agentes enumera los riesgos de seguridad más comunes cuando los agentes de IA interactúan con API y herramientas. El uso indebido de herramientas y la escalada de privilegios encabezan la lista con 520 incidentes reportados. Otros riesgos incluyen un control de acceso insuficiente, pistas de auditoría faltantes y ataques de diputados confusos.
- ¿Cómo se monitorea el tráfico API de máquina a máquina desde agentes de IA?
- Registre cada solicitud con la identidad del agente, la marca de tiempo, el punto final y el hash de carga útil. Utilice registros JSON estructurados y envíelos a un sistema centralizado (Datadog, Grafana o CloudWatch). Un estudio de 2026 encontró que el 48,9% de las organizaciones no pueden monitorear el tráfico de agentes de IA en absoluto, lo que las deja ciegas ante agentes comprometidos o que se portan mal.
- ¿Qué es un ataque confuso de un diputado en el contexto de agentes de IA?
- Un ataque adjunto confuso ocurre cuando un agente de IA utiliza sus credenciales legítimas para realizar acciones que su operador no pretendía. El agente pasa todas las comprobaciones de identidad porque posee tokens válidos, pero actúa siguiendo instrucciones de una fuente que no es de confianza. Meta documentó este patrón en un incidente con un agente deshonesto en el que el agente accedió a recursos más allá de su alcance previsto.
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.