Listas de verificação de segurança, perspectivas de revisão de código e modelos de políticas para equipes de desenvolvimento.
Itens a serem verificados antes de desenvolver um novo endpoint de API.
Perspectivas de segurança a serem verificadas durante as revisões de código da API.
| Verificar item | Importância | Explicação |
|---|---|---|
| O middleware de autenticação é aplicado a todos os pontos de extremidade | Necessário | Garantir que nenhuma verificação de autenticação esteja faltando, exceto para APIs públicas |
| Existem verificações de autorização em nível de objeto | Necessário | Verificar se os recursos solicitados pertencem ao usuário solicitante |
| As funções administrativas têm verificação de função | Necessário | Garantir que usuários comuns não possam chamar APIs de administração |
| O algoritmo é especificado durante a verificação do JWT | Necessário | Prevenção de ataques alg: nenhum |
| A expiração do token está configurada corretamente | Recomendado | Token de acesso: dentro de 15 minutos |
| Verificar item | Importância | Explicação |
|---|---|---|
| O corpo da solicitação tem validação de esquema | Necessário | Validação de tipo, comprimento e formato |
| As consultas SQL são parametrizadas | Necessário | Garantir que as consultas não sejam criadas com concatenação de strings |
| Existe validação de formato de parâmetro de caminho | Necessário | Verificar o formato esperado, como UUID |
| Os parâmetros de paginação têm limites superiores | Recomendado | Impedir solicitações excessivas como limit=999999 |
| Os uploads de arquivos têm restrições de tipo e tamanho | Recomendado | Validação de Content-Type e tamanho do arquivo |
| Verificar item | Importância | Explicação |
|---|---|---|
| As respostas não contêm campos desnecessários | Necessário | Evite o vazamento de password_hash, IDs internas etc. |
| As respostas de erro não contêm rastreamentos de pilha | Necessário | Não exponha informações internas na produção |
| Os cabeçalhos de segurança são configurados | Recomendado | X-Content-Type-Options, HSTS, etc. |
| Content-Type está definido corretamente | Recomendado | Especificar explicitamente application/json |
| Verificar item | Importância | Explicação |
|---|---|---|
| A limitação de taxa é aplicada | Necessário | Especialmente para pontos de extremidade de autenticação e pagamento |
| Registros apropriados estão sendo registrados | Recomendado | Rastreável: quem fez o quê e quando |
| Os segredos não são codificados por hardcoding | Necessário | Use variáveis de ambiente ou gerenciadores secretos |
| As configurações de CORS são apropriadas | Recomendado | Evite usar curingas |
| As dependências não têm vulnerabilidades conhecidas | Recomendado | Verificar os resultados da auditoria do npm / Snyk |
Modelos para políticas básicas no desenvolvimento interno de APIs. Personalize para se adequar ao seu projeto.
Métodos de autenticação - APIs voltadas para o usuário: OAuth 2.0 (código de autorização + PKCE) - APIs de servidor para servidor: OAuth 2.0 (Credenciais do cliente) ou mTLS - APIs de integração externa: Chave de API + assinatura HMAC Gerenciamento de tokens - Expiração do token de acesso: 15 minutos - Expiração do token de atualização: 7 dias (rotação necessária) - Armazenamento de tokens: HttpOnly + Secure + SameSite Cookie Política de senha - Mínimo de 12 caracteres, pelo menos uma letra maiúscula, uma minúscula, um número e um símbolo - Hash com bcrypt (fator de custo 12 ou superior) - Proteção contra ataques à lista de senhas (integração da API Have I Been Pwned)
■ Controle de versão - Gerenciamento de versões via caminho de URL: /api/v1/resources - Período mínimo de suporte de 6 meses para versões antigas - Notificação de depreciação por meio do cabeçalho Deprecation Limitação de taxa (valores padrão) - APIs gerais: 100 solicitações/15 min - APIs de autenticação: 5 solicitações/15 min - APIs públicas: 30 solicitações/min - Sempre retorna cabeçalhos RateLimit-* ■ Respostas - Content-Type: application/json (fixo) - Respostas de erro no formato RFC 7807 (Detalhes do problema) - Nunca retorne rastreamentos de pilha em produção - Paginação: padrão de 20 itens, máximo de 100 itens
Campos de registro obrigatórios - Registro de data e hora (ISO 8601, UTC) - ID da solicitação (UUID para rastreabilidade) - ID do usuário / ID do cliente da API - Método HTTP + ponto final - Código de status - IP de origem - Tempo de resposta Campos de registro proibidos (dados confidenciais) - Senhas / Tokens / Chaves de API - Números de cartão de crédito - Exibição completa de PII (mascaramento necessário) Alertas de monitoramento - Falhas de autenticação: Alerta a 5+/min - Erros 403: Alerta a 10+/min - 500 erros: Alerta imediato em 1 ocorrência - Limite de taxa excedido: Análise de padrão
Detectar incidentes por meio de alertas de monitoramento, relatórios de usuários ou notificações externas. Determinar a gravidade por meio da triagem inicial.
0-30 minutosEvitar o aumento de danos. Invalide as chaves de API, suspenda temporariamente os pontos de extremidade afetados e identifique o escopo do impacto.
30 min - 2 horasCorrigir as vulnerabilidades, aplicar patches e restaurar os serviços. Notifique os usuários afetados.
2 a 24 horasConduzir o post-mortem. Realizar análise de causa raiz, desenvolver medidas de prevenção de recorrência e documentar as descobertas.
1-5 dias úteisAdditional checklist items for systems integrating AI models and LLM-powered features.
Related: LLM06: Excessive Agency, LLM02: Insecure Output Handling
Related: ASI01: Excessive Agency, ASI03: Insecure Tool/Function Calling, ASI09: Inadequate Sandboxing
Related: LLM03: Training Data Poisoning, ML02: Data Poisoning Attack, ML06: AI Supply Chain Attacks
Security check items specific to code that integrates LLMs, AI agents, and ML models.
| Verificar item | Importância | Explicação |
|---|---|---|
| System prompts are not exposed in client-side code or API responses | Necessário | Prompt leakage enables targeted prompt injection attacks |
| LLM outputs are validated before rendering (HTML/JS/SQL) | Necessário | LLM-generated content may contain XSS payloads or injection vectors |
| User input and system instructions are clearly separated in prompts | Necessário | Prevents direct prompt injection by maintaining instruction-data boundary |
| Tool/function call permissions are scoped per user role | Necessário | Prevent privilege escalation through agent tool access |
| Token count limits are enforced per request and per session | Recomendado | Prevents cost explosion and denial-of-wallet attacks |
| RAG retrieval results are sanitized before insertion into prompts | Necessário | Retrieved documents may contain indirect prompt injection payloads |
| Agent actions and tool calls are logged with full audit trail | Recomendado | Essential for incident investigation and compliance in AI systems |
Policy templates for organizations deploying AI models and LLM-powered applications.
■ Model Access Tiers - Tier 1 (Restricted): GPT-4 class / fine-tuned models — requires team lead approval - Tier 2 (Standard): GPT-3.5 class / embeddings — available to all developers - Tier 3 (Open): Open-source models (local inference) — no approval required ■ API Key Management for LLM Providers - One API key per service/environment (never share across projects) - Monthly spend alerts at 50%, 80%, 100% of budget - Hard spending caps enforced at the provider level - Key rotation: every 90 days or immediately upon team member departure ■ Data Sent to External Models - NEVER send: PII, credentials, internal IP, source code, customer data - ALLOWED with review: anonymized logs, public documentation, synthetic data - All prompts to external APIs must be logged (excluding PII)
■ Training Data Requirements - All training data must have documented provenance and licensing - PII must be removed or anonymized before use in training/fine-tuning - Data poisoning checks: validate data integrity with hash verification - Retain training data snapshots for reproducibility and audit ■ RAG (Retrieval-Augmented Generation) Data - Document ingestion pipeline must sanitize content (strip scripts, injections) - Access control on vector store must mirror source document permissions - Embedding models must be versioned and pinned ■ Model Output Data - LLM outputs must not be trusted as authoritative — always verify facts - Generated code must pass the same security review as human-written code - Outputs containing PII must be flagged and redacted before storage
■ Severity Levels for AI-Specific Incidents - P1 (Critical): Prompt injection leading to data exfiltration or unauthorized actions - P1 (Critical): Model serving compromised or returning manipulated outputs - P2 (High): Training data poisoning detected, jailbreak bypass discovered - P2 (High): Agent performing unintended actions outside approved scope - P3 (Medium): Model drift causing degraded accuracy below threshold - P4 (Low): Cost overrun due to excessive token usage ■ Response Procedures - P1: Immediately disable affected model endpoint, notify security team - P2: Quarantine affected model version, roll back to last known good - P3: Trigger retraining pipeline, increase monitoring frequency - P4: Adjust rate limits and budget caps, review usage patterns ■ Post-Incident Requirements - Root cause analysis within 48 hours for P1/P2 - Update prompt injection test suite with new attack vectors - Review and update guardrails configuration
Códigos de status HTTP relacionados à segurança usados no design da API.
| Código | Significado | Caso de uso |
|---|---|---|
| 400 | Bad Request | Erro de validação de entrada |
| 401 | Unauthorized | A autenticação é necessária ou o token é inválido |
| 403 | Forbidden | Autenticado, mas com permissões insuficientes |
| 404 | Not Found | O recurso não existe (também pode ser usado em vez de 403) |
| 405 | Method Not Allowed | Método HTTP não permitido |
| 413 | Payload Too Large | Tamanho do corpo da solicitação excedido |
| 422 | Unprocessable Entity | A sintaxe está correta, mas há um erro de semântica |
| 429 | Too Many Requests | Limite de taxa excedido |
| 500 | Internal Server Error | Erro interno do servidor (ocultar detalhes) |