Módulo 9 de 10 · 35 min

Automação, integrações e ferramentas para desenvolvedores

Encaminhe achados para correções, tickets e aprovações com o Plexicus Automation, conecte as suas ferramentas de ticketing e webhooks e trabalhe com o Plexicus a partir de scripts, do terminal e da sua IDE.

Ao final deste módulo, você será capaz de

  • Descrever os gatilhos de automação e os tipos de etapa, e acompanhar um fluxo pelas fases Gatilho, Decisão, Ação e Registro
  • Criar, testar com dry run, ativar e versionar um fluxo e, depois, ler o histórico de execuções, os status e as aprovações
  • Conectar o Jira, o ServiceNow e webhooks de saída, criar tickets a partir de achados e aceitar webhooks de entrada assinados
  • Escolher entre um token de API pessoal e o token do Plexalyzer da organização, e fazer chamadas básicas à API REST
  • Entrar no Plexicus TUI pelo terminal e conectar o Plexicus MCP server ao agente da sua IDE

Plexicus Automation: gatilhos, etapas e o modelo de fluxo

O Plexicus Automation funciona ao lado do ciclo Validar → Entender → Remediar do Proof-Driven AppSec. Ele aplica as decisões recorrentes da sua equipe (“corrija isto agora”, “abra um ticket para aquilo”, “pergunte antes ao líder de AppSec”) a cada achado correspondente. Abra-o na barra lateral esquerda principal; a página se chama Automations, e os caminhos deste módulo começam nela, como Automations New automation .

Imagine uma injeção de SQL com severidade Critical no handler de login da sua API de faturamento. Um fluxo pode solicitar um pull request de remediação, aguardar a aprovação do seu líder de AppSec, abrir uma issue no Jira e publicar uma notificação no app. Nenhum merge acontece sozinho; a sua equipe revisa o pull request.

Gatilho → Decisão → Ação → Registro

Todo fluxo tem quatro partes:

  1. Gatilho. Um evento inicia uma execução. Cada fluxo tem exatamente um gatilho.
  2. Decisão. Etapas de condição encaminham a execução por severidade, tipo de achado, repositório ou dados do webhook. Cada etapa também tem um caminho de sucesso e um caminho de erro.
  3. Ação. Etapas de ação solicitam uma remediação, abrem um ticket, notificam pessoas ou chamam um sistema conectado.
  4. Registro. As execuções ficam armazenadas com logs por etapa, as alterações nos fluxos vão para o registro de auditoria (módulo 10) e os tickets ficam vinculados na linha do tempo do achado.

Gatilhos

GatilhoUma execução começa quandoObservações
New findingO Plexicus cria um achadoFiltros opcionais: Severity, Finding type, Repository ID
Finding enrichedO Plexicus adiciona contexto a um achado existenteOs mesmos filtros opcionais
Finding reopenedUm scan detecta de novo um achado depois que ele foi resolvidoÉ executado a cada reabertura, depois que a execução anterior termina
WebhookUma requisição assinada chega à Ingress URL do fluxoAbordado na aula 3
ScheduleUm agendamento cron é disparadoCron de 5 campos mais um fuso horário (UTC por padrão)
ManualAlguém inicia a execução com Run nowAparece como “Manual only” na lista

Para definir o gatilho, selecione o nó Trigger no canvas e edite o painel dele; os gatilhos não são arrastados da paleta. Depois de salvar, reabra o painel do gatilho para conferir se os seus filtros ou o agendamento foram mantidos, e faça um dry run do fluxo antes que um administrador o ative.

Duas regras definem os fluxos de eventos de achado. Primeiro, um fluxo é executado automaticamente no máximo uma vez por achado. A exceção é um fluxo cujo gatilho é Finding reopened: ele é executado a cada reabertura, desde que a execução anterior dele para aquele achado tenha terminado. Um fluxo New finding ou Finding enriched não é executado de novo em uma reabertura; por isso, crie um fluxo Finding reopened separado para agir sobre achados reabertos. Segundo, Deduplicate by fingerprint agrupa os achados que compartilham o mesmo fingerprint de segredo na execução que já está em andamento, de modo que uma chave de API vazada leve a uma única rotação, e não a cinco.

Etapas

EtapaO que fazConfigurações obrigatórias
RemediationSolicita uma remediação por IA, como um pull request para revisão (módulo 7)Tipo de remediação
TicketAbre um ticket em um provedor como o JiraProvedor de ticket (chave do projeto opcional)
NotifyCria uma notificação no appCanal de notificação, usado como título; mensagem opcional
Wait for approvalPausa a execução até que alguém aprove ou rejeiteFunção de aprovador e tempo limite opcionais, definidos em segundos
Condition (if)Segue a aresta “yes” quando a condição é verdadeira; caso contrário, segue a aresta “no”Condição
Condition (switch)Segue o primeiro caso correspondente, ou a aresta de erro se nenhum corresponderCasos
ConnectorChama uma capacidade de uma integração registradaTipo de conector, capacidade, nome do conector

Cinco etapas de rotação de segredos alimentam o template Secret rotation. O Notify gera apenas notificações no app. Para chegar a outro sistema, use uma etapa Ticket ou uma etapa Connector que chame uma integração HTTP API.

As condições usam JSON logic restrito. A condição abaixo foi pensada para corresponder a achados Critical:

{ "==": [{ "var": "finding.severity" }, "Critical"] }

Operadores permitidos: ==, !=, >, <, >=, <=, and, or, not, in e var. Você pode testar campos do achado, como severity, type, status e repository_id, e dados do webhook como trigger.payload.FIELD. Os valores são comparados de forma exata, diferenciando maiúsculas de minúsculas. Prefira o construtor visual de condições e faça um dry run com um achado que você sabe que é Critical antes de confiar em uma condição escrita à mão.

Como criar fluxos com segurança

O Plexicus coloca várias salvaguardas entre uma ideia e um fluxo ativo: rascunhos desativados, dry runs, ativação apenas por administradores, versões e histórico de execuções.

Três formas de começar

Templates. Automations Start from a template oferece fluxos prontos:

  • Auto-remediate + ticket: em um novo achado, solicita uma remediação por IA, abre um ticket no Jira e envia uma notificação no app se alguma etapa falhar.
  • Conditional remediation: achados High e Critical seguem para a remediação automatizada com um pull request, e todo o resto vira um ticket no Jira para triagem.
  • Secret rotation: rotaciona um segredo vazado, armazena-o no HashiCorp Vault, abre um PR em rascunho que substitui o valor fixo no código por uma variável de ambiente, verifica o novo valor lendo-o de volta, aguarda a aprovação de um administrador e então promove o PR. Qualquer falha abre um ticket no Jira.

Do prompt ao fluxo. Automations New from prompt transforma uma descrição em inglês simples, de até 4.000 caracteres, em um rascunho, usando o modelo de IA configurado para a sua organização. Por exemplo: “When a critical finding is created, wait for admin approval, then open a Jira ticket.” O rascunho lista todos os sistemas externos que ele vai acessar em This flow will contact:, e nada é salvo até você clicar em Confirm and save draft.

Editor visual. Automations New automation abre três painéis: a paleta de etapas à esquerda (Triggers, Logic, Actions e Integrations), o canvas no meio e o inspetor à direita, com as abas Config, Last run I/O e Notes. Arraste uma etapa para o canvas ou clique duas vezes para adicionar uma. O inspetor marca cada etapa como Configured ou Incomplete. A versão atual adiciona desfazer e refazer e um construtor de agendamento com uma prévia da próxima execução.

Seja qual for a forma de começar, você obtém um rascunho desativado, que não faz nada até um administrador ativá-lo. O Plexicus valida o fluxo quando você salva, e problemas como duas arestas que saem do mesmo ramo para destinos diferentes aparecem em This flow has validation errors.

Dry runs (execuções simuladas)

Um dry run percorre o fluxo inteiro e simula cada etapa que tocaria um sistema externo. Cada etapa registra o que teria feito, por exemplo “Would create jira ticket in project SEC”, e os parâmetros que parecem segredos são mascarados. Os dry runs funcionam em rascunhos, não contam para os limites de execução e aparecem no histórico de execuções com o selo Dry run. Informe um Finding ID na barra superior do editor e clique em Dry run. Na versão atual, você também pode testar fluxos de agendamento e de webhook sem um finding ID.

Ativação e versões

Somente os administradores da organização podem criar, editar, ativar ou excluir fluxos; os demais usuários têm acesso somente leitura e ainda podem consultar o histórico de execuções.

A ativação verifica de novo cada conexão que o fluxo usa, incluindo as etapas Connector e o provedor da etapa Ticket. Se um teste falhar, você vê Activation failed com o conector que falhou. Dependendo do seu plano, o número de fluxos ativos e de execuções manuais pode ser limitado.

Editar um fluxo ativo e clicar em Save new version cria a próxima versão. As execuções em andamento continuam na versão com que começaram, e as versões anteriores são mantidas. Depois de salvar, confira a coluna Status e ative a nova versão se ela aparecer como Inactive.

Histórico de execuções, status e aprovações

Abra Automations Edit Runs para ver Automation, Finding, Status e Started de cada execução. Expanda uma linha para ver os logs por etapa ou use Replay para percorrer uma execução passo a passo, com a entrada e a saída de cada etapa.

StatusSignificado
RunningAs etapas estão em execução
WaitingPausada em uma etapa Wait for approval
CompletedO fluxo chegou ao fim, por um caminho de sucesso ou por um caminho de falha
FailedA execução parou com um erro ou durou mais do que o máximo de 30 dias
CancelledA execução foi interrompida antes de terminar

As execuções em Waiting mostram Approve, Reject e Cancel. Approve continua pelo caminho de sucesso. Reject e um timeout seguem o caminho de erro. Cancel se comporta como Reject: a execução continua pelo caminho de erro. O timeout é definido em segundos, e o padrão é de 7 dias (604.800 segundos). Se a etapa indicar uma função de aprovador, somente os usuários com essa função podem aprovar ou rejeitar.

Ticketing e integrações de saída

O Plexicus se conecta a outros sistemas em dois lugares: Settings Integrations reúne os conectores de ticketing por trás do botão Create Ticket dos achados, e a página de integrações do Automation reúne os sistemas que os seus fluxos usam.

Conectar o Jira e o ServiceNow

Abra Settings Integrations Ticket Management , que lista Jira, ServiceNow e Webhook.

O Jira tem quatro abas: Credentials, Stage Configuration, Test Connection e Create Ticket. A aba Credentials pede um Email Address, um API Token e a Server URL da sua instância do Jira Cloud, como company.atlassian.net.

O ServiceNow pede um OAuth Token e a sua Instance URL, como https://dev12345.service-now.com. O Plexicus abre incidentes no estado New com a categoria Security. Os conectores que você pode habilitar dependem do seu plano.

Os dois conectores têm dois estágios, que você ativa ou desativa em Stage Configuration:

  • Create Issue cobre os tickets criados a partir de achados.
  • Pull Request se aplica quando o Plexicus abre um pull request de remediação. Um ticket vinculado recebe um comentário com o link do PR e é marcado como em andamento. Se ainda não houver um ticket vinculado, o Plexicus cria um.

Cada estágio tem um Priority Mapping (por padrão, o Jira mapeia Critical para Highest, e o ServiceNow mapeia Critical para “1 - Critical”) e um Field Mapping opcional, que preenche campos do ticket com dados do achado usando placeholders como %Finding.title%. O estágio também oferece opções de filtro; teste-as em um achado de exemplo antes de confiar nelas. Execute Test Connection depois de salvar as credenciais.

Criar um ticket a partir de um achado

Na página de detalhes de um achado, o menu suspenso Create Ticket lista cada provedor configurado. O Jira abre um formulário com Service, Issue Type (Bug, Task, Story, Epic), Project Key e um Priority Override opcional. O ServiceNow abre o incidente na hora, usando os mapeamentos do estágio. O Webhook envia o achado para o endpoint que você configurou.

O Plexicus vincula o ID, a URL e o status do ticket ao achado e adiciona uma entrada “ticket created” à linha do tempo dele. Não presuma que o ticket será fechado sozinho quando o achado for resolvido; feche-o pelo fluxo de trabalho normal da sua ferramenta de tickets.

Webhooks de saída e integrações do Automation

O conector Webhook envia achados para um endpoint HTTP que você controla. O assistente dele tem quatro passos: Settings (Webhook Name, Webhook URL, HTTP Method POST ou PUT, Data Format), Authentication (None, Basic ou Bearer Token), Headers e Preview, onde você confere o payload e envia um teste.

A página de integrações do Automation lista os sistemas externos conectados que as suas automações podem usar: HashiCorp Vault, Kubernetes Secrets, Jira, ServiceNow, Source control, HTTP API e Outgoing webhook. O campo Credentials reference guarda uma referência a credenciais armazenadas, nunca o segredo em si. Cada card mostra Unverified, Healthy ou Unhealthy, e Save and test verifica uma nova integração na hora. Não é possível excluir uma integração que um fluxo ainda usa.

Webhooks de entrada assinados

Um fluxo com gatilho Webhook recebe a sua própria Ingress URL. No painel do gatilho, clique em Generate new secret e copie o segredo imediatamente, porque ele é mostrado uma única vez. Gerar um novo segredo substitui o anterior na hora; por isso, atualize todos os chamadores ao mesmo tempo. O chamador assina o corpo bruto da requisição com HMAC-SHA256 usando esse segredo e envia o digest hexadecimal no header X-Plexicus-Signature, no formato sha256=HEX_DIGEST. O painel inclui uma requisição de exemplo pronta. Em um shell, a assinatura fica assim:

BODY='{"service":"billing-api","event":"deploy"}'
SIG=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$WEBHOOK_SECRET" | awk '{print $NF}')
curl -X POST "$INGRESS_URL" \
  -H "Content-Type: application/json" \
  -H "X-Plexicus-Signature: sha256=$SIG" \
  --data "$BODY"

Assine exatamente os bytes que você envia. Se o chamador serializar o JSON de novo depois de assinar, a assinatura deixa de corresponder.

Resposta HTTPRótulo em Recent deliveriesSignificado
202AcceptedUma nova execução começa para cada entrega aceita
401Invalid signatureA assinatura está ausente ou não corresponde ao corpo e ao segredo atual, ou ainda não foi gerado nenhum segredo
409InactiveO fluxo está inativo ou não usa um gatilho Webhook
400Invalid JSONO corpo não é um JSON válido
413Payload too largeO corpo excede o limite de tamanho
429Rate limitedEntregas demais para a organização

Acesso para desenvolvedores: tokens de API e a API REST

Scripts, pipelines de CI e agentes de IDE acessam o Plexicus por meio de tokens. Escolher o token certo mantém o acesso rastreável e fácil de revogar.

Tokens de API pessoais

Acesse Settings API Tokens . Informe um Token name, escolha uma Expiration (30 days, 90 days ou No expiration) e clique em Generate token. O valor aparece uma única vez, em “Save your token now”. Copie-o e clique em I’ve saved it. A tabela Active tokens lista Name, Created, Expires e Type, com Revoke em cada linha.

Um token pessoal não tem escopos próprios. Ele age como você, com a sua função e as suas permissões na organização. Um token criado por um desenvolvedor pode fazer o que esse desenvolvedor pode fazer no console, e nada além disso. A revogação de um token tem efeito imediato, e qualquer chamada posterior com ele retorna 401. A criação de tokens fica gravada no registro de auditoria.

Boas práticas:

  • Crie um token por ferramenta (um script de relatórios, a sua IDE, um job de CI), para poder revogar um sem quebrar os outros.
  • Prefira uma validade de 30 ou 90 dias. Se escolher No expiration, confira a coluna Expires, porque um prazo padrão longo ainda pode ser aplicado.

O token do Plexalyzer da organização

O token do Plexalyzer, também chamado de token do scanner de CI/CD, pertence à organização, e não a uma pessoa. Ele autentica o scanner Plexalyzer nos seus pipelines. Os administradores o criam, com uma data de expiração opcional, em Settings Plexalyzer Token . Em algumas versões, o mesmo token aparece na seção do token do scanner de CI/CD em Settings API Tokens . O módulo 3 mostra como armazená-lo como o segredo de CI PLEXALYZER_TOKEN e como configurar os pipelines.

O Plexicus não tem um token de nível organizacional para chamadas gerais à API. Mesmo um script que deve durar mais do que o acesso de uma pessoa precisa de um token de API pessoal; por isso, escolha o dono dele de forma deliberada, dê ao token um nome próprio e revogue-o quando ele não for mais necessário.

TokenPertence aUse para
Token de API pessoalVocê, com a sua funçãoScripts, integrações, o MCP server
Token da CLIVocê, com a sua funçãoO Plexicus TUI, criado por plexicus login
Token do PlexalyzerA organizaçãoApenas o scanner Plexalyzer no CI/CD

Fundamentos da API REST

Toda requisição envia Authorization: Bearer seguido do seu token e Accept: application/json, além de Content-Type: application/json em POST, PUT e PATCH. A URL base do SaaS está no guia da API em docs.plexicus.ai; uma implantação auto-hospedada usa a sua própria URL. Os caminhos dos recursos ficam no plural, como /repositories, /findings, /remediations, /repository-scans e /automations.

curl -H "Authorization: Bearer $PLEXICUS_API_TOKEN" \
     -H "Accept: application/json" \
     "$PLEXICUS_API_URL/findings?filters%5Bseverity%5D=critical,high&limit=25"

As listas usam paginação por cursor. Uma resposta contém items, total e um link next; passe o cursor dele para obter a próxima página. A maioria dos endpoints retorna 25 itens por página por padrão, e limit altera esse valor.

As ações de longa duração retornam 202 e continuam em segundo plano. POST /repository-scans com um repository_id e um scan_type igual a app ou sbom inicia um scan. POST /remediations com um finding_id solicita uma correção por IA; consulte GET /remediations?finding_id=... periodicamente até que ele retorne o diff e as orientações (404 significa que ainda não está pronto). As ações de IA consomem a sua cota de uso de IA, exibida em Settings Billing e no menu do seu perfil (módulos 7 e 10). Você também pode iniciar um fluxo pelo endpoint de execuções de /automations, para até 100 achados por chamada e, opcionalmente, como dry run.

Os erros usam o formato Problem Details da RFC 7807. Um 401 significa que o token é inválido, expirou ou foi revogado. Um 403 significa que o token funciona, mas a sua função ou o seu plano não permite a ação. Um 429 significa que você atingiu um limite de taxa; tente de novo com backoff exponencial.

Como trabalhar no terminal e na IDE

Duas ferramentas para desenvolvedores levam os achados para onde você já trabalha: o Plexicus TUI, no seu terminal, e o Plexicus MCP server, na sua IDE.

O Plexicus TUI

Baixe o binário para macOS Apple Silicon, macOS Intel ou Linux x86-64 na página GitHub Releases de github.com/plexicus/tui. Depois:

plexicus --version   # confirma a instalação
plexicus login       # entra pelo navegador
plexicus             # navega pelos achados e pelos repositórios conectados

Na primeira execução, um assistente de configuração pede a URL do seu servidor Plexicus.

TeclaAção
FAbrir os filtros
/Buscar
EnterAbrir os detalhes do achado
rSolicitar uma remediação por IA
pCriar um pull request

Pressione r, revise o diff e só então pressione p. O pull request passa pela sua revisão normal, e a sua equipe mantém o controle do merge.

O que o plexicus login faz

plexicus login abre o navegador na página de autorização do Plexicus. Entre, se necessário, inclusive com 2FA, se estiver ativado. A página mostra “Authorizing Plexicus CLI…” e depois “CLI authorized”. Nos bastidores, o Plexicus cria um token de API pessoal chamado CLI - YYYY-MM-DD, válido por 365 dias, e o seu navegador o entrega à CLI em um endereço local 127.0.0.1. A CLI o armazena em ~/.config/plexicus.

Como é um token pessoal comum, ele aparece em Settings API Tokens , onde você o revoga. plexicus logout apenas exclui a cópia local. Em uma máquina headless, sem navegador, gere em vez disso um token pessoal e exporte-o como PLEXICUS_API_TOKEN.

O Plexicus MCP server

O Plexicus MCP server (pacote plexicus-mcp) roda localmente na sua máquina e dá a um agente de IDE compatível com MCP acesso à API REST do Plexicus com o seu token pessoal. Os clientes documentados incluem Cursor, VS Code, Windsurf e um agente de programação de linha de comando. A configuração tem três passos:

  1. Escolha um cliente.
  2. Escolha um método de inicialização: uvx plexicus-mcp (recomendado), pipx run plexicus-mcp ou pip install plexicus-mcp.
  3. Configure o seu token e conecte. Depois que você gera um token, a seção Use with your IDE (MCP) da página API Tokens mostra trechos já preenchidos: um comando de uma linha para clientes de linha de comando e uma configuração JSON para Cursor, VS Code e Windsurf.
{
  "mcpServers": {
    "plexicus": {
      "command": "uvx",
      "args": ["plexicus-mcp"],
      "env": {
        "PLEXICUS_API_TOKEN": "YOUR_TOKEN",
        "PLEXICUS_API_URL": "YOUR_API_URL"
      }
    }
  }
}

PLEXICUS_API_TOKEN é obrigatório. PLEXICUS_API_URL é opcional; o padrão é a API do SaaS, e ele é definido em implantações auto-hospedadas. Com um token inválido, as ferramentas retornam “Authentication failed — the API token is invalid, expired or revoked.”

O servidor expõe 10 ferramentas. Somente request_scan e generate_remediation alteram alguma coisa; as demais são somente leitura.

FerramentaFinalidade
get_current_repositoryAssociar o git remote do seu workspace a um repositório do Plexicus
list_repositories, get_repositoryNavegar pelos repositórios, pelas contagens por severidade e pelo estado dos scans
list_findings, get_findingFiltrar por severidade, status, CWE ou título e depois ler os detalhes
request_scan, get_scan_statusIniciar um scan de app ou de SBOM e acompanhá-lo
generate_remediation, get_remediationSolicitar uma correção por IA e obter o diff e as orientações
get_security_postureTotais de toda a conta e os repositórios de maior risco

Ele também traz três prompts guiados (fix_finding, triage_findings, security_review) e dois recursos: plexicus://repositories e um recurso de achados por repositório. Toda ferramenta retorna um resumo legível, além dos dados brutos da API.

Principais pontos

  • Todo fluxo tem um gatilho, etapas com caminhos de sucesso e de erro e uma execução registrada. Um fluxo é executado uma vez por achado; só um fluxo com gatilho Finding reopened volta a ser executado, a cada reabertura.
  • Os fluxos começam como rascunhos desativados. Faça um dry run, peça a um administrador que os ative (a ativação testa as conexões de novo) e leia os logs por etapa, porque Completed pode incluir uma etapa que falhou.
  • Jira, ServiceNow e webhooks de saída ficam em Settings Integrations Ticket Management . Os webhooks de entrada precisam ser assinados com HMAC-SHA256 usando o segredo atual do fluxo.
  • Os tokens de API pessoais agem com a sua própria função; o token do Plexalyzer da organização serve apenas para o scanner. Use um token por ferramenta e revogue os que você não usa.
  • plexicus login cria um token pessoal revogável para o Plexicus TUI. O MCP server dá aos agentes de IDE 10 ferramentas, e as correções sugeridas nunca viram pull requests sem você.

Teste de conhecimento

Confira o que você aprendeu

Questões de prática deste módulo. Elas não contam para a certificação. Mínimo para aprovação: 4 respostas corretas.

  1. Questão 1 O seu fluxo usa um gatilho New finding e já concluiu uma execução para um achado. Um scan posterior reabre esse achado. O que acontece?
  2. Questão 2 Você faz um dry run de um rascunho de fluxo cuja etapa Ticket aponta para o Jira. O que acontece nessa etapa?
  3. Questão 3 Onde você conecta o Jira para que ele apareça no menu suspenso Create Ticket de um achado?
  4. Questão 4 Um desenvolvedor gera um token de API pessoal. O que um script que usa esse token pode fazer?
  5. Questão 5 Você executa plexicus logout no seu notebook. O que acontece com o token que a CLI estava usando?

Qualificação

Verifique se o AI Swarm Pentest se adequa ao seu ambiente.

Partilhe o contexto mínimo. Vamos rever o escopo e indicar o próximo passo comercial.

Antes de enviar — verifique se se encaixa

0 / 280

Sem compromisso. Se não se encaixa, dizemos.

SAMPLE HANDOVER · ILLUSTRATIVE

Sample evidence handover

A trimmed view of what your team receives at the end of an AI Swarm Pentest engagement. Real engagements include full technical evidence, executive narrative, and a remediation plan.

VALIDATED FINDING Evidence attached

Server-Side Request Forgery in webhooks/receiver

demo-project/sample-app · src/webhooks/receiver.py:42

SeverityHigh CVSS 3.18.6 Priority79 Confirmedvia replay

Untrusted caller-supplied URLs reach an internal egress without an allowlist. Replayed in a sandbox against a fresh authorized target — the same control was validated to fail twice.

REVIEWER-READY REMEDIATION Merge-ready PR

Validate the target URL against an allowlist of permitted hostnames. Reject private/internal IP ranges. Enforce HTTPS only.

plexicus/remediation/webhooks-ssrf 3 changed · 0 new files
42resp = requests.get(target_url)
42+if not is_allowed_host(target_url):
43+  raise WebhookRejected(target_url)
44+resp = requests.get(target_url, timeout=5)
Every engagement hands over:
  • Executive briefing
  • Validated findings list
  • Merge-ready PRs
  • Compliance mapping (NIS2 · DORA · CRA)
Ronda privada Para investidores