Pular para o conteúdo
Skillpedia
Agentes35 mil · #5710

detecting-shadow-api-endpoints

Faz seu agente descobrir e listar pontos de acesso de API que não estão documentados. Isso ajuda a identificar e proteger APIs ocultas que podem ser um risco de segurança.

O que ela faz

Esta ferramenta encontra pontos de acesso de API (APIs) que não estão documentados ou sendo monitorados pela sua organização. Eles podem ser um risco de segurança porque não são conhecidos.

Quando usar

  • ✓Para verificar se existem APIs escondidas que podem ser um risco.
  • ✓Ao investigar um incidente de segurança para ver se APIs desconhecidas foram usadas.
  • ✓Para garantir que todas as APIs em uso estejam documentadas e seguras.

Exemplo do que pedir para a IA

“Procure por APIs não documentadas que possam estar expostas.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/detecting-shadow-api-endpoints/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/detecting-shadow-api-endpoints/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela compara o tráfego real de rede com a lista de APIs conhecidas e documentadas. Qualquer tráfego que não corresponda a uma API documentada é sinalizado como 'shadow API'.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill detecting-shadow-api-endpoints

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/detecting-shadow-api-endpoints/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Detecção de Endpoints de API Sombra

Visão Geral

APIs Sombra são endpoints de API que operam dentro do ambiente de uma organização sem serem rastreados, documentados ou protegidos. Elas surgem de ciclos de desenvolvimento rápidos, ambientes de teste esquecidos, versões de API descontinuadas que continuam em execução, integrações de terceiros ou projetos paralelos de desenvolvedores implantados sem governança. As APIs Sombra contornam os controles de autenticação e monitoramento, criando pontos de entrada ocultos para atacantes. Estudos mostram que até 30% dos endpoints de API em grandes organizações são indocumentados, tornando a detecção de APIs Sombra um componente crítico do gerenciamento da postura de segurança de API.

Quando Usar

  • Ao investigar incidentes de segurança que exigem a detecção de endpoints de API sombra.
  • Ao construir regras de detecção ou consultas de caça a ameaças para este domínio.
  • Quando analistas de SOC precisam de procedimentos estruturados para este tipo de análise.
  • Ao validar a cobertura de monitoramento de segurança para técnicas de ataque relacionadas.

Pré-requisitos

  • Gateway de API ou proxy reverso com registro de tráfego (Kong, AWS API Gateway, Envoy).
  • Capacidade de captura de tráfego de rede (broker de pacotes, espelhamento de porta).
  • Acesso a repositórios de código-fonte e configurações de pipeline CI/CD.
  • Acesso ao provedor de nuvem para escaneamento de configuração (AWS, GCP, Azure).
  • Inventário de documentação de API (especificações OpenAPI, documentos Swagger).
  • Python 3.8+ para ferramentas de descoberta personalizadas.

Métodos de Detecção

1. Análise e Comparação de Tráfego

Compare o tráfego de API ao vivo com as especificações OpenAPI documentadas para identificar endpoints indocumentados:

#!/usr/bin/env python3
"""Detector de Endpoints de API Sombra

Compara padrões de tráfego de API observados com especificações
OpenAPI documentadas para identificar endpoints indocumentados (sombra).
"""

import json
import re
import yaml
import sys
from collections import defaultdict
from datetime import datetime
from typing import Dict, List, Set, Tuple, Optional
from dataclasses import dataclass, field

@dataclass
class DiscoveredEndpoint:
    method: str
    path_pattern: str
    first_seen: str
    last_seen: str
    request_count: int
    source_ips: Set[str] = field(default_factory=set)
    status_codes: Set[int] = field(default_factory=set)
    has_auth_header: bool = False
    documented: bool = False

class ShadowAPIDetector:
    # Padrões comuns para segmentos de caminho parametrizados
    PARAM_PATTERNS = [
        (re.compile(r'/\d+'), '/{id}'),
        (re.compile(r'/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'), '/{uuid}'),
        (re.compile(r'/[a-zA-Z0-9]{20,40}'), '/{token}'),
    ]

    def __init__(self):
        self.documented_endpoints: Set[Tuple[str, str]] = set()
        self.discovered_endpoints: Dict[Tuple[str, str], DiscoveredEndpoint] = {}

    def load_openapi_spec(self, spec_path: str):
        """Carrega endpoints documentados da especificação OpenAPI."""
        with open(spec_path, 'r') as f:
            if spec_path.endswith('.json'):
                spec = json.load(f)
            else:
                spec = yaml.safe_load(f)

        paths = spec.get('paths', {})
        for path, methods in paths.items():
            # Normaliza parâmetros de caminho OpenAPI
            normalized_path = re.sub(r'\{[^}]+\}', '{id}', path)
            for method in methods:
                if method.upper() in ('GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'):
                    self.documented_endpoints.add((method.upper(), normalized_path))

        print(f"Carregados {len(self.documented_endpoints)} endpoints documentados de {spec_path}")

    def normalize_path(self, path: str) -> str:
        """Normaliza um caminho observado substituindo segmentos dinâmicos por placeholders."""
        # Remove a string de consulta
        path = path.split('?')[0]

        for pattern, replacement in self.PARAM_PATTERNS:
            path = pattern.sub(replacement, path)

        return path

    def process_access_log(self, log_file: str, log_format: str = "common"):
        """Processa logs de acesso de API para descobrir endpoints."""
        patterns = {
            "common": re.compile(
                r'(?P<ip>[\d.]+)\s+\S+\s+\S+\s+\[(?P<time>[^\]]+)\]\s+'
                r'"(?P<method>\w+)\s+(?P<path>\S+)\s+\S+"\s+(?P<status>\d+)'
            ),
            "json": None  # Lida com logs JSON separadamente
        }

        with open(log_file, 'r') as f:
            for line in f:
                if log_format == "json":
                    try:
                        entry = json.loads(line)

…
Perguntas frequentes

O que é uma 'shadow API'?

É um ponto de acesso de API que existe e está em uso, mas não está registrado, documentado ou sendo monitorado pela equipe de segurança.

Por que as 'shadow APIs' são um problema?

Elas criam brechas de segurança desconhecidas, pois não têm as proteções e o monitoramento adequados, podendo ser usadas por atacantes.

Quais informações são necessárias para usar esta ferramenta?

É preciso ter acesso aos logs de tráfego de rede (de gateways de API), configurações de nuvem e repositórios de código, além de uma lista das APIs documentadas.

Detalhes

Descrição original do autor

Discover and inventory shadow API endpoints that operate outside documented OpenAPI/Swagger specs, using traffic analysis against API gateways (Kong, AWS API Gateway, Envoy), cloud configuration scanning, and source code repository mining for undocumented routes. Use when assessing API attack surface, auditing for forgotten test environments or deprecated API versions still running, or building an

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#5710
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas