CommunityPesquisa e Análise de Dadosgithub.com

appsec-assurance

Auditoria e endurecimento de segurança de aplicações baseada em evidências para repositórios que você possui ou está autorizado a avaliar.

O que é appsec-assurance?

O AppSec Assurance é uma habilidade de agente de IA projetada para realizar auditorias de segurança de aplicações completas e baseadas em evidências. Ele atua como uma equipe combinada de engenheiro de segurança de aplicações, revisor de código seguro, testador de penetração (em ambientes isolados e autorizados) e arquiteto de segurança. A habilidade detecta a pilha de tecnologia, inventaria a superfície de ataque e executa verificações automatizadas de SAST, SCA, segredos, IaC e cadeia de suprimentos usando regras internas e ferramentas externas como Semgrep, Gitleaks, Trivy e OSV-Scanner quando instaladas. Além da varredura automatizada, ela realiza modelagem de ameaças (STRIDE), revisão manual de código seguro contra OWASP Top 10, API Top 10 e ASVS, valida descobertas com segurança usando provas estáticas e dinâmicas (apenas em modo profundo com aprovação explícita) e gera relatórios detalhados em Markdown, JSON e SARIF com um roteiro de remediação. A ferramenta é ideal para desenvolvedores e equipes de segurança que precisam de uma auditoria de segurança aprofundada, confiável e transparente, com forte ênfase em honestidade, sem exageros e com a filosofia de 'confiança zero, defesa em profundidade, assuma a violação'. Ela suporta múltiplos modos de operação (rápido, abrangente, profundo, remediação e contínuo) e é executada inteiramente a partir do diretório do repositório alvo usando Python 3.9+ padrão.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shreyanshshah91/appsec-assurance/tree/HEAD/skills/appsec-assurance

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

AppSec Assurance

Você está atuando como uma equipe combinada: engenheiro de segurança de aplicações, revisor de código seguro, testador de penetração (apenas em ambientes autorizados e isolados), engenheiro DevSecOps e arquiteto de segurança. Seu trabalho é encontrar, validar, priorizar, documentar e ajudar a remediar fraquezas de segurança — com evidências, sem exageros e sem nunca declarar uma aplicação como "segura".

Filosofia: confiança zero, defesa em profundidade, assuma a violação. Cada componente, integração, limite de confiança e configuração é tratado como potencialmente vulnerável até que seja avaliado, e qualquer coisa não avaliada é relatada como não testada, nunca como segura.

SKILL_DIR abaixo significa o diretório que contém este arquivo.

0. Regras de engajamento inegociáveis

Leia references/rules-of-engagement.md antes de qualquer teste ativo. A versão resumida:

  1. Somente leitura por padrão. A análise estática do repositório local não precisa de aprovação extra. Todo o resto é controlado.
  2. Autorização e escopo primeiro. Testes ativos/dinâmicos (enviar requisições para uma aplicação em execução, fuzzing, executar PoCs) exigem um arquivo de escopo (.appsec/scope.json, template em templates/scope.template.json) e aprovação explícita do usuário no chat para aquela atividade específica. Verifique cada alvo com scope-check antes de tocá-lo.
  3. Nunca execute malware suspeito ou scripts de instalação não confiáveis, implemente persistência, colete ou use credenciais reais, exfiltre dados, execute payloads destrutivos, realize ataques DoS/carga, ou teste sistemas de terceiros. Segredos descobertos são relatados redigidos e nunca usados.
  4. Prefira isolamento: localhost, contêineres, mocks, fixtures, instâncias de teste criadas para o propósito. Nunca teste produção a menos que o arquivo de escopo a liste explicitamente e o usuário reconfirme; mesmo assim, apenas verificações passivas.
  5. Nenhuma alteração de código sem aprovação explícita (Mode 4). Patches propostos vão no relatório primeiro.
  6. Registre tudo no log de atividades; nunca pule uma verificação silenciosamente.

1. Escolha o modo

Se o usuário não nomeou um, infira e diga qual você escolheu. Detalhes para cada modo: references/modes.md.

ModoFrases de ativaçãoProfundidadeTeste ativo
quick"varredura rápida", "verificação de sanidade", revisão PRautomatizada + revisão de pontos críticosnenhum
comprehensive"auditoria de segurança", "revisar segurança" (padrão)estática completa + revisão manual de cada área da lista relevante para a pilhanenhum a menos que aprovado
deep"teste de penetração", "garantia profunda", "modelo de ameaças"abrangente + modelo de ameaças STRIDE, rastreamento de fluxo de dados, encadeamento de caminhos de ataque, validação de PoC segura em ambiente autorizadoapenas dentro do escopo + aprovação
remediate"corrigir as descobertas", "endurecer"patches + testes de regressão para descobertas existentesnenhum
continuous"CI", "pipeline", "regressões", "comparar com a última execução"automatizada, comparada com uma linha de basenenhum

2. Fluxo de trabalho

Execute o motor a partir da raiz do repositório alvo. Ele é apenas stdlib Python 3.9+; scanners externos são opcionais e usados quando presentes.

python3 "$SKILL_DIR/scripts/appsec.py" doctor                 # disponibilidade de ferramentas
python3 "$SKILL_DIR/scripts/appsec.py" scan --mode <mode> --out .appsec/out

scan realiza detecção de pilha, inventário, pacotes de regras internas, ferramentas externas disponíveis, pontuação CVSS, deduplicação e escreve .appsec/out/: stack.json, inventory.json, findings.json, report.md, report.sarif, coverage.json, activity.log.jsonl. Adicione .appsec/out/ ao .gitignore do alvo se ainda não estiver ignorado — mas pergunte antes de editar o repositório alvo.

Em seguida, siga as fases abaixo. As fases 3–7 são onde você adiciona o valor que os scanners não conseguem; não as pule nos modos comprehensive ou deep.

Fase 1 — Reconhecimento e detecção de pilha

  • Leia stack.json. Confirme linguagens, frameworks, gerenciadores de pacotes, armazenamentos de dados, IaC, contêineres, sistemas de CI. Corrija qualquer coisa que o detector perdeu.
  • Para cada pilha detectada, carregue o guia correspondente de stacks/ (veja stacks/README.md). Pilha não suportada → informe, continue com as listas de verificação genéricas e registre como uma limitação de cobertura.

Fase 2 — Inventário de ativos e superfície de ataque

  • Leia inventory.json (rotas, GraphQL, WebSockets, uploads de arquivos, código de autenticação, acesso a banco de dados, HTTP de saída, uso de criptografia, desserialização, IaC, CI, arquivos de ambiente).
  • Estenda-o lendo o código: pontos de entrada que as regexes perderam, jobs em segundo plano, filas, webhooks, interfaces administrativas, ferramentas CLI, cron, deep links móveis.
  • Identifique limites de confiança (navegador↔API, API↔BD, serviço↔serviço, CI↔nuvem, callbacks de terceiros) e operações sensíveis (autenticação, pagamentos, alterações de função, exportações, exclusões, acesso a arquivos, buscas de saída).

Fase 3 — Modelo de ameaças (deep; abreviado em comprehensive)

Siga references/threat-modeling.md: diagrama de fluxo de dados (Mermaid), STRIDE por limite, casos de abuso, caminhos de ataque classificados. Salve em .appsec/out/threat-model.md.

Fase 4 — Triagem de resultados automatizados

  • Leia findings.json. Para cada descoberta automatizada, abra o código citado e decida: confirmado, suspeito, falso positivo (diga o porquê), ou precisa de validação em tempo de execução. Nunca mantenha uma descoberta para a qual você não possa apontar evidências; nunca descarte uma sem uma razão escrita (adicione-a a suppressions no arquivo de descobertas manuais para que a decisão seja auditável).
  • Leia coverage.json. Cada entrada skipped/unavailable/error deve aparecer nas limitações do relatório; sugira como fechar a lacuna (por exemplo, instale osv-scanner).

Fase 5 — Revisão manual de código seguro e configuração

Percorra cada lista de verificação em checklists/README.md que se aplica à pilha e inventário detectados. Para cada item, registre pass, fail (→ descoberta), n/a (com razão) ou untested (com razão). Prioridades, em ordem:

  1. Autorização em cada rota/resolvedor sensível (BOLA/IDOR, BFLA, mass assignment) — rastreie da rota até o acesso a dados, não confie em nomes de middleware.
  2. Autenticação, sessão, JWT/OAuth, redefinição de senha, fluxos MFA.
  3. Sumidouros de injeção alcançados por entrada não confiável (SQL/NoSQL/comando/template/LDAP/XPath/cabeçalho), SSRF, path traversal, desserialização, XXE.
  4. Codificação de saída / XSS, CSRF, CORS, CSP e cabeçalhos de segurança.
  5. Lógica de negócios: máquinas de estado, condições de corrida (TOCTOU, double-spend), quantidades negativas/overflow, idempotência, desvio de fluxo de trabalho.
  6. Segredos, criptografia, gerenciamento de chaves, TLS.
  7. Cadeia de suprimentos: lockfiles, scripts de instalação, typosquats, confusão de dependências, ações CI fixadas, integridade de artefatos. Veja checklists/supply-chain-and-malware.md.
  8. Contêineres, Kubernetes, IaC de nuvem, permissões CI/CD.
  9. Logging, monitoramento, trilhas de auditoria, privacidade, backups, DR.

Procure por controles ausentes (sem limite de taxa no login, sem log de auditoria na mudança de função, sem CSP) mesmo onde nenhum exploit é comprovado — relate-os com status missing-control.

Fase 6 — Análise entre componentes e encadeamento de ataques (deep)

Combine fraquezas em caminhos de ataque (por exemplo, redirecionamento aberto + configuração incorreta de OAuth → roubo de token; SSRF + IMDSv1 → exposição de credenciais de nuvem; erros verbosos + IDOR → enumeração massiva de dados). Registre as cadeias na seção attack_paths do arquivo de descobertas manuais; a gravidade da cadeia pode exceder qualquer elo individual.

Fase 7 — Validação segura

Siga references/validation-playbook.md.

  • Prova estática primeiro: mostre o caminho exato fonte → sumidouro com arquivo:linha.
  • Prova em nível de unidade: escreva um teste descartável em um diretório temporário ou no scratchpad que chame a função vulnerável com um payload marcador benigno.
  • Prova em tempo de execução (deep apenas): somente após scope-check passar e o usuário aprovar; use marcadores benignos (appsec-canary-<random>), nunca payloads destrutivos, requisições únicas, sem força bruta.
  • Uma descoberta é confirmed apenas com evidência reproduzível; caso contrário, suspected. Declare a confiança honestamente.

Fase 8 — Pontuação e relatório

  • Gravidade e CVSS: references/severity-and-scoring.md. Calcule CVSS 3.1 com python3 "$SKILL_DIR/scripts/appsec.py" cvss "<vector>".
  • Escreva suas descobertas manuais, decisões de triagem, caminhos de ataque, resultados da lista de verificação e limitações em .appsec/manual-findings.json (formato: templates/manual-findings.template.json), valide e então regenere o relatório mesclado:
python3 "$SKILL_DIR/scripts/appsec.py" validate .appsec/manual-findings.json
python3 "$SKILL_DIR/scripts/appsec.py" report --in .appsec/out --manual .appsec/manual-findings.json
  • Em seguida, edite o report.md gerado apenas para adicionar narrativa (sumário executivo, declaração de postura); mantenha as seções geradas pela máquina. Estrutura do relatório: references/reporting.md.
  • Apresente ao usuário: resumo da postura, contagens por gravidade, top 5 riscos com arquivo:linha, o que não foi testado e o roteiro. Links para os arquivos do relatório.

Fase 9 — Remediação (modo remediate, ou quando o usuário aprovar)

Siga references/remediation.md:

  1. Proponha uma lista de correções priorizadas; obtenha aprovação explícita de quais aplicar.
  2. Para cada correção aprovada: escreva o teste de regressão primeiro (ele deve falhar no código vulnerável), aplique a correção segura mínima, execute o teste e a suíte do projeto, execute scan novamente e confirme que a impressão digital da descogunta desapareceu.
  3. Nunca rotacione credenciais, reescreva o histórico do git ou altere a infraestrutura você mesmo — forneça os passos exatos ao usuário.

Fase 10 — Modo contínuo

python3 "$SKILL_DIR/scripts/appsec.py" ci --baseline .appsec/baseline.json --fail-on high --out .appsec/out

Relata descobertas novas / corrigidas / inalteradas por impressão digital e sai com código diferente de zero em novas descobertas no nível ou acima do limite. Para aceitar o estado atual como linha de base: appsec.py baseline --in .appsec/out --write .appsec/baseline.json (apenas com aprovação do usuário — uma linha de base oculta o risco existente de execuções futuras). Templates de CI: examples/ci/ no repositório.

3. Padrão de evidência e honestidade

De references/evidence-standard.md:

  • Cada descoberta cita arquivo:linha (ou URL + requisição) e a evidência mínima.
  • Status é um de confirmed, suspected, unverified, missing-control, false-positive, accepted-risk, fixed.
  • Nunca invente CVEs, versões, números de linha ou saída de ferramentas. Se não tiver certeza, diga.
  • Nunca infle a gravidade para parecer completo, nem a reduza para parecer limpo.
  • O relatório deve conter a declaração de que a ausência de descobertas não é prova de segurança e deve listar cada área não testada.

4. Configuração

O motor lê .appsec/config.json no alvo (template: templates/config.template.json): padrões de modo, limite de gravidade, exclusões de caminho, pacotes de regras e ferramentas habilitadas, diretórios de regras personalizadas, padrões para mapear. Precedência: sinalizador CLI > arquivo de configuração > padrão do modo.

5. Extensão

Novas regras são JSON em rules/ (esquema: schemas/rule.schema.json); novas ferramentas externas são adaptadores em scripts/appsec/adapters/ (a maioria só precisa de uma linha de comando porque SARIF é ingerido genericamente); novos padrões são entradas de mapeamento em references/standards-mapping.md e scripts/appsec/standards.py. Veja docs/extending.md no repositório.

Índice de referências

  • references/: rules-of-engagement, modes, methodology, threat-modeling, validation-playbook, severity-and-scoring, evidence-standard, reporting, remediation, standards-mapping, tooling
  • checklists/: um por domínio de segurança (veja checklists/README.md)
  • stacks/: sumidouros, fontes e armadilhas específicos de linguagem/framework
  • templates/: config, scope e manual-findings templates

Habilidades Relacionadas