JustCyber

PhishGuard AI

Chegou um e-mail estranho e alguém precisa dizer, com fundamento, se é golpe — antes que o usuário clique.

O PhishGuard recebe um e-mail, URL ou mensagem suspeita e devolve um veredito com nota de risco, os indicadores extraídos, a explicação em português e a ação recomendada. A análise é passiva por decisão de projeto: o sistema não clica no link, não faz GET na URL e não baixa nada. Ele lê o conteúdo que você enviou e trabalha em cima dele.

A primeira camada é determinística e sempre roda. O extrator refanga os disfarces comuns de phishing (hxxp://, [.], [at], [dot]) e tira URLs, domínios, IPs, e-mails e hashes de arquivo, com teto de 40 por tipo. Os domínios encontrados são cruzados contra as marcas que o tenant monitora, usando o gerador determinístico de sósias já existente na plataforma (erro de teclado, homóglifo, troca de TLD) — é assim que o typosquat da sua marca aparece. Se for útil resolver o nome do domínio, a resolução passa antes pelo portão de SSRF: endereço privado, loopback, link-local ou metadata é recusado, e mesmo resolvendo nenhum pacote HTTP sai para o alvo.

A segunda camada é a IA, e ela é fail-closed. O corpo de um e-mail de phishing é conteúdo controlado pelo atacante e pode carregar credencial e dado pessoal, então a task é classificada como SENSITIVE: o gateway bloqueia o envio ao provedor por padrão e só libera se o tenant tiver aprovado explicitamente em tenant_settings. Sem aprovação, o veredito sai da heurística e a justificativa diz, com todas as letras, que o conteúdo não foi enviado ao modelo. Todo o conteúdo suspeito entra no prompt embrulhado como dado não confiável, nunca como instrução. E o corpo cru não fica no banco: só um trecho redigido de até mil caracteres.

O que faz hoje

Capacidades em operação

Cada item corresponde a funcionalidade que existe no código e é alcançável por um usuário com o escopo correto.

  • Análise síncrona com cobrança justa

    POST /phishguard/reports roda a análise na hora, com Idempotency-Key obrigatório e rate-limit por IP e por tenant. O crédito é reservado antes, capturado só no sucesso e devolvido em qualquer falha — você nunca paga por análise que não produziu veredito. Saldo insuficiente responde 402.

  • Extração determinística de indicadores

    URL, domínio, IP, e-mail e hash de arquivo, com refang de hxxp://, [.], (.), [at] e [dot]. Deduplicado e limitado a 40 por tipo. Roda sem rede e sem IA.

  • Detecção de typosquat da sua marca

    Os domínios do e-mail são cruzados contra o conjunto de sósias de cada marca monitorada pelo tenant (erro de teclado, homóglifo, troca de TLD). O acerto entra como indicador de origem 'typosquat' e leva o veredito heurístico direto para malicioso.

  • Resolução de domínio com portão de SSRF

    Até 5 domínios são resolvidos passando pelo gate fail-closed da plataforma: RFC1918, loopback, link-local e 169.254.169.254 são recusados. O domínio bloqueado é registrado como sinal e não contribui IP.

  • Veredito e explicação por IA

    Veredito e explicação por IA — Veredito (benigno/suspeito/malicioso/precisa_info), nota de risco de 0 a 100, justificativa em português e ação recomendada. O veredito do modelo tem precedência quando existe; caso contrário vale a heurística. (O modelo também produz uma lista de sinais observados, mas ela é descartada no serviço: não é gravada em phishguard_reports nem devolvida pela API.)

  • Egress fail-closed por tenant

    A task é SENSITIVE. O conteúdo só chega ao provedor se tenant_settings.settings.ai_egress estiver aprovado. Linha ausente, valor não reconhecido ou qualquer falha de leitura negam o envio.

  • Anti prompt-injection

    Assunto, corpo, URL, indicadores e typosquats entram no prompt embrulhados em <untrusted_context>, e o blob montado passa por uma neutralização extra caso o conteúdo tente forjar a própria cerca.

  • Corpo redigido em repouso

    O que persiste em phishguard_reports é um recorte redigido de até 1000 caracteres, produzido pelo redator de segredos da plataforma. O corpo cru do e-mail não fica gravado.

  • Override do analista

    PATCH no report corrige o veredito e registra a anotação. Não chama IA e não movimenta crédito.

  • Marcas monitoradas

    PUT e GET de brand-watch substituem e leem a lista de marcas do tenant que alimentam a detecção de typosquat.

O que fica com você

Entregáveis

  • Tela de análise em /app/phishguard: envio do suspeito, veredito com nota de risco, justificativa em português e ação recomendada
  • Lista de indicadores materializados por report (domínio, IP, URL, hash, e-mail) com a origem de cada um
  • Gestão de marcas monitoradas em /app/phishguard/marca
  • Histórico de reports com veredito, status e override do analista
  • Trilha de auditoria em audit_log e movimentação de crédito rastreável (hold, capture, release)

O que este módulo não faz

Não há ingestão por caixa de correio. Não existe conector IMAP, Exchange ou Microsoft Graph, nem endpoint de ingestão automática: todo report entra pelo POST /phishguard/reports autenticado por JWT com o escopo phishguard:report:write — na prática, alguém cola o suspeito ou um sistema seu o envia. O tipo 'qr' é aceito no vocabulário, mas não há decodificação de imagem nem de QR code: o que é analisado é o texto de assunto, corpo e URL que você enviar. Não há consulta a feeds de reputação — o vocabulário prevê a origem 'feed' para indicadores, mas nenhum código produz indicador com essa origem. Não há anexo: o schema não recebe arquivo, e hashes só são reconhecidos quando aparecem escritos no texto. Não há ação de resposta: o produto não remove a mensagem das caixas afetadas, não bloqueia domínio na borda e não avisa o usuário final — a saída é veredito mais recomendação em texto. O preço é fixo em 1 crédito por análise, definido no código (PHISHGUARD_CREDIT_PRICE = 1.0), com um TODO explícito para derivá-lo do custo real; a chave de configuração JC_PHISHGUARD_CREDIT_PRICE existe mas não é lida por esse caminho. A flag JC_PHISHGUARD_ENABLED está declarada na configuração mas nenhum código do módulo a lê: o controle de acesso real é o escopo RBAC, não uma chave de desligamento.

Declaramos o limite porque software de segurança que promete tudo não é auditável. Se o que falta aqui é o que você precisa, o serviço consultivo cobre — ou dizemos que não cobre.

Conecta com

  • Gateway de IA da plataforma (task phishguard_analyze, classe SENSITIVE)
  • ShadowSignal (reuso de brand_variants para o conjunto de sósias de marca)
  • Scan passivo da plataforma (gate de SSRF resolve_public_ips e redator de segredos)
  • Carteira de créditos da plataforma (hold, capture, release)
  • RBAC e RLS FORCE, audit_log e Idempotency-Key da fundação

Controle de acesso

O acesso é concedido por escopo, não por perfil genérico. Quem só precisa ler não recebe permissão de escrita, e a barreira é o banco de dados, não a interface.

  • phishguard:report:read
  • phishguard:report:write
  • phishguard:brand:read
  • phishguard:brand:write
PhishGuard AI

Quer ver funcionando?

Demonstração com dado do seu ambiente, não com base de exemplo. É a única forma de saber se serve.