Agentes de IA estão chamando sua API: 5 erros de autenticação que criam backdoors
80% das equipes administram agentes de IA em produção, mas apenas 22% os tratam como identidades independentes. Cinco erros de autenticação que transformam sua API em uma porta aberta.
Uma pesquisa de 2026 com mais de 900 profissionais descobriu que 80,9% das equipes de engenharia executam agentes de IA em testes ou produção. A mesma pesquisa constatou que apenas 21,9% tratam esses agentes como entidades independentes portadoras de identidade. O resto compartilha credenciais, ignorar trilhas de auditoria e conceder acesso geral à API para código executado sem supervisão.
Essa lacuna é um problema de segurança. OWASP lançou seu Top 10 para aplicativos Agentic em 2026, e uso indevido de ferramentas e O Privilege Escalation está no topo da lista com 520 incidentes relatados. Meta documentou um agente de IA desonesto que passou em todos verificação de identidade porque continha credenciais válidas de um cenário confuso de deputado. 48,9% das organizações não conseguem veja até mesmo o que seus agentes estão fazendo com o acesso à API.
Esta postagem aborda os cinco erros de autenticação que transformam sua API em uma porta aberta para agentes de IA e como fechar cada um deles. um com código funcional.
Erro 1: compartilhar uma única chave de API entre todos os agentes
44% das equipes usam chaves de API estáticas para agentes de IA. Quando vários agentes compartilham uma chave, você perde três coisas: auditoria trilhas (qual agente fez esta solicitação?), revogação granular (revogar um agente mata todos eles) e limitação de taxa por agente (um agente em fuga esgota a cota de 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.
A solução: emitir uma credencial exclusiva por agente. Cada chave é mapeada para uma identidade de agente específica, um escopo definido de endpoints e seu próprio limite de taxa. Quando você precisa revogar o Agente C, os agentes A e B continuam em execução.
# 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"}'
Use o X-Agent-ID cabeçalho ao lado da chave de API para que seus registros sempre atribuam solicitações a um
agente específico. Decodifique o token para verificar se suas declarações correspondem ao agente que está fazendo a chamada.
# 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"
}
}
}
O confuso problema do deputado: O incidente do agente desonesto de Meta aconteceu porque o agente deteve credenciais válidas que concederam acesso além do escopo pretendido. O agente passou em todas as verificações de identidade. O credenciais eram legítimas. O problema é que ninguém os abordou de acordo com o propósito do agente.
Erro 2: conceder acesso completo à API quando um agente precisa de um endpoint
35% das organizações dependem de contas de serviços compartilhados para agentes de IA. Uma conta de serviço com acesso total à API significa que seu agente de resumo de ingressos também pode processar reembolsos, exportar informações de identificação pessoal do cliente e excluir registros. Esse é um princípio de violação de privilégio mínimo.
Defina o escopo de cada token de agente para os endpoints e ações mínimos necessários. Um agente de processamento de reembolso obtém
refunds:write e orders:read. Nada mais.
// 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 implantar um agente, verifique se seu token carrega os escopos corretos e não expirou. Decodifique o
token com o endpoint Botoi JWT para inspecionar as declarações e o is_expired bandeira.
# 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
}
}
| Abordagem | Controle de escopo | Revogação | Trilha de auditoria | Risco |
|---|---|---|---|---|
| Conta de serviço compartilhada | Nenhum | Quebra todos os agentes | Sem atribuição | Alta |
| Chave de API estática por agente | Apenas no nível da chave | Por agente | Por chave | Média |
| JWT com escopo definido por agente | Ponto final + ação | Por agente + expiração | Reivindicações completas | Baixo |
| Troca de tokens OBO | Herdado + estreitado | Por sessão | Cadeia completa | Mais baixo |
Novas soluções IAM para agentes de IA oferecem suporte à troca de tokens On-Behalf-Of (OBO). O agente recebe um token derivado da sessão do usuário original, com escopo automático para as permissões concedidas pelo usuário. Isto abordagem cria uma cadeia de autorização completa do usuário ao agente e à API.
Erro 3: nenhuma expiração nas credenciais do agente
43% das equipes usam autenticação de nome de usuário/senha para agentes de IA. Essas credenciais não expiram. API estática as chaves também não expiram, a menos que você inclua a expiração em seu sistema. Uma credencial de agente que dura para sempre é uma credencial que pode ser roubada, vazada em logs ou comprometida em um repositório e explorada meses depois.
Defina um TTL máximo de 1 a 24 horas para tokens de agente. Gere uma nova credencial em cada implantação ou em um cronograma. Use o gerador de senha Botoi para criar segredos de alta entropia para assinatura 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"
}
}
Adicionar assinatura de solicitação HMAC
Além da autenticação baseada em token, assine cada carga de solicitação com HMAC-SHA256. Sua API verifica a assinatura antes processando a solicitação. Isso prova que a carga útil não foi adulterada em trânsito e vincula cada solicitação a um segredo do 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"
}
}
Seu servidor API recalcula o HMAC usando sua cópia armazenada do segredo do agente. Se os hashes corresponderem, o solicitação é autêntica. Se não o fizerem, rejeite-o.
Automatize a rotação secreta
A rotação manual não é dimensionada quando você executa dezenas de agentes. Construa um script de rotação que gere um novo secret, implanta-o, verifica a conectividade e depois revoga o antigo.
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();
Erro 4: ignorar o registro de solicitações para chamadas máquina a máquina
48,9% das organizações não percebem o tráfego máquina a máquina. Eles registram chamadas de API humanas, mas isentam comunicação serviço a serviço de sua pilha de observabilidade. Os agentes de IA caem nesse ponto cego.
Quando um agente se comporta mal, envia uma enxurrada de solicitações, acessa endpoints fora de seu escopo ou recebe comprometido, você precisa responder a três perguntas: qual agente, quando e o que ele tocou? Sem solicitação registrando, você não pode responder a nenhuma delas.
// 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 a identidade do agente, o endpoint, o método HTTP, o código de status e a duração de cada solicitação. Enviar estruturado registra em sua plataforma de observabilidade. Defina alertas para anomalias: picos repentinos no volume de solicitações, solicitações para endpoints fora do escopo do agente ou taxas de erro elevadas.
Acompanhe o que o agente envia, não o que ele diz que envia. Registrar o hash da carga útil da solicitação
(usando /v1/hash) junto com os metadados. Isso fornece evidências de adulteração sem
armazenando cargas confidenciais em seu sistema de log.
Erro 5: tratar a autenticação do agente da mesma forma que a autenticação humana
Apenas 18% dos líderes de segurança estão confiantes de que seus sistemas IAM podem gerenciar identidades de agentes. Os outros 82% do parafuso acesso do agente a fluxos de autenticação humana que não foram projetados para chamadores autônomos.
A autenticação humana pressupõe que uma pessoa lê uma tela de consentimento do OAuth, insere uma senha e responde a um prompt de MFA. Agentes não fazem nada disso. Eles precisam de um modelo de autenticação diferente com três propriedades.
1. Tokens com escopo definido e permissões explícitas
Cada token de agente declara quais endpoints ele pode chamar e quais ações pode executar. A API impõe aqueles escopos em cada solicitação. Sem escopo, sem acesso.
2. Limites de taxa por identidade
Um usuário humano envia algumas solicitações por minuto. Um agente envia centenas ou milhares. Limites de taxas por agente identidade evita que um agente deixe outros passarem fome e limita o raio de explosão se um agente se tornar desonesto.
3. Solicite atribuição em todas as camadas
Cada solicitação transporta a identidade do agente do proxy de borda através da camada de aplicação até o banco de dados registro de consulta. Quando algo dá errado, você traça todo o caminho desde o agente até a ação.
Audite um token de agente com o Botoi SDK
Combine os endpoints JWT e senha em uma única função de auditoria. Decodifique o token, verifique sua expiração, verifique a assinatura e sinalize escopos excessivamente amplos.
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);
Execute esta verificação como uma etapa de pré-implantação. Se o token expirou, tem um TTL superior a 24 horas, falha na assinatura verificação ou carrega escopos curinga, bloqueia a implantação.
Uma lista de verificação para autenticação de API do agente de IA
| Verificar | O que verificar | Ponto final do Botoi |
|---|---|---|
| Identidade única por agente | Não há dois agentes que compartilhem uma chave ou token sub alegar |
/v1/jwt/decode |
| Escopos mínimos | Os escopos de token correspondem ao propósito do agente; sem curingas | /v1/jwt/decode |
| Expiração do token | TTL inferior a 24 horas; mecanismo de atualização em vigor | /v1/jwt/decode |
| Solicitar assinatura | A carga útil HMAC corresponde no lado do servidor | /v1/hash/hmac |
| Rotação secreta | Os segredos são alternados na implantação ou de acordo com uma programação | /v1/password/generate |
| Solicitar registro | Cada solicitação do agente é registrada com hash de identidade e carga útil | /v1/hash |
Os dados da pesquisa são claros: as equipes implantam agentes de IA mais rapidamente do que os protegem. 80,9% têm agentes em execução, mas menos de 1 em cada 5 dá a esses agentes a sua própria identidade. Cada erro nesta lista, chaves compartilhadas, escopos amplos, credenciais permanentes, tráfego silencioso, autenticação em forma humana, é uma porta dos fundos esperando pelo próximo deputado confuso incidente.
Escolha um erro desta lista. Corrija isso esta semana. Em seguida, passe para o próximo.
FAQ
- Os agentes de IA devem usar as mesmas chaves de API que os usuários humanos?
- Não. Os agentes de IA precisam de credenciais dedicadas com permissões com escopo definido, limites de taxa por identidade e expiração automática. Uma pesquisa de 2026 com mais de 900 profissionais descobriu que apenas 21,9% das equipes tratam os agentes como entidades independentes portadoras de identidade e 44% ainda compartilham chaves de API estáticas entre os agentes.
- Como você alterna chaves de API para agentes de IA sem tempo de inatividade?
- Gere uma nova credencial, implante-a no agente, verifique se funciona e revogue a chave antiga. Use tokens de curta duração (1 a 24 horas) com atualização automática para que a rotação ocorra sem etapas manuais. O endpoint Botoi /v1/password/generate cria segredos de alta entropia e /v1/jwt/decode inspeciona o novo token antes de fazer o corte.
- Qual é o Top 10 do OWASP para aplicações Agentic?
- Lançado em 2026, o OWASP Top 10 for Agentic Applications lista os riscos de segurança mais comuns quando os agentes de IA interagem com APIs e ferramentas. O uso indevido de ferramentas e o escalonamento de privilégios estão no topo da lista com 520 incidentes relatados. Outros riscos incluem controlo de acesso insuficiente, falta de pistas de auditoria e ataques confusos de deputados.
- Como você monitora o tráfego de API máquina a máquina de agentes de IA?
- Registre cada solicitação com a identidade do agente, carimbo de data/hora, endpoint e hash de carga útil. Use logs JSON estruturados e envie-os para um sistema centralizado (Datadog, Grafana ou CloudWatch). Um estudo de 2026 descobriu que 48,9% das organizações não conseguem monitorar o tráfego de agentes de IA, deixando-as cegas para agentes comprometidos ou que se comportam mal.
- O que é um ataque confuso de deputado no contexto de agentes de IA?
- Um ataque delegado confuso acontece quando um agente de IA usa suas credenciais legítimas para realizar ações que seu operador não pretendia. O agente passa em todas as verificações de identidade porque possui tokens válidos, mas age de acordo com instruções de uma fonte não confiável. Meta documentou esse padrão em um incidente de agente não autorizado, onde o agente acessou recursos além do escopo pretendido.
Comece a construir com botoi
150+ endpoints de API para consultas, processamento de texto, geração de imagens e utilitários para desenvolvedores. Plano gratuito, sem cartão de crédito.