Agência de segurança de software, por João Edgar

Segurança de software, provada no código.

Avaliamos repositórios autorizados com análise automatizada, IA e validação humana. Você recebe evidências, não suposições.

Não prometemos encontrar vulnerabilidades em todo projeto. Prometemos um escopo claro, investigação técnica séria e evidências que o seu time consegue verificar e corrigir.

Um serviço. Feito com profundidade.

Revisão de Segurança de Software e Código-Fonte

Uma avaliação com escopo definido sobre o software da sua empresa, seja ele feito pelo seu time ou por terceiros. Procuramos falhas de segurança, confirmamos o que é real e explicamos como corrigir.

Para quem é

  • Donos de negócios locais com site, loja virtual ou sistema próprio
  • Pequenas e médias empresas que contrataram o desenvolvimento de um software
  • Grandes empresas que querem uma avaliação independente
  • Fundadores antes de uma rodada, auditoria ou grande cliente
  • CTOs e líderes de engenharia que querem um segundo olhar especializado
  • Quem não tem time de segurança e precisa saber se o sistema está protegido

O que a revisão cobre

  • Login, sessão e controle de acesso
  • Dados recebidos pelo sistema e dados sensíveis
  • Criptografia e senhas ou chaves escritas no código
  • Bibliotecas de terceiros e configurações de segurança
  • Lógica de negócio com impacto em segurança

O que você recebe

Relatório com achados validados, gravidade, evidências, localização no código e recomendações de correção, apresentado ao time.

O que não oferecemos hoje

Testes de invasão em sistemas que já estão no ar (pentest de produção), monitoramento 24 horas e certificações. Preferimos dizer isso agora a prometer o que ainda não entregamos.

De 20 a 100 agentes de IA especializados em segurança em cada análise.

Eles trabalham em paralelo, cada um focado em uma classe de falha. Nenhum achado chega ao relatório sem o veredito humano.

  • 20 agentes: base de toda análise
  • Até 100: conforme o tamanho do escopo

Como trabalhamos, do primeiro e-mail ao relatório.

Sete etapas, cada uma com um combinado claro. Nada é analisado sem escopo e autorização por escrito.

  1. Conversa inicial

    Entendemos o produto, as tecnologias usadas, o momento do time e o que mais preocupa vocês.

  2. Escopo e autorização

    Definimos por escrito o que será analisado, o que fica de fora, o prazo e quais ferramentas e provedores de IA podem ser usados.

  3. Recebimento seguro do código

    O repositório chega por um canal combinado com vocês, com acesso mínimo e prazo de retenção definido.

  4. Análise técnica

    Dezenas de agentes de IA especializados analisam o código em paralelo, junto com ferramentas automatizadas, dentro do que o contrato autoriza.

  5. Validação e classificação

    O veredito é sempre humano: cada possível achado é verificado e classificado por gravidade e impacto. Alarme falso não entra no relatório.

  6. Relatório com evidências

    Descrição, evidências, localização no código e recomendações de correção, em linguagem que engenharia e gestão entendem.

  7. Apresentação e próximos passos

    Revisamos os resultados com o time, respondemos dúvidas e combinamos o que vem depois.

Uma amostra do que você recebe.

Rodamos o mesmo processo em dois projetos open source criados de propósito com falhas, para treino. Estes são os achados críticos que confirmamos, do jeito que aparecem no relatório.

CríticoDVNADVNA-01

Envio de arquivo executa comandos no servidor

core/appHandler.jslinha 218
// TODO: Deprecate this soonif(req.files.products){  var products = serialize.unserialize(req.files.products.data.toString('utf8'))  products.forEach( function (product) {
Para o negócio
Quem enviar um arquivo de produtos preparado pode assumir o servidor.
Para o time técnico
O upload é desserializado com node-serialize. Uma função embutida no conteúdo roda durante a leitura e executa comandos.
Correção recomendada
Não desserializar entrada não confiável. Usar JSON puro com validação de esquema.

Prova em laboratórioReproduzido em ambiente isolado: a prova gravou um arquivo-marcador no servidor de teste.

CríticoDVNADVNA-02

Token de troca de senha previsível

core/authHandler.jslinha 78
}).then(user => {  if (user) {    if (req.body.token == md5(req.body.login)) {      user.password = bCrypt.hashSync(req.body.password, bCrypt.genSaltSync(10), null)
Para o negócio
Qualquer conta pode ser tomada sem acesso ao e-mail da vítima.
Para o time técnico
O token de redefinição é md5(login). Como o login é conhecido, o token é calculado fora do sistema e a senha é trocada.
Correção recomendada
Token aleatório gerado por CSPRNG, de uso único e com expiração curta.

Prova em laboratórioReproduzido em ambiente isolado: a prova gravou um arquivo-marcador no servidor de teste.

CríticoDVNADVNA-03

Calculadora escapa do sandbox e executa comandos

core/appHandler.jslinha 197
if (req.body.eqn) {  res.render('app/calc', {    output: mathjs.eval(req.body.eqn)  })
Para o negócio
Um simples campo de cálculo vira uma porta de entrada para o servidor.
Para o time técnico
A expressão digitada vai direto para mathjs.eval (versão 3.10.1), que permite escapar do sandbox e alcançar o processo do Node.
Correção recomendada
Atualizar o mathjs e não avaliar entrada do usuário. Usar um parser restrito às operações permitidas.

Prova em laboratórioReproduzido em ambiente isolado: a prova gravou um arquivo-marcador no servidor de teste.

CríticoDVNADVNA-04

SQL injection na busca de usuários

core/appHandler.jslinha 10
module.exports.userSearch = function (req, res) {  var query = "SELECT name,id FROM Users WHERE login='" + req.body.login + "'";  db.sequelize.query(query, {    model: db.User
Para o negócio
Dados do banco podem ser lidos por quem não deveria vê-los.
Para o time técnico
O login digitado é concatenado na consulta SQL enviada ao sequelize.query.
Correção recomendada
Consultas parametrizadas do Sequelize. Nunca concatenar entrada na consulta.

Leitura do códigoConfirmado na leitura do código, na linha indicada.

CríticoDVNADVNA-05

Ping monta comando do sistema com entrada do usuário

core/appHandler.jslinha 39
const exec = require('child_process').exec;// ...exec('ping -c 2 ' + req.body.address, function (err, stdout, stderr) {  /* ... */
Para o negócio
Um campo de diagnóstico vira execução de comando no servidor.
Para o time técnico
O endereço digitado é concatenado numa chamada exec() com shell, permitindo encadear comandos arbitrários.
Correção recomendada
Validar o endereço e usar execFile com argumentos separados, sem passar pela shell.

Leitura do códigoConfirmado na leitura do código, na linha indicada.

CríticoNodeGoatNG-01

eval() em formulário executa código no servidor

app/routes/contributions.jslinha 32
// Insecure use of eval() to parse inputsconst preTax = eval(req.body.preTax);const afterTax = eval(req.body.afterTax);const roth = eval(req.body.roth);
Para o negócio
Preencher um formulário de contribuição pode executar código no servidor.
Para o time técnico
Os campos preTax, afterTax e roth vão direto para eval() no servidor, com require disponível.
Correção recomendada
Remover o eval. Converter com Number() e validar a faixa de valores.

Prova em laboratórioReproduzido em ambiente isolado: a prova gravou um arquivo-marcador no servidor de teste.

CríticoNodeGoatNG-02

NoSQL injection pelo operador $where

app/data/allocations-dao.jslinha 78
return {    $where: `this.userId == ${parsedUserId} && this.stocks > '${threshold}'`};
Para o negócio
Um filtro da tela de investimentos permite rodar JavaScript dentro do banco.
Para o time técnico
O parâmetro threshold é interpolado numa cláusula $where do MongoDB, que executa JavaScript.
Correção recomendada
Evitar $where. Usar operadores de consulta como $gt, com o valor convertido e validado.

Leitura do códigoConfirmado na leitura do código, na linha indicada.

  • 7achados críticos confirmados nos dois laboratórios
  • 4reproduzidos com prova em ambiente isolado
  • 1hipótese de falha descartada depois de teste
  • 0achados confirmados em axios e express, bibliotecas reais que também analisamos

Quando a análise não confirma nada, o relatório diz isso. Alarme falso não vira achado.

DVNA (appsecco, licença MIT) e OWASP NodeGoat (licença Apache 2.0) são laboratórios públicos e intencionalmente vulneráveis. As falhas fazem parte desses projetos: não são descobertas inéditas e não foram reportadas a ninguém.

Security Research

Pesquisa independente, divulgada com responsabilidade.

Além das avaliações, João Edgar pesquisa e relata possíveis vulnerabilidades a programas de segurança de grandes empresas. Os detalhes técnicos só são publicados depois do encerramento do relato e da autorização de divulgação.

Relatos de pesquisa independente. As empresas citadas não são clientes nem parceiras e não endossam este trabalho.

8relatos de vulnerabilidade enviados

  • 5relatos
  • 2relatos
  • 1relato

Relatos de pesquisa independente. As empresas citadas não são clientes nem parceiras e não endossam este trabalho.

Aguardando resolução pelos programas de segurança.

Detalhes técnicos e provas de conceito só depois que o programa autorizar a divulgação. Seguimos divulgação responsável enquanto os relatos seguem em análise.

Atualizado pela última vez em: 22 de outubro de 2026

Sobre

Uma agência nova, construída com rigor desde o primeiro dia.

João Edgar é fundador da agência e pesquisador independente de segurança. Seu foco é segurança de software, análise de código-fonte e investigação de vulnerabilidades.

A agência começou em outubro de 2026 com uma convicção simples: segurança deve ser demonstrada com evidências. Nesta fase, toda avaliação terá envolvimento direto do fundador, do escopo à apresentação dos resultados.

  • Transparência

    Escopo, limites e método explicados antes de começar.

  • Evidência

    Só reportamos o que conseguimos demonstrar.

  • Discrição

    Seu código é confidencial, com acesso mínimo e prazo definido.

Perguntas frequentes

Quais tipos de software podem ser analisados?

Aplicações desktop, mobile e web, APIs e backends, bibliotecas e SDKs, lojas virtuais, sistemas de gestão, plataformas sob medida, sistemas corporativos e outros repositórios de software, desde que vocês tenham direito sobre o código e autorizem a análise.

Não sou da área técnica. Posso pedir uma análise?

Sim. Você não precisa entender de código: basta autorizar o acesso ao código do sistema (o repositório), que pode ser fornecido por quem desenvolveu o sistema para você. O relatório traz um resumo em linguagem de negócio e os detalhes técnicos para quem for fazer as correções.

É necessário fornecer acesso ao código-fonte?

Sim. Nossa especialidade é a análise de código-fonte, então precisamos de acesso ao repositório, ou à parte dele que estiver no escopo. O acesso pode ser somente leitura e limitado ao período da avaliação.

Como a confidencialidade do código é tratada?

O código é recebido por um canal combinado, com acesso mínimo, e não é compartilhado com terceiros fora do que for autorizado. O prazo de retenção e a remoção ao final ficam definidos no contrato, e podemos assinar um acordo de confidencialidade.

Como funciona a análise assistida por IA?

Toda análise é feita por agentes de IA especializados em segurança, de 20 a 100 por projeto, trabalhando em paralelo. A IA investiga; o veredito é humano, e nenhum achado entra no relatório sem essa validação. Provedores externos de IA só são usados se o contrato autorizar e em condições adequadas de privacidade. Sem essa autorização, a análise usa modelos executados em ambiente controlado.

O que eu recebo ao final?

Um relatório com os achados validados, classificação de gravidade, evidências, localização no código e recomendações de correção, além de uma apresentação dos resultados para o time.

Uma avaliação garante que não existam vulnerabilidades?

Não, e desconfie de quem garante. Uma avaliação reduz risco dentro do escopo e do tempo definidos. O relatório deixa claro o que foi analisado e o que ficou de fora.

Vamos conversar sobre o seu código.

Conte um pouco sobre o projeto. A primeira conversa serve para entender o contexto e não tem custo.

Direto com João Edgaredgar@joaoedgar.online

Não inclua senhas, chaves ou trechos confidenciais de código.

Este formulário não envia nem armazena nada. O botão abre o seu programa de e-mail com a mensagem pronta para você revisar. Política de privacidade.