<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
  <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator>
  <link href="https://blog.lesis.lat/feed/pt.xml" rel="self" type="application/atom+xml" />
  <link href="https://blog.lesis.lat/" rel="alternate" type="text/html" />
  <updated>2026-10-08T12:06:34+00:00</updated>
  <id>https://blog.lesis.lat/feed/pt.xml</id>
  <title type="html">LESIS - Laboratory of Engineering Studies in Information Security</title>
  <subtitle>Pesquisa aplicada em segurança ofensiva da LESIS: pesquisa de vulnerabilidades, técnicas de exploração, ferramentas próprias e guias práticos.</subtitle>
  <author>
    <name>LESIS</name>
  </author>
  <entry xml:lang="pt-BR">
    <title type="html">Nossa primeira observação de um grupo malicioso assistido por IA mirando fintechs brasileiras de pequeno e médio porte</title>
    <link href="https://blog.lesis.lat/blog/nossa-primeira-observa%C3%A7%C3%A3o-de-um-grupo-malicioso-assistido-por-ia/" rel="alternate" type="text/html" title="Nossa primeira observação de um grupo malicioso assistido por IA mirando fintechs brasileiras de pequeno e médio porte" />
    <published>2026-06-29T18:00:00+00:00</published>
    <updated>2026-06-29T18:00:00+00:00</updated>
    <id>https://blog.lesis.lat/blog/nossa-primeira-observa%C3%A7%C3%A3o-de-um-grupo-malicioso-assistido-por-IA</id>
    <content type="html" xml:base="https://blog.lesis.lat/blog/nossa-primeira-observa%C3%A7%C3%A3o-de-um-grupo-malicioso-assistido-por-ia/">&lt;p&gt;O trabalho da LESIS nos coloca, com frequência, em diferentes frentes de segurança ofensiva, resposta a incidentes e inteligência de ameaças. Em uma oportunidade recente, fomos acionados para apoiar uma investigação envolvendo uma instituição financeira brasileira. Nosso papel inicial era responder a uma pergunta objetiva: qual foi o vetor de entrada utilizado pelo agente malicioso?&lt;/p&gt;

&lt;p&gt;Para isso, conduzimos uma análise orientada por simulação adversária. Partimos da mesma premissa operacional do atacante: comprometer uma aplicação ou recurso adjacente que permitisse, direta ou indiretamente, chegar a sistemas com potencial de movimentação financeira. Essa abordagem nos permitiu reconstruir parte da cadeia de ataque, identificar o vetor inicial e, posteriormente, localizar mecanismos de persistência usados pelo threat actor.&lt;/p&gt;

&lt;p&gt;Durante a investigação, observamos que a persistência implantada pelo grupo se comunicava com infraestrutura externa controlada pelos operadores. A partir desse ponto, aprofundamos a análise da infraestrutura de comando e controle, com o objetivo de entender se havia elementos adicionais que pudessem contribuir para a resposta ao incidente e para a proteção de outros possíveis alvos.&lt;/p&gt;

&lt;p&gt;Por razões operacionais, não iremos publicar IoCs, payloads, endereços, nomes de arquivos, caminhos internos ou detalhes que possam comprometer investigações. Ainda assim, os artefatos analisados revelaram um conjunto consistente de comportamentos, ferramentas e padrões de operação.&lt;/p&gt;

&lt;h2 id=&quot;o-que-foi-observado&quot;&gt;O que foi observado&lt;/h2&gt;

&lt;p&gt;A infraestrutura analisada continha payloads, artefatos de apoio à exploração, logs de requisições, scripts de recebimento de dados e evidências de tentativas anteriores contra múltiplos alvos. Em alguns casos, a mesma infraestrutura mantinha informações relacionadas a mais de um alvo ou operação, incluindo tentativas mal sucedidas, atividades em andamento e dados obtidos após comprometimento.&lt;/p&gt;

&lt;p&gt;A análise desses materiais nos levou a seis conclusões principais.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Os alvos observados eram fintechs brasileiras, em especial organizações de pequeno e médio porte, com menor exposição midiática e menor maturidade pública em segurança quando comparadas a grandes instituições financeiras.&lt;/li&gt;
  &lt;li&gt;As evidências indicam a atuação de um grupo, e não de um operador isolado. Essa avaliação é baseada em múltiplos sinais: diferentes identificadores de acesso, atividade concorrente partindo de origens distintas, padrões operacionais incompatíveis com uma única sessão humana contínua e diferenças estilométricas em artefatos de código.&lt;/li&gt;
  &lt;li&gt;Ao menos um dos operadores aparenta ter familiaridade com o português brasileiro. Essa conclusão vem do uso do idioma em artefatos operacionais e comentários observados durante a análise.&lt;/li&gt;
  &lt;li&gt;Identificamos evidências de uso de LLMs no apoio à construção de tooling ofensivo. Os artefatos indicam o uso de modelos de linguagem para auxiliar na criação ou adaptação de exploits, web shells, mecanismos de bypass, scripts de exfiltração e componentes auxiliares usados durante a operação.&lt;/li&gt;
  &lt;li&gt;Observamos tentativas de contornar guardrails de LLMs por meio de contextualização enganosa, em especial levando o modelo a operar sob a premissa de um pentest autorizado. Esse padrão é relevante porque mostra que o uso de IA pelo grupo não se limitou à produtividade: ele também foi incorporado ao processo de desenvolvimento ofensivo.&lt;/li&gt;
  &lt;li&gt;Um ponto relevante observado foi a duração de uma das operações associadas a esse conjunto de artefatos. Em um dos alvos, identificamos atividade distribuída ao longo de aproximadamente três meses, o que indica uma intenção direta e contínua contra a organização comprometida. Esse comportamento reduz a hipótese de uma tentativa oportunista isolada e reforça a avaliação de que o grupo mantinha interesse operacional no alvo, adaptando sua abordagem conforme encontrava barreiras, novas oportunidades de acesso e caminhos potenciais para ampliar o impacto.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;cadeia-de-ataque&quot;&gt;Cadeia de ataque&lt;/h2&gt;

&lt;p&gt;O vetor comum observado foi a exploração de vulnerabilidades em nível de aplicação. O grupo não parecia depender exclusivamente de aplicações diretamente ligadas a fluxos financeiros. Pelo contrário: buscava aplicações na mesma infraestrutura ou em ambientes adjacentes que pudessem servir como ponto de entrada para movimentação lateral.&lt;/p&gt;

&lt;p&gt;Após o acesso inicial, o grupo procurava credenciais, arquivos de configuração, variáveis de ambiente, integrações internas e recursos de administração que pudessem ampliar o acesso.&lt;/p&gt;

&lt;p&gt;Nos casos em que o comprometimento avançou, a persistência foi simples. Não observamos, nos artefatos analisados, um esforço sofisticado de ocultação. O objetivo parecia ser funcionalidade e velocidade operacional, não furtividade avançada. Isso não reduziu o impacto potencial da operação: mesmo implantes simples podem ser suficientes quando combinados com credenciais válidas, segmentação fraca, permissões excessivas e baixa visibilidade de tráfego egresso.&lt;/p&gt;

&lt;p&gt;Em pelo menos um caso, os controles existentes impediram a comunicação direta entre o implante e a infraestrutura externa. A resposta do grupo foi adaptar a operação. Observamos tentativas de entrega de payloads blinds, probing de diferentes portas e ajustes sucessivos para entender o controle aplicado e decidir como contorná-lo. Esse comportamento indica capacidade operacional e persistência, ainda que o tooling em si não seja particularmente sofisticado.&lt;/p&gt;

&lt;p&gt;Também observamos foco na exfiltração de credenciais. O grupo buscava acesso a outras aplicações e serviços usados por colaboradores da organização comprometida, sugerindo interesse em escalar o ataque para além do primeiro sistema explorado.&lt;/p&gt;

&lt;h2 id=&quot;por-que-isso-importa&quot;&gt;Por que isso importa&lt;/h2&gt;

&lt;p&gt;Há três pontos que tornam essa campanha relevante:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;O primeiro é a escolha dos alvos: as fintechs brasileiras de pequeno e médio porte podem operar ativos financeiros relevantes, integrações críticas e fluxos transacionais sensíveis, mas nem sempre possuem a mesma capacidade de detecção, resposta e hardening encontrada em grandes instituições financeiras. Isso cria uma superfície atrativa para grupos financeiramente motivados.&lt;/li&gt;
  &lt;li&gt;O segundo é o papel das aplicações como ponto de entrada: a operação reforça um padrão recorrente em muitas organizações, o caminho até o impacto financeiro não começa necessariamente no sistema financeiro principal. Ele pode começar em uma aplicação legada, um serviço administrativo, uma integração pouco monitorada ou um componente interno que compartilha infraestrutura com sistemas mais críticos.&lt;/li&gt;
  &lt;li&gt;O terceiro é o uso de IA como acelerador: o uso de LLMs não transforma automaticamente um operador comum em um ator avançado, mas reduz custo, acelera iteração e facilita a adaptação de tooling. Na prática, isso permite que grupos com capacidade intermediária produzam mais variações de payloads, testem hipóteses mais rapidamente e contornem obstáculos com menor dependência de conhecimento especializado profundo.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;ttps-observadas--mitre-attck&quot;&gt;TTPs observadas — MITRE ATT&amp;amp;CK&lt;/h2&gt;

&lt;p&gt;Descrição comportamental (TTPs) do grupo, não inclui IoCs (IPs, hashes, nomes de arquivos, caminhos internos ou nomes de vítimas).&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Tática&lt;/th&gt;
      &lt;th&gt;Técnica (ATT&amp;amp;CK)&lt;/th&gt;
      &lt;th&gt;Comportamento observado&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Desenvolvimento de Recursos (TA0042)&lt;/td&gt;
      &lt;td&gt;Obtain Capabilities: Tool (T1588.002)&lt;/td&gt;
      &lt;td&gt;Uso de exploits públicos prontos em conjunto com scripts próprios (assistida por IA / agêntica)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Desenvolvimento de Recursos (TA0042)&lt;/td&gt;
      &lt;td&gt;Develop Capabilities (T1587)&lt;/td&gt;
      &lt;td&gt;Geração de tooling, playbooks e relatórios assistida por IA / agêntica&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Acesso Inicial (TA0001)&lt;/td&gt;
      &lt;td&gt;Exploit Public-Facing Application (T1190)&lt;/td&gt;
      &lt;td&gt;Exploração em nível de aplicação contra serviços expostos (aplicações legadas e modernas)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Descoberta (TA0007)&lt;/td&gt;
      &lt;td&gt;Network Service Discovery (T1046)&lt;/td&gt;
      &lt;td&gt;Reconhecimento da rede interna, a partir do acesso obtido, contra serviços adjacentes&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Execução / Movimentação Lateral (TA0002 / TA0008)&lt;/td&gt;
      &lt;td&gt;Server-Side abuse → console de administração (T1190 → T1505.003)&lt;/td&gt;
      &lt;td&gt;Pivô para console de administração/deploy a fim de implantar código&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Persistência (TA0003)&lt;/td&gt;
      &lt;td&gt;Web Shell (T1505.003) + Masquerading (T1036)&lt;/td&gt;
      &lt;td&gt;Web shells disfarçados de endpoints legítimos da própria aplicação (health check)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Escalonamento de Privilégios (TA0004)&lt;/td&gt;
      &lt;td&gt;Escape to Host (T1611)&lt;/td&gt;
      &lt;td&gt;Acesso container-para-host por isolamento deficiente do contêiner&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Acesso a Credenciais (TA0006)&lt;/td&gt;
      &lt;td&gt;Credentials in Files / Private Keys (T1552.001 / .004)&lt;/td&gt;
      &lt;td&gt;Coleta de credenciais em arquivos de configuração e chaves, e de segredos expostos em artefatos&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Acesso a Credenciais (TA0006)&lt;/td&gt;
      &lt;td&gt;Steal Application Access Token (T1528)&lt;/td&gt;
      &lt;td&gt;Furto de tokens de acesso para reuso (replay)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Acesso a Credenciais (TA0006)&lt;/td&gt;
      &lt;td&gt;Brute Force: Password Cracking (T1110.002)&lt;/td&gt;
      &lt;td&gt;Quebra offline de hashes exfiltrados com wordlists contextuais&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Coleta (TA0009)&lt;/td&gt;
      &lt;td&gt;Email Collection (T1114)&lt;/td&gt;
      &lt;td&gt;Download em massa de caixas de e-mail e busca direcionada por credenciais de acesso remoto e de sistemas financeiros&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Evasão de Defesas (TA0005)&lt;/td&gt;
      &lt;td&gt;Account Manipulation (T1098)&lt;/td&gt;
      &lt;td&gt;Alteração do hash de senha de um administrador para um valor conhecido&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Comando e Controle (TA0011)&lt;/td&gt;
      &lt;td&gt;Non-Standard Port / Fallback Channels (T1571 / T1008)&lt;/td&gt;
      &lt;td&gt;Quando o tráfego egresso foi bloqueado: payloads blind, varredura de múltiplas portas e ajuste iterativo de canal&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Impacto (TA0040)&lt;/td&gt;
      &lt;td&gt;Financially-motivated targeting (intenção)&lt;/td&gt;
      &lt;td&gt;Foco em dados e credenciais de pagamento, crédito e banking&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;conclusão&quot;&gt;Conclusão&lt;/h2&gt;

&lt;p&gt;Essa investigação mostra um grupo com motivação financeira, foco setorial claro e capacidade de adaptar tooling conforme os controles encontrados no ambiente da vítima. O uso de IA aparece como um elemento de aceleração operacional, especialmente na criação e modificação de ferramentas ofensivas, mas não substitui os fundamentos tradicionais da intrusão: exploração de aplicação, coleta de credenciais, movimentação lateral, persistência e busca por impacto financeiro.&lt;/p&gt;

&lt;p&gt;Não publicaremos IoCs ou detalhes técnicos sensíveis neste momento. A decisão é intencional: preservar vantagem de inteligência, proteger vítimas potenciais e evitar que a infraestrutura ou os métodos observados sejam rapidamente alterados pelos operadores.&lt;/p&gt;

&lt;p&gt;Caso sua organização queira acesso ao relatório técnico detalhado, entre em contato conosco. Estamos sempre disponíveis para colaboração com times de segurança, resposta a incidentes e inteligência de ameaças.&lt;/p&gt;</content>
    <author>
      <name>LESIS Team</name>
    </author>
    <category term="Estudo de Caso" />
    <summary type="html">Investigação da LESIS identifica uma campanha maliciosa contra fintechs brasileiras de pequeno e médio porte, com uso de IA para acelerar tooling ofensivo, adaptação de payloads e apoio à exploração de aplicações.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Dependabot: automatizando a atualização de dependências no GitHub</title>
    <link href="https://blog.lesis.lat/blog/dependabot-automatizando-atualizacao-de-dependencias/" rel="alternate" type="text/html" title="Dependabot: automatizando a atualização de dependências no GitHub" />
    <published>2026-06-25T11:00:00+00:00</published>
    <updated>2026-06-25T11:00:00+00:00</updated>
    <id>https://blog.lesis.lat/blog/Dependabot-automatizando-a-atualiza%C3%A7%C3%A3o-de-depend%C3%AAncias-no-GitHub</id>
    <content type="html" xml:base="https://blog.lesis.lat/blog/dependabot-automatizando-atualizacao-de-dependencias/">&lt;p&gt;Manter dependências atualizadas é uma das tarefas mais negligenciadas no ciclo de vida de um projeto de software. Não por descuido ou desconhecimento, mas porque o trabalho cotidiano impõe prioridades mais visíveis: funcionalidades, correções de bugs, prazos. Dependências desatualizadas raramente geram sintomas imediatos. Os problemas que elas introduzem costumam aparecer tarde, e quando aparecem, o custo é alto.&lt;/p&gt;

&lt;p&gt;Foi partindo desse diagnóstico que decidimos configurar o Dependabot nos nossos repositórios. Este texto descreve o que é a ferramenta, como ela funciona, como fizemos a configuração e o que aprendemos no processo.&lt;/p&gt;

&lt;h2 id=&quot;o-problema-das-dependências&quot;&gt;O problema das dependências&lt;/h2&gt;

&lt;p&gt;Todo projeto de software moderno depende de bibliotecas externas. Essas bibliotecas, por sua vez, têm suas próprias dependências. À medida que o tempo passa, versões novas são publicadas, com correções de bugs, melhorias de desempenho e, principalmente, correções de vulnerabilidades de segurança.&lt;/p&gt;

&lt;p&gt;Quando uma vulnerabilidade é descoberta em uma biblioteca amplamente usada, ela pode receber um identificador CVE (Common Vulnerabilities and Exposures) e passar a ser registrada em bases públicas de vulnerabilidades e advisories. A partir desse momento, a falha deixa de ser apenas um risco teórico: ela passa a ser uma informação conhecida publicamente, inclusive por pessoas com intenção maliciosa. Projetos que ainda utilizam a versão vulnerável permanecem expostos até que a atualização seja feita.&lt;/p&gt;

&lt;p&gt;O problema é que acompanhar esse fluxo manualmente, em vários repositórios, com várias linguagens e gerenciadores de pacotes diferentes, é inviável na prática. Sem automação, esse processo tende a se tornar inconsistente, atrasado ou simplesmente esquecido.&lt;/p&gt;

&lt;h2 id=&quot;o-que-é-o-dependabot&quot;&gt;O que é o Dependabot&lt;/h2&gt;

&lt;p&gt;O Dependabot é uma ferramenta do GitHub que monitora as dependências dos repositórios e abre pull requests automaticamente quando identifica versões mais recentes ou vulnerabilidades conhecidas. Ele opera diretamente dentro da infraestrutura do GitHub, sem necessidade de instalação ou configuração de servidores externos.&lt;/p&gt;

&lt;p&gt;A ferramenta funciona em dois modos complementares. O primeiro é o monitoramento de segurança. Quando uma vulnerabilidade é registrada no GitHub Advisory Database e afeta uma dependência presente no projeto, o GitHub pode gerar um alerta no repositório. Quando os security updates estão habilitados, o Dependabot pode abrir automaticamente um pull request com a versão corrigida ou com uma atualização que remova a exposição identificada.&lt;/p&gt;

&lt;p&gt;O segundo modo é a atualização de versão. Independentemente de vulnerabilidades, o Dependabot verifica periodicamente se há versões mais recentes das dependências e propõe as atualizações de forma automatizada.&lt;/p&gt;

&lt;p&gt;Em ambos os casos, o resultado é um pull request que o time pode revisar, testar e aprovar. A decisão final permanece com as pessoas. O que muda é que o trabalho de monitoramento e de preparação da atualização deixa de ser manual.&lt;/p&gt;

&lt;h2 id=&quot;como-configurar&quot;&gt;Como configurar&lt;/h2&gt;

&lt;p&gt;A configuração do Dependabot é feita por meio de um arquivo chamado &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dependabot.yml&lt;/code&gt;, que deve estar dentro da pasta &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.github&lt;/code&gt; do repositório.&lt;/p&gt;

&lt;p&gt;Um exemplo básico para projetos que usam npm é:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;package-ecosystem&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;npm&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;directory&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;schedule&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;interval&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;weekly&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Esse arquivo instrui o Dependabot a verificar, uma vez por semana, as dependências npm declaradas na raiz do projeto. A partir dessa configuração, a ferramenta passa a acompanhar novas versões disponíveis e pode abrir pull requests automaticamente quando houver atualizações.&lt;/p&gt;

&lt;p&gt;Em repositórios com muitas dependências, uma configuração um pouco mais controlada pode ser mais adequada:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;package-ecosystem&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;npm&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;directory&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;schedule&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;interval&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;weekly&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;day&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;monday&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;09:00&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;timezone&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;America/Sao_Paulo&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;open-pull-requests-limit&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Nesse caso, além de definir a frequência, também especificamos o dia, o horário e o fuso horário da verificação. O parâmetro &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;open-pull-requests-limit&lt;/code&gt; ajuda a controlar o volume de pull requests abertos ao mesmo tempo, evitando que a primeira execução da ferramenta gere mais trabalho do que o time consegue revisar.&lt;/p&gt;

&lt;p&gt;A configuração também aceita variações relevantes: é possível ignorar pacotes específicos, definir labels, configurar mensagens de commit, agrupar atualizações e declarar múltiplos ecossistemas dentro de um mesmo repositório, caso o projeto utilize linguagens ou gerenciadores de pacotes diferentes em pastas distintas.&lt;/p&gt;

&lt;p&gt;No caso do blog da LESIS, por exemplo, a configuração precisou contemplar mais de um ecossistema. Além das dependências Ruby gerenciadas pelo Bundler, também configuramos o Dependabot para acompanhar atualizações dos workflows do GitHub Actions:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;updates&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;package-ecosystem&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;bundler&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;directory&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;schedule&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;interval&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;weekly&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;day&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;monday&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;03:00&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;timezone&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;America/Sao_Paulo&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;open-pull-requests-limit&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;labels&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;dependencies&quot;&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;ruby&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;commit-message&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;prefix&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;chore(deps)&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;prefix-development&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;chore(deps-dev)&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;scope&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;groups&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;dependency-type&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;production&quot;&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;update-types&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;minor&quot;&lt;/span&gt;
          &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;patch&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;production-major&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;dependency-type&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;production&quot;&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;update-types&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;major&quot;&lt;/span&gt;

  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;package-ecosystem&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;github-actions&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;directory&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;schedule&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;interval&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;weekly&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;day&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;monday&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;04:00&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;timezone&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;America/Sao_Paulo&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;open-pull-requests-limit&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;labels&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;dependencies&quot;&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;github-actions&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;commit-message&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;prefix&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;ci&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;scope&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;groups&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;minor-patch&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;update-types&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;minor&quot;&lt;/span&gt;
          &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;patch&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;major&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;update-types&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;major&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Nesse exemplo, o &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundler&lt;/code&gt; monitora as gems do projeto, enquanto &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;github-actions&lt;/code&gt; monitora as actions utilizadas nos workflows do repositório. A configuração também define labels específicas para cada ecossistema, prefixos de commit e agrupamentos de atualização.&lt;/p&gt;

&lt;p&gt;Os agrupamentos ajudam a organizar o volume de pull requests. No caso das dependências de produção, por exemplo, atualizações &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;minor&lt;/code&gt; e &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;patch&lt;/code&gt; podem ser agrupadas separadamente das atualizações &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;major&lt;/code&gt;, que tendem a exigir mais atenção durante a revisão. O mesmo raciocínio foi aplicado às atualizações do GitHub Actions.&lt;/p&gt;

&lt;p&gt;Quando a tarefa foi atribuída, o ponto de partida foi o estudo da ferramenta. O Dependabot não era algo familiar até então, então antes de qualquer configuração foi necessário entender como funcionava, o que ele monitorava e quais eram as opções disponíveis. Esse tempo de estudo foi necessário e valeu a pena: a configuração em si, depois de compreender a ferramenta, foi direta. A documentação do GitHub cobre os casos mais comuns com clareza, e os primeiros pull requests gerados automaticamente apareceram logo após a adição do arquivo.&lt;/p&gt;

&lt;h2 id=&quot;limitações-que-encontramos&quot;&gt;Limitações que encontramos&lt;/h2&gt;

&lt;p&gt;Um aprendizado importante do processo foi que o Dependabot não oferece suporte a todos os gerenciadores de pacotes. Em nosso caso, alguns projetos utilizam CPAN, o gerenciador de dependências do Perl, que não está na lista de ecossistemas suportados pela ferramenta. Nesses repositórios, o monitoramento automatizado não é possível com o Dependabot, e o acompanhamento precisa ser feito por outros meios.&lt;/p&gt;

&lt;p&gt;Para projetos Perl, o &lt;a href=&quot;https://github.com/lesis-lat/bunkai&quot;&gt;Bunkai&lt;/a&gt;, uma ferramenta de análise de composição de software desenvolvida pela LESIS, cobre parte dessa lacuna ao identificar dependências desatualizadas e vulnerabilidades conhecidas em projetos que usam CPAN.&lt;/p&gt;

&lt;p&gt;Além disso, vale mencionar que o Dependabot não é a única ferramenta disponível para esse tipo de automação. Uma alternativa livre bastante conhecida é o &lt;a href=&quot;https://github.com/renovatebot/renovate&quot;&gt;Renovate&lt;/a&gt;, uma ferramenta open source para atualização automatizada de dependências. Assim como o Dependabot, o Renovate identifica dependências desatualizadas e pode abrir pull requests com as atualizações necessárias.&lt;/p&gt;

&lt;p&gt;O Renovate pode ser especialmente interessante para equipes que não utilizam GitHub, já que foi projetado para funcionar em diferentes plataformas de hospedagem de código, como GitLab, Bitbucket, Azure DevOps, Forgejo e Gitea. Ele também costuma ser uma opção considerada quando o projeto exige maior flexibilidade de configuração, políticas de atualização mais específicas ou fluxos mais customizados.&lt;/p&gt;

&lt;p&gt;No nosso caso, o Dependabot foi uma escolha natural por já estar integrado ao GitHub e exigir pouca configuração inicial. Ainda assim, para projetos fora do ecossistema do GitHub ou com necessidades mais complexas de automação, o Renovate é uma alternativa que vale ser avaliada.&lt;/p&gt;

&lt;p&gt;Antes de configurar a ferramenta, vale verificar se os gerenciadores de pacotes utilizados no projeto estão entre os suportados. A lista oficial de ecossistemas compatíveis está disponível na documentação do GitHub e cobre os casos mais comuns, como npm, pip, Maven, Gradle, Composer e RubyGems, entre outros, mas não é universal.&lt;/p&gt;

&lt;p&gt;Outro ponto que merece atenção é o volume inicial de pull requests. Em repositórios com muitas dependências que não foram atualizadas há algum tempo, a primeira execução do Dependabot pode gerar um número expressivo de propostas ao mesmo tempo. Isso pode sobrecarregar o fluxo de revisão se não houver um limite configurado. O parâmetro &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;open-pull-requests-limit&lt;/code&gt;, no arquivo de configuração, permite controlar esse comportamento.&lt;/p&gt;

&lt;h2 id=&quot;por-que-isso-importa&quot;&gt;Por que isso importa&lt;/h2&gt;

&lt;p&gt;A gestão de dependências não é apenas uma questão de organização interna. É uma questão de segurança com consequências externas. Bibliotecas desatualizadas são um vetor de ataque documentado e explorado ativamente. A diferença entre um projeto vulnerável e um projeto mais seguro, em muitos casos, está na existência de um processo que mantenha as dependências monitoradas e atualizadas.&lt;/p&gt;

&lt;p&gt;O Dependabot não substitui uma postura de segurança abrangente, mas resolve uma parte específica do problema de forma confiável e com baixo custo de configuração. Ele transforma uma tarefa que tenderia a ser esquecida em um processo contínuo, auditável e integrado ao fluxo normal de trabalho do time.&lt;/p&gt;

&lt;h2 id=&quot;conclusão&quot;&gt;Conclusão&lt;/h2&gt;

&lt;p&gt;A experiência de configurar o Dependabot nos nossos repositórios foi positiva. O esforço inicial é pequeno, a integração com o GitHub é nativa, e o resultado, dependências monitoradas de forma contínua, justifica com folga o tempo investido.&lt;/p&gt;

&lt;p&gt;As limitações existem e devem ser conhecidas antes de criar expectativas. Nem todos os ecossistemas são suportados, e o volume de pull requests pode exigir ajuste fino na configuração. Mas, para os repositórios compatíveis, a ferramenta entrega exatamente o que promete.&lt;/p&gt;

&lt;p&gt;Mais do que uma conveniência, manter dependências atualizadas é uma responsabilidade. A automação não elimina essa responsabilidade; ela ajuda a garantir que ela seja cumprida de forma consistente.&lt;/p&gt;

&lt;h2 id=&quot;referências&quot;&gt;Referências&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/code-security/dependabot&quot;&gt;Dependabot documentation - GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem&quot;&gt;Supported package ecosystems - GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/advisories&quot;&gt;GitHub Advisory Database&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cve.org/&quot;&gt;Common Vulnerabilities and Exposures - CVE&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/lesis-lat/bunkai&quot;&gt;Bunkai - SCA tool for Perl&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/renovatebot/renovate&quot;&gt;Renovate - Automated dependency update tool&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
    <author>
      <name>Maria Eduarda</name>
    </author>
    <category term="Guias" />
    <summary type="html">Entenda como o Dependabot automatiza o monitoramento de vulnerabilidades e a atualização de dependências diretamente no GitHub.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Escolhendo o método correto para compartilhar identificadores</title>
    <link href="https://blog.lesis.lat/blog/escolhendo-o-metodo-correto-para-compartilhar-identificadores/" rel="alternate" type="text/html" title="Escolhendo o método correto para compartilhar identificadores" />
    <published>2026-05-05T11:00:00+00:00</published>
    <updated>2026-05-05T11:00:00+00:00</updated>
    <id>https://blog.lesis.lat/blog/escolhendo-o-metodo-correto-para-compartilhar-identificadores</id>
    <content type="html" xml:base="https://blog.lesis.lat/blog/escolhendo-o-metodo-correto-para-compartilhar-identificadores/">&lt;h3 id=&quot;introdução&quot;&gt;Introdução&lt;/h3&gt;

&lt;p&gt;Alguns problemas de segurança aparecem justamente quando duas empresas legítimas querem colaborar.&lt;/p&gt;

&lt;p&gt;Imagine uma instituição financeira digital com uma base muito grande de clientes e um marketplace preparando uma promoção exclusiva para clientes dessa instituição. O marketplace precisa saber, durante a campanha, quais pessoas também são clientes da instituição financeira para aplicar o benefício corretamente.&lt;/p&gt;

&lt;p&gt;O problema parece simples: uma empresa tem a lista de clientes elegíveis, a outra tem sua própria base de usuários, e a promoção deve valer apenas para a interseção entre as duas bases.&lt;/p&gt;

&lt;p&gt;Mas existe uma pergunta importante: como permitir essa comparação sem expor mais dados pessoais do que o necessário?&lt;/p&gt;

&lt;h3 id=&quot;o-cenário&quot;&gt;O cenário&lt;/h3&gt;

&lt;p&gt;A necessidade de negócio era direta: uma campanha promocional deveria ser oferecida por um parceiro comercial apenas para clientes da instituição financeira.&lt;/p&gt;

&lt;p&gt;Como a instituição financeira tinha uma base de clientes maior do que a base do parceiro, simplesmente enviar todos os CPFs de seus clientes para o parceiro permitiria a comparação, mas exporia muito mais pessoas do que o necessário.&lt;/p&gt;

&lt;p&gt;A primeira proposta do time responsável pela integração era criptografar um arquivo contendo todos os CPFs dos clientes elegíveis e transmiti-lo por um canal seguro. O parceiro receberia o arquivo, descriptografaria, compararia com sua própria base e identificaria quais usuários eram elegíveis.&lt;/p&gt;

&lt;p&gt;Do ponto de vista de transporte, isso parece razoável. O arquivo estaria protegido durante o envio. O canal poderia ser autenticado. O acesso poderia ser restrito.&lt;/p&gt;

&lt;p&gt;Mas o problema principal não era apenas transporte. O problema era minimização.&lt;/p&gt;

&lt;p&gt;Ao final do processo, o parceiro teria acesso a uma lista completa de CPFs de clientes da instituição financeira, inclusive pessoas que talvez nem tivessem conta no marketplace, nunca participassem da campanha ou nunca precisassem ser conhecidas pelo parceiro. A criptografia protegeria o arquivo no caminho, mas não reduziria o dado revelado ao destinatário.&lt;/p&gt;

&lt;h3 id=&quot;criptografia-resolve-outro-problema&quot;&gt;Criptografia resolve outro problema&lt;/h3&gt;

&lt;p&gt;Criptografia é uma ferramenta de confidencialidade. Ela protege dados contra quem não deve acessá-los durante armazenamento ou transmissão. Se um arquivo criptografado é interceptado por alguém sem a chave, o conteúdo permanece protegido.&lt;/p&gt;

&lt;p&gt;Mas, em muitos fluxos de integração, o destinatário legítimo precisa abrir o arquivo. Depois que ele descriptografa o conteúdo, passa a enxergar os valores originais.&lt;/p&gt;

&lt;p&gt;Nesse caso, criptografia respondia à pergunta:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Como enviar a lista de CPFs sem que terceiros leiam o arquivo no caminho?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Mas havia uma segunda pergunta que ainda precisava ser respondida:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Como permitir que o parceiro descubra apenas quais clientes já existem na própria base, sem receber a lista completa da instituição financeira?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Essas perguntas parecem parecidas, mas são problemas diferentes. A primeira é sobre confidencialidade em trânsito e continuava sendo necessária. A segunda é sobre minimização de dados e exposição ao destinatário. O ponto não era substituir criptografia, mas reconhecer que ela precisava ser combinada com um desenho que revelasse menos informação.&lt;/p&gt;

&lt;h3 id=&quot;onde-hashes-ajudam&quot;&gt;Onde hashes ajudam&lt;/h3&gt;

&lt;p&gt;Um hash criptográfico transforma uma entrada em uma saída de tamanho fixo. Para a mesma entrada, o resultado é sempre o mesmo. Para entradas diferentes, espera-se que os resultados sejam diferentes. Bons algoritmos de hash também tornam impraticável recuperar a entrada original a partir da saída, desde que a entrada tenha entropia suficiente.&lt;/p&gt;

&lt;p&gt;Essa propriedade determinística permite comparação sem transmitir o valor original.&lt;/p&gt;

&lt;p&gt;Por exemplo, em vez de compartilhar:&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;123.456.789-10
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;uma empresa poderia compartilhar:&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sha256(&quot;12345678910&quot;) = 01b6...f3a9
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Se o parceiro normalizar seus próprios CPFs da mesma forma e calcular o mesmo hash, ele pode comparar os hashes. Quando houver igualdade, existe um CPF em comum.&lt;/p&gt;

&lt;p&gt;O ganho de privacidade é intuitivo: em vez de revelar diretamente os CPFs, as empresas comparam representações derivadas. O parceiro só deveria conseguir reconhecer os CPFs que já conhece, porque precisa ter o valor original em sua própria base para gerar o mesmo hash.&lt;/p&gt;

&lt;p&gt;Essa ideia é útil, mas há uma armadilha importante.&lt;/p&gt;

&lt;h3 id=&quot;cpf-é-enumerável&quot;&gt;CPF é enumerável&lt;/h3&gt;

&lt;p&gt;Desenvolvedores muitas vezes aprendem hash no contexto de senhas. Nesse contexto, a entrada idealmente é secreta, escolhida pelo usuário e difícil de adivinhar. Mesmo assim, senhas exigem algoritmos específicos como Argon2, bcrypt ou scrypt, além de salt, custo computacional e boas políticas de armazenamento.&lt;/p&gt;

&lt;p&gt;CPF é diferente.&lt;/p&gt;

&lt;p&gt;CPF tem formato conhecido, quantidade limitada de combinações e dígitos verificadores. Isso significa que um atacante pode gerar muitos CPFs candidatos, calcular seus hashes e comparar com uma lista vazada. Esse é o princípio de ataques por dicionário ou rainbow table.&lt;/p&gt;

&lt;p&gt;Por isso, a seguinte abordagem é fraca:&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sha256(cpf_normalizado)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Ela não revela o CPF de forma direta, mas também não deve ser tratada como anonimização. Para identificadores previsíveis, hash simples costuma ser reversível por força bruta ou pré-computação.&lt;/p&gt;

&lt;p&gt;Esse ponto é essencial: hash não é mágica. A segurança depende tanto do algoritmo quanto da natureza da entrada.&lt;/p&gt;

&lt;h3 id=&quot;normalização-importa&quot;&gt;Normalização importa&lt;/h3&gt;

&lt;p&gt;Antes de qualquer comparação, os dois lados precisam chegar exatamente à mesma representação do identificador.&lt;/p&gt;

&lt;p&gt;No caso de CPF, isso normalmente significa remover pontuação, validar comprimento, preservar zeros à esquerda e rejeitar valores inválidos ou malformados. Caso contrário, o mesmo CPF pode produzir hashes diferentes:&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;123.456.789-10
12345678910
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Essas duas strings têm aparência equivalente para uma pessoa, mas são entradas diferentes para um algoritmo de hash.&lt;/p&gt;

&lt;p&gt;Toda estratégia de comparação precisa documentar a normalização antes de documentar o algoritmo. Sem isso, o processo produz falsos negativos, inconsistência operacional e dificuldades de auditoria.&lt;/p&gt;

&lt;h3 id=&quot;salt-nem-sempre-resolve&quot;&gt;Salt nem sempre resolve&lt;/h3&gt;

&lt;p&gt;Uma reação comum é adicionar salt:&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sha256(salt || cpf_normalizado)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Em armazenamento de senhas, salt é fundamental porque impede que o mesmo valor gere o mesmo hash em bases diferentes e dificulta tabelas pré-computadas genéricas. Mas, em um processo de comparação entre duas empresas, as duas partes precisam gerar o mesmo resultado para o mesmo CPF.&lt;/p&gt;

&lt;p&gt;Se cada empresa usar um salt diferente, os hashes não baterão. Se o salt for compartilhado entre as empresas, ele ajuda contra algumas tabelas pré-computadas externas, mas não impede que uma parte com acesso ao salt enumere CPFs candidatos e calcule seus hashes.&lt;/p&gt;

&lt;p&gt;Salt é útil, mas não resolve sozinho o problema de identificadores previsíveis em uma integração de matching.&lt;/p&gt;

&lt;h3 id=&quot;hmac-com-api-como-caminho-pragmático&quot;&gt;HMAC com API como caminho pragmático&lt;/h3&gt;

&lt;p&gt;Uma alternativa melhor do que hash simples é usar HMAC:&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;hmac_sha256(chave_secreta, cpf_normalizado)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;HMAC usa uma chave secreta no cálculo. Sem a chave, um terceiro que obtenha a lista de HMACs não consegue calcular facilmente os valores correspondentes para CPFs candidatos. Isso reduz bastante o risco de ataques offline por terceiros.&lt;/p&gt;

&lt;p&gt;Mas há uma questão de desenho. Se a chave for compartilhada com o parceiro para que ele calcule HMACs sobre a própria base, ele também consegue calcular HMACs para CPFs candidatos por conta própria. Isso pode ser aceitável em alguns cenários, desde que a chave seja específica para a campanha, tenha rotação, escopo limitado e controles de auditoria, mas muda o modelo de confiança.&lt;/p&gt;

&lt;p&gt;Um caminho pragmático seria combinar HMAC com uma API controlada pela instituição financeira. Nesse desenho, o marketplace prepara a própria base, normaliza os CPFs, calcula os identificadores derivados conforme a especificação da campanha e envia um lote para a API. A instituição financeira compara esses valores contra uma representação equivalente da própria base e devolve apenas o resultado necessário para a campanha. Esse resultado não precisa ser uma nova lista de CPFs. Pode ser uma marcação de elegibilidade associada aos usuários do próprio marketplace.&lt;/p&gt;

&lt;p&gt;Um exemplo simples seria:&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Marketplace envia:
user_id=10, hmac_cpf=aaa
user_id=20, hmac_cpf=bbb
user_id=30, hmac_cpf=ccc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Após a comparação, a API poderia responder:&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;user_id=10, eligible=true
user_id=20, eligible=false
user_id=30, eligible=true
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Com isso, o marketplace consegue aplicar a campanha dentro da própria base, mas não recebe a lista completa de CPFs da instituição financeira. O CPF é usado como chave técnica de comparação, mas o resultado operacional é uma marcação de elegibilidade.&lt;/p&gt;

&lt;p&gt;Essa abordagem muda o problema para um modelo de consulta controlada. Se a API permite testar CPFs arbitrários, mesmo que com autenticação e HMAC, ela pode virar um oráculo de elegibilidade. Por isso, esse tipo de solução precisa de controles adicionais: aceitar apenas lotes associados à base declarada do parceiro, limitar reprocessamentos, auditar consultas, impor janelas de campanha e definir claramente o que é permitido testar. Em outras palavras, HMAC e API podem formar uma solução prática, mas a garantia passa a depender de governança e controle operacional. Para cenários que exigem uma garantia técnica mais forte sobre o que cada parte aprende, existe uma abordagem mais sofisticada.&lt;/p&gt;

&lt;h3 id=&quot;uma-alternativa-mais-sofisticada-interseção-privada-de-conjuntos&quot;&gt;Uma alternativa mais sofisticada: interseção privada de conjuntos&lt;/h3&gt;

&lt;p&gt;Uma alternativa mais sofisticada para esse tipo de problema é conhecida como interseção privada de conjuntos, ou Private Set Intersection (PSI).&lt;/p&gt;

&lt;p&gt;Em termos simples, PSI é uma família de protocolos criptográficos que permite que duas partes comparem conjuntos e descubram uma interseção sem compartilhar os conjuntos em claro. A ideia não é “criptografar uma lista e entregar para o outro lado”. A ideia é executar um processo em que cada parte mantém seu conjunto e participa de uma comparação protocolada.&lt;/p&gt;

&lt;p&gt;Um exemplo pequeno ajuda a visualizar o objetivo. Suponha que a instituição financeira tenha os CPFs &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;111&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;222&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;333&lt;/code&gt; e &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;444&lt;/code&gt;. O parceiro tem os CPFs &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;222&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;444&lt;/code&gt; e &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;555&lt;/code&gt;. O resultado necessário para a campanha é saber que &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;222&lt;/code&gt; e &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;444&lt;/code&gt; estão nos dois conjuntos. O parceiro não precisa aprender que &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;111&lt;/code&gt; e &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;333&lt;/code&gt; existem na base da instituição financeira. A instituição financeira também não precisa aprender que &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;555&lt;/code&gt; existe na base do parceiro, a menos que o desenho do protocolo ou da campanha exija isso.&lt;/p&gt;

&lt;p&gt;Em uma comparação comum usando arquivo, uma das partes recebe uma lista e faz a interseção localmente. Isso é simples, mas obriga essa parte a enxergar valores que não fazem parte do resultado final. Em uma API de consulta, por outro lado, a instituição financeira pode evitar entregar sua base inteira ao marketplace, mas passa a observar o lote que o marketplace está consultando. Isso pode ser aceitável. Mas, se o requisito também for reduzir o que a instituição financeira aprende sobre a base do marketplace, uma API centralizada pode não ser suficiente.&lt;/p&gt;

&lt;p&gt;Existem diferentes formas de implementar PSI. Algumas usam criptografia de chave pública, outras usam oblivious transfer, circuitos garbled ou construções baseadas em hashing e chaves efêmeras. O detalhe matemático muda conforme o protocolo, mas o objetivo de segurança permanece: permitir matching entre conjuntos sem transformar uma integração em compartilhamento amplo de base.&lt;/p&gt;

&lt;p&gt;Também é importante observar que PSI não define apenas “como comparar”. Ele ajuda a definir “quem aprende o quê”. Em alguns desenhos, as duas partes aprendem a interseção. Em outros, apenas uma parte aprende quais usuários são elegíveis. Para o caso da promoção, esse segundo modelo faz mais sentido: o marketplace precisa aplicar o benefício dentro da própria base, enquanto a instituição financeira não precisa necessariamente aprender quais clientes também estão no marketplace.&lt;/p&gt;

&lt;p&gt;Aplicado ao caso da promoção, o resultado desejado talvez não fosse uma nova lista de CPFs compartilhada entre empresas. Poderia ser apenas uma forma de o parceiro marcar, dentro da própria base, quais usuários são elegíveis. Essa distinção reduz exposição porque mantém o foco no resultado operacional da campanha, não na circulação de identificadores.&lt;/p&gt;

&lt;p&gt;PSI, porém, não elimina todos os riscos. Se uma parte puder escolher livremente o conjunto de entrada, ela ainda pode tentar testar identificadores que não pertencem à sua base legítima. Por isso, PSI não substitui contrato, auditoria, controles de escopo e validação do processo. O que ele melhora é outro ponto: reduz a necessidade de uma parte entregar sua base inteira em claro, e pode reduzir também o quanto a outra parte observa durante a comparação.&lt;/p&gt;

&lt;p&gt;Na prática, PSI é mais complexo do que uma API com HMAC. Ele exige biblioteca adequada, entendimento do protocolo, cuidado com normalização, tratamento de erros, auditoria, testes de performance e avaliação do que cada parte aprende durante o processo. Nem todo caso exige esse nível de sofisticação. Mas ele deve ser considerado quando o requisito não é apenas evitar que o marketplace receba a base inteira da instituição financeira, mas também reduzir o quanto a instituição financeira aprende sobre o conjunto do marketplace durante o matching.&lt;/p&gt;

&lt;h3 id=&quot;uma-hierarquia-prática-de-soluções&quot;&gt;Uma hierarquia prática de soluções&lt;/h3&gt;

&lt;p&gt;Nem toda integração precisa do mesmo nível de proteção. Uma forma pragmática de pensar é organizar as opções por redução de exposição.&lt;/p&gt;

&lt;p&gt;Um arquivo com CPFs criptografado em trânsito protege contra interceptação, mas revela a lista completa ao destinatário. É simples, mas fraco em minimização.&lt;/p&gt;

&lt;p&gt;Hash simples dos CPFs evita exposição direta casual, mas é vulnerável a enumeração porque CPF é previsível. Não deve ser tratado como anonimização.&lt;/p&gt;

&lt;p&gt;HMAC com chave controlada melhora a proteção contra terceiros e vazamentos da lista derivada, mas exige governança forte sobre a chave. Em vez de compartilhar a chave com o parceiro, uma API autenticada usando HMAC pode ser uma alternativa prática quando o objetivo é responder elegibilidade sem entregar a base inteira da instituição financeira, desde que não permita consultas arbitrárias sem controle.&lt;/p&gt;

&lt;p&gt;PSI ou um protocolo equivalente é uma opção mais sofisticada quando também há interesse em reduzir o que a instituição financeira aprende sobre o conjunto consultado pelo marketplace, além de evitar a entrega da base inteira ao parceiro.&lt;/p&gt;

&lt;p&gt;Essa hierarquia ajuda a explicar por que a resposta inicial de “vamos criptografar o arquivo” era insuficiente. A pergunta não era apenas como transportar dados com segurança. A pergunta era quanto dado precisava ser revelado para atingir o objetivo.&lt;/p&gt;

&lt;h3 id=&quot;conclusão&quot;&gt;Conclusão&lt;/h3&gt;

&lt;p&gt;Uma revisão de segurança para esse tipo de compartilhamento deve começar por perguntas simples. Antes de escolher algoritmo, é necessário entender qual é o objetivo exato da comparação, quem precisa aprender o resultado e qual formato esse resultado precisa ter. O resultado precisa ser uma lista de CPFs, uma lista de usuários elegíveis, um booleano por usuário ou apenas uma contagem agregada?&lt;/p&gt;

&lt;p&gt;Também é preciso avaliar quais dados de pessoas fora da interseção seriam expostos pela solução proposta. Essa é uma pergunta central, porque uma solução pode parecer segura por usar criptografia e ainda assim revelar um conjunto muito maior do que o necessário ao destinatário legítimo.&lt;/p&gt;

&lt;p&gt;Outro ponto importante é a natureza do identificador usado. Se o identificador é previsível ou tem baixa entropia, hash simples não deve ser tratado como proteção forte. A existência de normalização documentada também precisa ser verificada, porque pequenas diferenças de formato podem quebrar a comparação ou criar exceções difíceis de auditar.&lt;/p&gt;

&lt;p&gt;Por fim, a revisão deve cobrir quem controla chaves, salts ou segredos, se o processo é auditável e reexecutável, e se existe retenção limitada dos arquivos intermediários e resultados. Essas perguntas evitam que a discussão fique limitada a “o arquivo está criptografado?”. Segurança do transporte importa, mas minimização, finalidade, retenção e modelo de confiança importam tanto quanto.&lt;/p&gt;

&lt;p&gt;Criptografia, hash, HMAC, APIs e PSI são ferramentas diferentes para problemas diferentes. A decisão correta depende menos da familiaridade com uma técnica específica e mais do que cada parte precisa aprender durante o processo.&lt;/p&gt;

&lt;p&gt;O aprendizado principal desse caso é que “transmitir com segurança” não é o mesmo que “revelar o mínimo necessário”. Em integrações entre empresas, especialmente envolvendo identificadores pessoais, a arquitetura deve começar pela minimização: quem precisa saber o quê, por quanto tempo, e com qual garantia técnica?&lt;/p&gt;

&lt;p&gt;Às vezes, a melhor solução não é criptografar melhor o arquivo. É evitar que o arquivo exista daquele jeito.&lt;/p&gt;

&lt;h3 id=&quot;referências&quot;&gt;Referências&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Cryptographic_hash_function&quot;&gt;Cryptographic hash function - Wikipedia&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/HMAC&quot;&gt;Hash-based message authentication code - Wikipedia&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Private_set_intersection&quot;&gt;Private set intersection - Wikipedia&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://csrc.nist.gov/pubs/sp/800/107/r1/final&quot;&gt;NIST SP 800-107 Rev. 1 - Recommendation for Applications Using Approved Hash Algorithms&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Estudo de Caso" />
    <summary type="html">Como escolher entre criptografia, hash, HMAC e PSI ao comparar bases com identificadores pessoais.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Orientações para ofuscação e mascaramento de PII</title>
    <link href="https://blog.lesis.lat/blog/orientacoes-para-ofuscacao-e-mascaramento-de-pii/" rel="alternate" type="text/html" title="Orientações para ofuscação e mascaramento de PII" />
    <published>2026-05-04T13:00:00+00:00</published>
    <updated>2026-05-04T13:00:00+00:00</updated>
    <id>https://blog.lesis.lat/blog/orientations-for-pii-obfuscation-masking</id>
    <content type="html" xml:base="https://blog.lesis.lat/blog/orientacoes-para-ofuscacao-e-mascaramento-de-pii/">&lt;h3 id=&quot;introdução&quot;&gt;Introdução&lt;/h3&gt;

&lt;p&gt;Muitas aplicações lidam com informações pessoais identificáveis, conhecidas pela sigla PII: nomes, endereços, e-mails, telefones, documentos, identificadores de dispositivo e outros dados capazes de identificar uma pessoa direta ou indiretamente.&lt;/p&gt;

&lt;p&gt;Quando essas informações aparecem em telas de aplicação, logs, relatórios, ferramentas de suporte, notificações ou ambientes não produtivos, o sistema deve evitar expor mais do que o usuário ou operador realmente precisa. Uma forma comum de reduzir essa exposição é mascarar ou ofuscar parte do valor.&lt;/p&gt;

&lt;p&gt;Essa prática é familiar. Um fluxo de recuperação de senha pode mostrar apenas parte de um e-mail. Um painel de suporte pode exibir somente os últimos dígitos de um telefone. Uma interface bancária pode mostrar um identificador fiscal parcialmente oculto. Ainda assim, os detalhes costumam ser inconsistentes. Sistemas diferentes escolhem caracteres visíveis diferentes, quantidades diferentes e formatos diferentes.&lt;/p&gt;

&lt;p&gt;Essa inconsistência importa. Se a mesma PII é mascarada de formas diferentes em várias aplicações, cada aplicação pode revelar um fragmento diferente. Um atacante capaz de acionar ou observar esses fluxos pode combinar os fragmentos e reconstruir o valor original.&lt;/p&gt;

&lt;p&gt;Este artigo propõe orientações práticas para mascarar campos comuns de PII. O objetivo não é definir um padrão legal universal, mas fornecer uma base técnica para pessoas de engenharia, segurança e produto que precisam de comportamento consistente ao exibir ou processar dados pessoais.&lt;/p&gt;

&lt;h3 id=&quot;ofuscação-mascaramento-e-anonimização&quot;&gt;Ofuscação, mascaramento e anonimização&lt;/h3&gt;

&lt;p&gt;Os termos costumam ser usados como sinônimos, mas não significam a mesma coisa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mascaramento&lt;/strong&gt; é a substituição de parte de um valor por um marcador fixo, normalmente para ocultar caracteres sensíveis enquanto preserva contexto suficiente para reconhecimento. Por exemplo, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;user.name@example.com&lt;/code&gt; pode se tornar &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;u*******e@e*****e.com&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ofuscação&lt;/strong&gt; é uma prática mais ampla de tornar dados mais difíceis de entender ou interpretar. Mascaramento é um tipo de ofuscação, mas nem toda ofuscação é mascaramento. Ofuscação também pode incluir tokenização, redação, truncamento ou transformações que preservam formato.&lt;/p&gt;

&lt;p&gt;Um exemplo de ofuscação que não é apenas mascaramento é substituir um e-mail por um identificador opaco. Em vez de exibir &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;heitor.gouvea@lesis.lat&lt;/code&gt; como &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;h***********a@l***s.lat&lt;/code&gt;, o sistema poderia exibir &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;user_8f3a91&lt;/code&gt;. Nesse caso, o valor original não aparece parcialmente. Ele foi substituído por um identificador opaco. Isso pode ser tokenização ou pseudonimização, dependendo de como o mapeamento com o valor original é mantido.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonimização&lt;/strong&gt; significa transformar dados para que uma pessoa não possa mais ser identificada, direta ou indiretamente, usando meios razoavelmente disponíveis. Mascaramento parcial não deve ser tratado como anonimização por padrão. Um e-mail ou telefone mascarado ainda pode ser associado a uma pessoa, especialmente quando combinado com outros dados.&lt;/p&gt;

&lt;p&gt;Na prática, o mascaramento é mais útil como controle de minimização de dados. Ele reduz exposição desnecessária. Ele não substitui criptografia, controle de acesso, trilhas de auditoria, limites de retenção ou descarte seguro.&lt;/p&gt;

&lt;h3 id=&quot;por-que-consistência-importa&quot;&gt;Por que consistência importa&lt;/h3&gt;

&lt;p&gt;Considere uma pessoa que usa o mesmo alias público em várias redes sociais. Um atacante quer descobrir o e-mail associado a esse alias. Ele não consegue ver o e-mail completo, mas consegue acionar fluxos de recuperação de senha em várias plataformas.&lt;/p&gt;

&lt;p&gt;Se cada plataforma mascara o e-mail de uma forma diferente, o atacante pode receber fragmentos como estes:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Plataforma&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;E-mail mascarado&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Instagram&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;h***********a@g***l.com&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Twitter&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*************@gmail.com&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;LinkedIn&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*******ouvea@gm********&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Facebook&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hei**********@gma***om&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Telegram&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*****r.******ea@g*****.com&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;img src=&quot;/assets/publications/pii-obfuscation/email-reconstruction-pt.svg&quot; alt=&quot;Diagrama de reconstrução de e-mail a partir de fragmentos mascarados&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;content-caption&quot;&gt;&lt;strong&gt;Figura 1:&lt;/strong&gt; fragmentos de um mesmo e-mail revelados por diferentes regras de mascaramento podem ser combinados para reconstruir o valor original.&lt;/p&gt;

&lt;p&gt;Individualmente, cada fragmento pode parecer inofensivo. Juntos, eles podem revelar estrutura suficiente para reconstruir o endereço.&lt;/p&gt;

&lt;p&gt;O mesmo problema pode acontecer dentro de uma organização. Se duas aplicações leem o mesmo banco de dados e mascaram um CPF de formas diferentes, cada aplicação pode expor uma parte diferente do valor. Com o tempo, logs, tickets, e-mails, capturas de tela e conversas de suporte podem acumular fragmentos suficientes para enfraquecer a proteção.&lt;/p&gt;

&lt;p&gt;Por esse motivo, o mascaramento deve ser tratado como uma decisão compartilhada de política, não como um detalhe local de formatação de interface. O mesmo campo deve ser mascarado da mesma forma em produtos, ferramentas internas, APIs e fluxos operacionais.&lt;/p&gt;

&lt;h3 id=&quot;quando-mascarar-pii&quot;&gt;Quando mascarar PII&lt;/h3&gt;

&lt;p&gt;Mascaramento de PII é útil sempre que o valor completo não é necessário para o usuário, operador ou ação de sistema que está sendo executada.&lt;/p&gt;

&lt;p&gt;Em sistemas de suporte, atendentes frequentemente precisam confirmar que estão olhando para o cliente correto, mas raramente precisam do documento completo, telefone completo ou e-mail completo. Mostrar um fragmento limitado pode ser suficiente para verificação enquanto reduz a exposição na interface de suporte.&lt;/p&gt;

&lt;p&gt;Em testes de restauração de backup, times podem precisar de formato e volume de dados realistas, mas não deveriam precisar de acesso a identificadores reais de clientes. Mascarar ou substituir PII durante a restauração pode preservar o valor operacional do teste sem expor dados pessoais desnecessariamente em ambientes não produtivos.&lt;/p&gt;

&lt;p&gt;Em analytics e treinamento de modelos, dados de produção podem conter sinais que dados sintéticos não reproduzem bem. Mesmo assim, o padrão deve ser remover, mascarar, agregar ou tokenizar PII, a menos que o valor completo seja estritamente necessário e legalmente justificado.&lt;/p&gt;

&lt;p&gt;Em logs e sistemas de observabilidade, o mascaramento é especialmente importante porque logs costumam ser copiados, indexados, retidos, exportados e acessados por grupos operacionais mais amplos. Um campo seguro em um banco de produção restrito pode se tornar arriscado quando repetido em pipelines de logs.&lt;/p&gt;

&lt;h3 id=&quot;princípios-gerais-de-mascaramento&quot;&gt;Princípios gerais de mascaramento&lt;/h3&gt;

&lt;p&gt;Decisões de mascaramento devem seguir algumas regras simples.&lt;/p&gt;

&lt;p&gt;Revele o mínimo necessário para completar o fluxo. Se a pessoa usuária só precisa distinguir entre dois telefones, os dois ou quatro últimos dígitos podem ser suficientes. Se um operador só precisa saber que um e-mail foi enviado para o domínio esperado, a parte local completa não deve ficar visível.&lt;/p&gt;

&lt;p&gt;Mantenha o formato reconhecível quando isso ajudar a usabilidade. Por exemplo, preservar pontuação em um CPF ou telefone pode ajudar a reconhecer o tipo de campo sem expor o valor completo.&lt;/p&gt;

&lt;p&gt;Evite revelar informações estruturais de alto valor. Em alguns identificadores, certos dígitos têm significado. Em CPFs brasileiros, por exemplo, os dois últimos dígitos são verificadores e o nono dígito pode indicar a região de emissão. Uma regra de mascaramento deve considerar essa semântica em vez de ocultar caracteres aleatórios.&lt;/p&gt;

&lt;p&gt;Use uma regra de mascaramento por tipo de campo e aplique-a em todos os lugares. Se a política para um e-mail é revelar o primeiro e o último caractere da parte local e do rótulo principal do domínio, toda aplicação deve usar a mesma regra.&lt;/p&gt;

&lt;p&gt;Não use mascaramento parcial como única proteção para armazenamento sensível. Se o valor original precisa ser mantido, proteja-o com controle de acesso, criptografia quando apropriado, auditoria rigorosa e limites de retenção. O mascaramento deve controlar principalmente exposição na camada de apresentação, exportação, logging ou dados derivados.&lt;/p&gt;

&lt;p&gt;O mascaramento deve acontecer o mais perto possível da superfície de exposição: interface, logs, exportações, mensagens, relatórios e ambientes derivados. Ele não deve ser confundido com transformar o dado original no banco sem uma necessidade clara.&lt;/p&gt;

&lt;h3 id=&quot;padrões-recomendados&quot;&gt;Padrões recomendados&lt;/h3&gt;

&lt;p&gt;Os padrões abaixo oferecem um ponto de partida prático. Eles são exemplos de baseline, não regras universais. Cada organização deve validar os campos conforme jurisdição, ameaça e necessidade operacional, mas o ponto central é a consistência.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Campo&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Valor original&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Valor mascarado&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Orientação&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;CPF&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;111.222.333-00&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;***.222.33*-**&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Oculte os três primeiros dígitos, o nono dígito e os dois dígitos verificadores. Preserve a pontuação apenas para legibilidade.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;E-mail&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;user.name@example.com.br&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;u*******e@e*****e.com.br&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Revele apenas o primeiro e o último caractere da parte local e do rótulo principal do domínio. Preserve sufixos públicos, como &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.com.br&lt;/code&gt;, quando necessário para reconhecimento.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Telefone&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;(11) 91234-5678&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;(11) 9****-**78&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Preserve código de país ou DDD apenas quando necessário para roteamento ou reconhecimento. Revele a menor quantidade possível de dígitos finais exigida pelo fluxo.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Endereço IPv4&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;203.0.113.42&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;203.0.113.***&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Para exibição, oculte o octeto de host. Para analytics, prefira agregação por sub-rede quando possível.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Endereço IPv6&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2001:db8:abcd:0012:0000:0000:0000:0001&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2001:db8:abcd:0012:****:****:****:****&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Preserve apenas o prefixo de rede necessário para uso operacional. Oculte segmentos específicos de interface.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Documento&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;12.345.678-9&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;**.345.67*-*&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Trate documentos nacionais ou regionais como identificadores estruturados. Oculte dígitos verificadores e evite expor todas as posições semânticas.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Placa de veículo&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ABC1D23&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;A**1*23&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Revele apenas o mínimo necessário para reconhecimento pelo usuário. Evite expor caracteres suficientes para identificar unicamente o veículo em bases pequenas.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;IMEI&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;356938035643809&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;35693803*****09&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Revele apenas o TAC ou dígitos finais quando houver necessidade operacional. Evite mostrar o identificador completo do dispositivo em logs ou ferramentas de suporte.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Esses exemplos são intencionalmente conservadores. A quantidade exata de caracteres visíveis pode mudar conforme o fluxo, mas cada sistema deve tomar essa decisão explicitamente.&lt;/p&gt;

&lt;h3 id=&quot;orientações-de-implementação&quot;&gt;Orientações de implementação&lt;/h3&gt;

&lt;p&gt;A lógica de mascaramento deve viver em código compartilhado, não ser reimplementada independentemente em cada tela ou serviço. Uma pequena biblioteca ou serviço compartilhado reduz inconsistência e facilita futuras mudanças de política.&lt;/p&gt;

&lt;p&gt;Em organizações com múltiplos sistemas, a forma mais prática de garantir consistência é adotar uma biblioteca padrão de mascaramento. Em vez de explicar a política completa para cada time e revisar manualmente cada implementação, a empresa pode recomendar uma interface única para campos como CPF, e-mail, telefone, IP e documentos.&lt;/p&gt;

&lt;p&gt;Isso torna a verificação mais simples. Em vez de validar se cada projeto implementou corretamente cada regra, a revisão passa a verificar se o projeto está usando a biblioteca aprovada. A política continua importante, mas sua aplicação fica centralizada, testável e mais fácil de evoluir.&lt;/p&gt;

&lt;p&gt;Em algumas empresas, pode fazer sentido desenvolver uma biblioteca interna para isso, especialmente quando existem regras regulatórias, formatos locais, requisitos de auditoria ou padrões de produto específicos. Essa biblioteca pode incluir testes, documentação, exemplos de uso e versionamento claro para mudanças de comportamento.&lt;/p&gt;

&lt;p&gt;Mudanças em regras de mascaramento devem ser versionadas e comunicadas, porque podem afetar suporte, auditoria, testes e integrações que dependem do formato exibido. Se uma regra muda, a alteração deve ser tratada como mudança de comportamento da biblioteca, não como detalhe interno invisível.&lt;/p&gt;

&lt;p&gt;Para empresas que usam LLMs ou GenAI no desenvolvimento, o mesmo princípio também se aplica. A recomendação de mascaramento pode fazer parte de uma skill, guideline ou pacote de contexto usado pelos assistentes internos, instruindo o modelo a usar a biblioteca padrão em vez de gerar novas implementações de mascaramento a cada projeto.&lt;/p&gt;

&lt;p&gt;Cada função de mascaramento deve receber um valor normalizado e retornar uma representação mascarada. Normalização e mascaramento são preocupações relacionadas, mas separadas. Por exemplo, um telefone pode ser normalizado internamente para o formato E.164, enquanto a camada de exibição pode formatá-lo para a localidade do usuário antes de aplicar o padrão visível.&lt;/p&gt;

&lt;p&gt;Campos de PII devem ser mascarados antes de entrar em pipelines de log, observabilidade ou analytics. Depois que o dado sensível foi indexado, replicado e retido, a correção fica muito mais difícil.&lt;/p&gt;

&lt;p&gt;O tamanho da entrada importa. Valores curtos não devem vazar informação demais por acidente. Se a parte local de um e-mail tem apenas dois caracteres, revelar o primeiro e o último caractere revela a parte local inteira. Nesses casos, mascare o segmento inteiro ou revele apenas um caractere.&lt;/p&gt;

&lt;p&gt;A política também deve definir o que acontece com valores inválidos ou inesperados. Uma função de mascaramento deve falhar de forma fechada: se ela não conseguir interpretar um valor com segurança, deve retornar uma representação totalmente mascarada ou redigida em vez da entrada original.&lt;/p&gt;

&lt;p&gt;Por fim, teste comportamento de mascaramento como lógica relevante para segurança. Testes unitários devem cobrir valores normais, valores curtos, valores malformados, formatos internacionalizados, separadores, valores vazios e valores já mascarados. Testes de regressão são úteis porque mudanças acidentais no mascaramento podem aumentar exposição silenciosamente.&lt;/p&gt;

&lt;h3 id=&quot;hashing-e-criptografia-são-controles-diferentes&quot;&gt;Hashing e criptografia são controles diferentes&lt;/h3&gt;

&lt;p&gt;Mascaramento, hashing e criptografia resolvem problemas diferentes.&lt;/p&gt;

&lt;p&gt;Criptografia protege confidencialidade transformando dados com uma chave criptográfica. Se o sistema precisa recuperar o valor original, criptografia pode ser apropriada para armazenamento ou transmissão, dependendo do modelo de ameaça e da gestão de chaves.&lt;/p&gt;

&lt;p&gt;Hashing transforma dados em um resumo de tamanho fixo. Ele é útil para verificações de integridade e, com algoritmos adequados de hash de senha, para armazenamento de senhas. Hashes simples de PII previsível costumam ser fracos porque muitos identificadores têm espaços de busca pequenos ou enumeráveis. Se for necessário usar hash de PII para correspondência ou deduplicação, use uma construção com chave ou outro desenho adequado ao risco.&lt;/p&gt;

&lt;p&gt;Mascaramento muda o que é exibido ou exportado. Ele não protege o valor original onde esse valor ainda existe. Um campo mascarado em uma interface não significa que o banco de dados está criptografado. Um valor mascarado em um log não significa que sistemas anteriores deixaram de processar a PII original.&lt;/p&gt;

&lt;p&gt;Boa engenharia de privacidade normalmente combina esses controles: minimizar coleta, restringir acesso, mascarar exibição, criptografar armazenamento e transporte sensíveis, auditar uso e apagar dados quando eles não forem mais necessários.&lt;/p&gt;

&lt;h3 id=&quot;conclusão&quot;&gt;Conclusão&lt;/h3&gt;

&lt;p&gt;Mascaramento de PII é um controle prático para reduzir exposição desnecessária de dados pessoais, mas só funciona bem quando é intencional e consistente.&lt;/p&gt;

&lt;p&gt;O risco principal não é apenas mostrar caracteres demais em um lugar. É mostrar caracteres diferentes em lugares diferentes, permitindo que fragmentos sejam combinados. Uma política compartilhada de mascaramento ajuda a prevenir esse modo de falha e dá às pessoas de engenharia um padrão claro para aplicar em aplicações, logs, ferramentas de suporte, exportações e fluxos de dados não produtivos.&lt;/p&gt;

&lt;p&gt;Mascaramento deve ser tratado como parte de um programa mais amplo de privacidade e segurança. Ele apoia minimização de dados, melhora a privacidade do usuário e reduz exposição operacional, mas não substitui criptografia, controle de acesso, revisão legal ou boa governança de dados.&lt;/p&gt;

&lt;h3 id=&quot;referências&quot;&gt;Referências&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://pt.wikipedia.org/wiki/Dados_pessoais&quot;&gt;Dados pessoais - Wikipedia&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-122.pdf&quot;&gt;Guide to Protecting the Confidentiality of Personally Identifiable Information (PII) - NIST SP 800-122&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.gov.br/esporte/pt-br/acesso-a-informacao/lgpd&quot;&gt;Lei Geral de Proteção de Dados Pessoais (LGPD)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Guias" />
    <summary type="html">Recomendações práticas para mascarar tipos comuns de informações pessoais sem expor fragmentos úteis entre sistemas.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Primitivas e vulnerabilidades</title>
    <link href="https://blog.lesis.lat/pesquisa/2026/04/26/primitivas-e-vulnerabilidades.html" rel="alternate" type="text/html" title="Primitivas e vulnerabilidades" />
    <published>2026-04-26T19:20:00+00:00</published>
    <updated>2026-04-26T19:20:00+00:00</updated>
    <id>https://blog.lesis.lat/pesquisa/2026/04/26/primitivas-e-vulnerabilidades</id>
    <content type="html" xml:base="https://blog.lesis.lat/pesquisa/2026/04/26/primitivas-e-vulnerabilidades.html">&lt;h3 id=&quot;introdução&quot;&gt;Introdução&lt;/h3&gt;

&lt;p&gt;Na última semana, testei o uso de LLMs para apoiar no processo de pesquisa de vulnerabilidades. Isso me fez pensar: como “ensinar” o modelo a realmente ajudar a encontrar bugs válidos?&lt;/p&gt;

&lt;p&gt;Refleti sobre o meu próprio processo: como analiso código, modelo ameaças e chego ao ponto em que algo se torna, de fato, uma vulnerabilidade.&lt;/p&gt;

&lt;h3 id=&quot;entendendo-ou-criando-primitivas&quot;&gt;Entendendo, ou criando, primitivas&lt;/h3&gt;

&lt;p&gt;Em resumo, percebi que tento responder a três perguntas durante as análises:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;O que esse código, feature, componente ou endpoint está tentando fazer?&lt;/li&gt;
  &lt;li&gt;O que ele realmente faz?&lt;/li&gt;
  &lt;li&gt;O que é possível fazer com ele?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Escolho uma primitiva: a menor parte do sistema que executa uma ação, como uma função, endpoint ou componente. Primeiro tento entender o que ela deveria fazer, usando documentação, nomes e contexto.&lt;/p&gt;

&lt;p&gt;Depois observo o que ela realmente faz: executo, testo entradas válidas e inválidas, inspeciono logs e comparo com o comportamento esperado.&lt;/p&gt;

&lt;p&gt;Quando encontro uma discrepância entre intenção e realidade, me pergunto: o que dá para fazer com isso? A partir daí mapeio o que um ator malicioso poderia controlar, quais ações ele conseguiria executar e qual seria o impacto.&lt;/p&gt;

&lt;p&gt;Se essa diferença permite causar um impacto real, então é uma vulnerabilidade.&lt;/p&gt;

&lt;p&gt;Pequenas discrepâncias isoladas às vezes não geram impacto relevante, mas quando encadeadas quase sempre revelam vetores interessantes. Após o olhar no micro, é preciso ter um entendimento do macro: como todas essas primitivas podem ser combinadas.&lt;/p&gt;

&lt;p&gt;Agora estou usando alguns prompts que gerei a partir desse entendimento no dia a dia, de maneira automatizada e integrada ao meu workflow. Eles me apoiam no entendimento mais rápido de componentes, na sugestão de entradas de dados mais contextuais, na criação de entradas de teste e na tradução de discrepâncias em possíveis cenários.&lt;/p&gt;

&lt;h3 id=&quot;um-exemplo-simples&quot;&gt;Um exemplo simples&lt;/h3&gt;

&lt;p&gt;Em uma análise passada, testei uma aplicação web e identifiquei uma tela de login. Fiz vários testes, incluindo o uso de um e-mail válido com senhas incorretas, tentando gerar feedbacks diferentes da aplicação para entender melhor o comportamento do fluxo.&lt;/p&gt;

&lt;p&gt;Depois de mais de cinco tentativas de login com a senha errada, a aplicação retornou um aviso: a conta estava bloqueada porque o limite de tentativas havia sido excedido.&lt;/p&gt;

&lt;p&gt;Pela primeira pergunta, a intenção parecia clara: esse controle existia para prevenir ataques de força bruta.&lt;/p&gt;

&lt;p&gt;Pela segunda pergunta, o comportamento real tinha detalhes importantes. O bloqueio não expirava automaticamente, o usuário não tinha uma forma simples de desbloquear a própria conta e nenhuma notificação era enviada por e-mail avisando sobre o bloqueio. Para recuperar o acesso, era necessário entrar em contato com o suporte.&lt;/p&gt;

&lt;p&gt;Pela terceira pergunta, o impacto possível ficava mais claro. Um ator malicioso não precisava descobrir a senha nem acessar a conta. Bastava conhecer ou enumerar e-mails válidos e realizar tentativas de login com senhas incorretas para bloquear contas reais. Um controle criado para proteger contra força bruta poderia ser usado como uma primitiva de negação de serviço contra usuários legítimos.&lt;/p&gt;

&lt;h3 id=&quot;conclusão&quot;&gt;Conclusão&lt;/h3&gt;

&lt;p&gt;Pensar em primitivas ajuda a transformar a análise em um processo mais explícito. Em vez de olhar para o sistema apenas como um conjunto grande e complexo de funcionalidades, passo a observar pequenas ações, comparar intenção e realidade, e depois entender como essas diferenças podem ser usadas.&lt;/p&gt;

&lt;p&gt;Esse raciocínio é útil para pesquisa manual e também para o uso de LLMs. Quanto melhor eu consigo descrever a primitiva, sua intenção, seu comportamento real e seu possível impacto, melhor consigo usar modelos e automações como apoio ao processo de investigação. No fim, encontrar vulnerabilidades continua dependendo de julgamento técnico, mas estruturar o caminho até elas torna esse julgamento mais claro, repetível e comunicável.&lt;/p&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Pesquisa" />
    <summary type="html">Como pensar em primitivas ajuda a transformar discrepâncias entre intenção e comportamento real em análise de impacto.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Segurança digital para crianças: preparando a próxima geração</title>
    <link href="https://blog.lesis.lat/comunidade/2026/04/26/o-cibernauta-seguranca-digital-para-proxima-geracao.html" rel="alternate" type="text/html" title="Segurança digital para crianças: preparando a próxima geração" />
    <published>2026-04-26T18:30:00+00:00</published>
    <updated>2026-04-26T18:30:00+00:00</updated>
    <id>https://blog.lesis.lat/comunidade/2026/04/26/o-cibernauta-seguranca-digital-para-proxima-geracao</id>
    <content type="html" xml:base="https://blog.lesis.lat/comunidade/2026/04/26/o-cibernauta-seguranca-digital-para-proxima-geracao.html">&lt;p&gt;A segurança da informação precisa chegar mais cedo às pessoas. Durante muito tempo, tratamos esse tema como algo restrito a profissionais, empresas e equipes técnicas. Mas a realidade mudou: crianças crescem conectadas, usam dispositivos desde cedo, conversam em ambientes digitais, jogam online, assistem conteúdos, compartilham informações e constroem parte importante de suas relações dentro do ciberespaço.&lt;/p&gt;

&lt;p&gt;Esse ambiente oferece oportunidades enormes, mas também expõe crianças e famílias a riscos que nem sempre são fáceis de perceber. Golpes, engenharia social, roubo de contas, exposição de dados, desinformação e hábitos inseguros já fazem parte do cotidiano digital. Por isso, preparar a próxima geração não é apenas uma escolha educativa. É uma responsabilidade coletiva.&lt;/p&gt;

&lt;p&gt;Foi nesse contexto que conhecemos &lt;a href=&quot;https://www.linkedin.com/company/ocibernauta/about/&quot;&gt;O Cibernauta&lt;/a&gt;, um projeto que usa a linguagem infantil para aproximar crianças, pais e educadores de temas essenciais de segurança digital e cidadania online. O primeiro livro, &lt;a href=&quot;https://www.editorabrasport.com.br/index.php?route=product/product&amp;amp;product_id=1709&quot;&gt;O Cibernauta em A Super Senha Secreta&lt;/a&gt;, publicado pela Editora Brasport, transforma um tema técnico - a criação e o cuidado com senhas - em uma aventura acessível, lúdica e útil para diferentes idades.&lt;/p&gt;

&lt;p&gt;A proposta é simples e poderosa: ensinar cedo, de forma leve, para que a segurança digital faça parte da formação das crianças antes que os problemas apareçam. Quando uma criança entende por que uma senha importa, por que não deve compartilhar certas informações ou por que precisa desconfiar de pedidos estranhos, ela não aprende apenas uma regra. Ela começa a desenvolver senso crítico para navegar em um mundo cada vez mais complexo.&lt;/p&gt;

&lt;p&gt;O projeto foi idealizado por Daniel Meirelles e Eduardo Argollo, que identificaram dentro de suas próprias famílias a dificuldade de conversar sobre segurança da informação de maneira clara e prática. A partir disso, construíram uma iniciativa que conecta tecnologia, educação e afeto, mostrando que crianças e adultos podem aprender juntos sobre proteção digital.&lt;/p&gt;

&lt;p&gt;A LESIS decidiu apoiar esse movimento de forma concreta. Compramos 30 exemplares do livro e estamos doando esses materiais para pessoas e instituições que podem multiplicar esse conhecimento. Também seguimos apoiando os autores com conexões para eventos, conversas e possíveis parcerias que ajudem o projeto a chegar mais longe.&lt;/p&gt;

&lt;p&gt;Essa ação é pequena quando comparada ao tamanho do desafio. Ainda assim, ela representa uma convicção importante: segurança da informação não se fortalece apenas com pesquisa, ferramentas, auditorias ou resposta a incidentes. Ela também se fortalece quando ajudamos uma criança a entender melhor o ambiente digital onde ela já vive.&lt;/p&gt;

&lt;p&gt;Ao apoiar O Cibernauta, apoiamos uma visão de futuro em que a cultura de segurança começa antes da vida profissional, antes da primeira conta bancária, antes do primeiro incidente. Começa na formação de hábitos, no diálogo dentro de casa, na escola e nos espaços onde crianças podem aprender com curiosidade, imaginação e cuidado.&lt;/p&gt;

&lt;p&gt;Queremos contribuir para um ecossistema de segurança mais maduro, acessível e humano. Isso inclui apoiar profissionais, comunidades técnicas, iniciativas educacionais e também projetos que olham para quem ainda está começando sua relação com a tecnologia.&lt;/p&gt;

&lt;p&gt;Seguiremos buscando formas de apoiar iniciativas que usam educação como instrumento de transformação. Porque proteger o futuro também significa preparar melhor as pessoas que vão construí-lo.&lt;/p&gt;

&lt;p&gt;Saiba mais sobre o projeto em &lt;a href=&quot;https://www.instagram.com/ocibernauta_/&quot;&gt;O Cibernauta no Instagram&lt;/a&gt; e na &lt;a href=&quot;https://www.editorabrasport.com.br/index.php?route=product/product&amp;amp;product_id=1709&quot;&gt;Editora Brasport&lt;/a&gt;.&lt;/p&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Comunidade" />
    <summary type="html">A segurança da informação precisa chegar mais cedo às pessoas. Durante muito tempo, tratamos esse tema como algo restrito a profissionais, empresas e equipes técnicas. Mas a realidade mudou: crianças crescem conectadas, usam dispositivos desde cedo, conversam em ambientes digitais, jogam online, assistem conteúdos, compartilham informações e constroem parte importante de suas relações dentro do ciberespaço.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Máquina de estados para gestão de vulnerabilidades</title>
    <link href="https://blog.lesis.lat/pesquisa/2026/04/09/vuln-state-machine.html" rel="alternate" type="text/html" title="Máquina de estados para gestão de vulnerabilidades" />
    <published>2026-04-09T03:00:00+00:00</published>
    <updated>2026-04-09T03:00:00+00:00</updated>
    <id>https://blog.lesis.lat/pesquisa/2026/04/09/vuln-state-machine</id>
    <content type="html" xml:base="https://blog.lesis.lat/pesquisa/2026/04/09/vuln-state-machine.html">&lt;p&gt;Em muitas organizações, o processo de gestão de vulnerabilidades sofre com um problema recorrente — mas frequentemente negligenciado: a inconsistência na definição e no uso de status. É comum ver os mesmos status sendo usados com significados diferentes por equipes distintas, ou existir status redundantes, mal definidos ou desnecessários, que mais confundem do que ajudam. Isso compromete a rastreabilidade, dificulta a comunicação entre áreas, inviabiliza métricas confiáveis e enfraquece a capacidade da organização de responder a riscos reais.&lt;/p&gt;

&lt;p&gt;Para enfrentar esse cenário, adotar uma máquina de estados formalizada é uma estratégia eficaz. De forma clara e objetiva, ela representa o ciclo de vida de uma vulnerabilidade: cada transição tem significado preciso, e todos os times compartilham o mesmo entendimento sobre o que cada status representa.&lt;/p&gt;

&lt;p&gt;O fluxo começa com &lt;strong&gt;Draft&lt;/strong&gt;, que indica um rascunho em construção pelo analista/pentester. A vulnerabilidade ainda está sendo documentada e não foi submetida à triagem — pode faltar contexto, evidências ou detalhes técnicos. Após essa etapa, passa para &lt;strong&gt;Identified&lt;/strong&gt;, quando se avaliam impacto e prioridade. Se for encaminhada para correção, assume o status &lt;strong&gt;Fixing&lt;/strong&gt;, refletindo o trabalho ativo de mitigação. Durante o processo, pode-se identificar que se trata de uma repetição de um caso anterior, passando então para &lt;strong&gt;Duplicated&lt;/strong&gt;. Se a análise mostrar que não há risco real — por exemplo, devido a uma condição de exploração inviável — o status passa a &lt;strong&gt;False Positive&lt;/strong&gt;. Em certos casos, a organização opta por aceitar o risco, seja por limitações técnicas, custo de correção ou impacto considerado baixo; nesses casos, o status é &lt;strong&gt;Accepted Risk&lt;/strong&gt;. Após a correção, a falha entra em &lt;strong&gt;Retest&lt;/strong&gt;, sendo reavaliada. Se validada, o processo se encerra com o status &lt;strong&gt;Fixed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A definição rigorosa dessa máquina de estados não é burocracia: é uma fundação necessária. Ao eliminar ambiguidades e redundâncias, ela melhora a colaboração entre áreas, reduz retrabalho e viabiliza decisões mais bem embasadas. Também permite gerar métricas consistentes, úteis para identificar gargalos, medir eficiência e sustentar auditorias.&lt;/p&gt;

&lt;p&gt;Essa proposta de máquina de estados é, ao mesmo tempo, enxuta e completa. É o modelo mais eficaz que já encontrei na prática: simples o bastante para adoção rápida e abrangente o suficiente para cobrir os principais cenários. Tem se mostrado um excelente ponto de partida para padronizar processos, fortalecer a governança e facilitar a integração entre segurança, produto e engenharia.&lt;/p&gt;

&lt;p&gt;Abaixo, o diagrama que representa esse fluxo:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/publications/vuln-state-machine/state-machine.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Pesquisa" />
    <summary type="html">Em muitas organizações, o processo de gestão de vulnerabilidades sofre com um problema recorrente — mas frequentemente negligenciado: a inconsistência na definição e no uso de status. É comum ver os mesmos status sendo usados com significados diferentes por equipes distintas, ou existir status redundantes, mal definidos ou desnecessários, que mais confundem do que ajudam. Isso compromete a rastreabilidade, dificulta a comunicação entre áreas, inviabiliza métricas confiáveis e enfraquece a capacidade da organização de responder a riscos reais.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Taxonomia econômica de vulnerabilidades</title>
    <link href="https://blog.lesis.lat/pesquisa/2026/02/08/vulnerability-price.html" rel="alternate" type="text/html" title="Taxonomia econômica de vulnerabilidades" />
    <published>2026-02-08T16:52:02+00:00</published>
    <updated>2026-02-08T16:52:02+00:00</updated>
    <id>https://blog.lesis.lat/pesquisa/2026/02/08/vulnerability-price</id>
    <content type="html" xml:base="https://blog.lesis.lat/pesquisa/2026/02/08/vulnerability-price.html">&lt;p&gt;No campo da cibersegurança, uma das perguntas mais relevantes — e, simultaneamente, uma das mais difíceis de responder com precisão — é: qual é o custo financeiro de uma vulnerabilidade? Embora existam diversos programas e práticas voltadas ao gerenciamento de vulnerabilidades, o desafio de atribuir um valor monetário a cada falha, especialmente quando ainda não explorada, permanece pouco abordado sob uma ótica objetiva e quantitativa.&lt;/p&gt;

&lt;p&gt;Com o aumento da sofisticação dos ataques, das exigências regulatórias e da complexidade dos ecossistemas digitais contemporâneos, torna-se fundamental compreender o custo real de uma vulnerabilidade. Tal compreensão possibilita que decisões estratégicas em segurança da informação sejam fundamentadas não apenas em percepções de risco, mas também em análises econômicas tangíveis.&lt;/p&gt;

&lt;h3 id=&quot;contexto-e-dados-analíticos&quot;&gt;Contexto e dados analíticos&lt;/h3&gt;

&lt;p&gt;Historicamente, decisões relacionadas à priorização e ao investimento em segurança têm se baseado em avaliações qualitativas e modelos de risco construídos a partir de cenários hipotéticos. Embora úteis, essas abordagens  nem sempre oferecem argumentos sólidos para justificar a alocação de recursos frente a  áreas como finanças, produto ou liderança executiva.&lt;/p&gt;

&lt;p&gt;Nesse cenário, surge a necessidade de uma análise centrada na &lt;strong&gt;mensuração econômica das vulnerabilidades&lt;/strong&gt;, utilizando dados reais.
A partir de uma nova análise de dados, este estudo busca responder com maior precisão à seguinte questão:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qual é o custo de uma vulnerabilidade, considerando diferentes níveis de severidade e categorias?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A resposta a essa pergunta fornecerá subsídios importantes para estratégias de priorização, definição orçamentária e tomada de decisão em segurança da informação.&lt;/p&gt;

&lt;h3 id=&quot;premissas&quot;&gt;Premissas&lt;/h3&gt;

&lt;p&gt;A fim de conduzir a análise de forma objetiva, clara e relevante para a tomada de decisão, estabeleceram-se as seguintes premissas, que delimitam o escopo do estudo e fundamentam a abordagem metodológica adotada.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Vulnerabilidades possuem valor econômico mensurável&lt;/strong&gt;: cada vulnerabilidade pode ser associada a um valor monetário, refletindo o esforço necessário para sua descoberta e reporte, bem como os riscos que ela representa. Programas de &lt;em&gt;bug bounty&lt;/em&gt; são considerados referência de mercado para essa mensuração.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. O valor de uma vulnerabilidade cresce conforme sua severidade&lt;/strong&gt;: assume-se que a severidade de uma vulnerabilidade — determinada pelo impacto e pela probabilidade de exploração — está diretamente relacionada ao seu custo. Vulnerabilidades críticas tendem a implicar  riscos maiores e, portanto, custos mais elevados.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Recompensas de bug bounty são proxies válidos para estimativa de custo&lt;/strong&gt;: os valores pagos em programas de bug bounty são utilizados como estimativas conservadoras para o custo de descoberta de uma vulnerabilidade. Para maior rigor, adotar-se-á sempre o menor valor dentro de cada faixa divulgada.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. O foco está exclusivamente na fase de descoberta da vulnerabilidade&lt;/strong&gt;: a análise não contempla etapas subsequentes do ciclo de vida da vulnerabilidade (como correção, revalidação, comunicação ou impacto da exploração), concentrando-se unicamente no custo estimado para sua identificação.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Recursos de segurança são limitados e exigem alocação estratégica&lt;/strong&gt;: partindo do princípio de que os orçamentos em segurança são finitos, compreender o custo unitário das vulnerabilidades permite decisões mais eficazes quanto à alocação de esforços e investimentos.&lt;/p&gt;

&lt;h3 id=&quot;fora-de-escopo&quot;&gt;Fora de escopo&lt;/h3&gt;

&lt;p&gt;Embora relevantes, os seguintes tópicos não fazem parte do escopo deste estudo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Elaboração de uma estratégia completa de gerenciamento de vulnerabilidades&lt;/strong&gt;: esse documento não propõe um framework completo de gestão de vulnerabilidades, restringindo-se à análise de custo de identificação. Questões como priorização de correções, políticas de remediação, processos de resposta ou integração com sistemas de gestão de riscos não serão abordadas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Avaliação ou comparação de fornecedores, ferramentas ou métodos específicos&lt;/strong&gt;: não se objetiva comparar soluções ou recomendar plataformas. Dados de bug bounty são utilizados exclusivamente como insumo empírico para estimativa de custo, sem juízo de valor sobre sua efetividade ou eficiência em comparação a outras abordagens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Estimativas de impacto financeiro de incidentes reais&lt;/strong&gt;: não serão modeladas consequências financeiras de explorações bem-sucedidas, como vazamentos de dados, interrupções operacionais,  penalidades regulatórias ou perdas de reputação. O foco é a mensuração do custo de descoberta, não do impacto final de uma vulnerabilidade explorada.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Propostas orçamentárias ou recomendações diretas de alocação de recursos&lt;/strong&gt;: embora os dados obtidos possam auxiliar na tomada de decisões sobre investimentos em segurança, não se propõe aqui qualquer recomendação prescritiva de alocação orçamentária. A aplicação prática dessas informações dependerá do contexto e das prioridades de cada organização.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Análise de vulnerabilidades desconhecidas ou &lt;em&gt;zero-day&lt;/em&gt;&lt;/strong&gt;: a análise se restringe a vulnerabilidades conhecidas e catalogadas. Questões relacionadas a falhas ainda não descobertas, incluindo aquelas exploradas por atores maliciosos antes da divulgação pública (&lt;em&gt;zero-day&lt;/em&gt;), estão fora do escopo deste estudo.&lt;/p&gt;

&lt;h3 id=&quot;abordagem&quot;&gt;Abordagem&lt;/h3&gt;

&lt;p&gt;Inspirado pela teoria da assimetria de informação apresentada em &lt;strong&gt;&lt;em&gt;The Market for Lemons: Quality Uncertainty and the Market Mechanism&lt;/em&gt;&lt;/strong&gt; [1], este estudo parte do princípio de que mercados conseguem revelar preços mesmo em contextos de incerteza quanto à qualidade do bem transacionado, desde que existam mecanismos de sinalização minimamente estáveis.&lt;/p&gt;

&lt;p&gt;No contexto da segurança da informação, programas de bug bounty funcionam como tais mecanismos, ao atribuírem valores monetários diferenciados a vulnerabilidades conforme sua severidade percebida. Assume-se, portanto, que as recompensas oferecidas refletem, de maneira conservadora, um valor de mercado associado à descoberta e ao reporte de falhas, mitigando parcialmente a assimetria entre quem identifica a vulnerabilidade e quem sofre seu risco. Com base nessa premissa, a metodologia adota uma abordagem quantitativa e comparativa, utilizando dados reais de programas de bug bounty para estimar níveis típicos de payout organizacional entre categorias de severidade.&lt;/p&gt;

&lt;p&gt;Embora tais recompensas não representem o custo total decorrente da existência ou exploração de uma vulnerabilidade, elas constituem um &lt;em&gt;proxy&lt;/em&gt; padronizado e empiricamente observável para sua mensuração econômica. Sob a ótica da assimetria de informação, programas de bug bounty operam como mercados de incentivos, nos quais o preço sinaliza não apenas o valor percebido da vulnerabilidade, mas também o esforço esperado para sua descoberta. Nesse arranjo, pesquisadores independentes tendem a investir racionalmente apenas quando o valor esperado da recompensa líquida supera seus custos marginais de descoberta, validação e reporte, condição necessária para manter lucro e viabilidade operacional.&lt;/p&gt;

&lt;p&gt;Quando os valores oferecidos são percebidos como insuficientes frente à complexidade da superfície de ataque ou aos requisitos de validação, a tendência é a redução do engajamento e do volume de relatórios submetidos. De forma simétrica, organizações ajustam dinamicamente os valores das recompensas como mecanismo de atração ou desincentivo, elevando-os quando há escassez de relatórios qualificados ou reduzindo-os quando a oferta de vulnerabilidades reportadas excede sua capacidade de triagem e correção.&lt;/p&gt;

&lt;p&gt;Esse ciclo de entrada, saída e migração entre programas atua como mecanismo autocorretivo. Assim, embora a assimetria de informação não desapareça por completo, ela tende a permanecer em níveis residuais e operacionalmente aceitáveis, pois desequilíbrios persistentes entre esforço requerido e payout são rapidamente detectados pelos pesquisadores e precificados pelo mercado.&lt;/p&gt;

&lt;h3 id=&quot;escopo-da-análise&quot;&gt;Escopo da análise&lt;/h3&gt;

&lt;p&gt;A análise se restringe à etapa de descoberta da vulnerabilidade — isto é, ao esforço necessário para identificá-la e reportá-la com evidências técnicas. As fases de correção, revalidação e comunicação estão fora do escopo.
Os dados são obtidos exclusivamente em fontes, priorizando:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Plataformas de bug bounty com informações abertas;&lt;/li&gt;
  &lt;li&gt;Recompensas categorizadas por severidade;&lt;/li&gt;
  &lt;li&gt;Diversas geografias, para maior representatividade.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;justificativa-da-abordagem&quot;&gt;Justificativa da abordagem&lt;/h4&gt;

&lt;p&gt;Ao utilizar dados de mercado — recompensas efetivamente pagas — evita-se a subjetividade típica das estimativas de impacto e se adota um critério reconhecido por diversos setores como referência prática de valor. Esse método também permite realizar comparações posteriores com outros modelos de investimento em segurança, como testes de intrusão (pentests) ou ferramentas automatizadas, fornecendo uma base concreta para avaliar retorno sobre investimento (ROI) e orientação de alocação de  recursos.&lt;/p&gt;

&lt;h3 id=&quot;metodologia&quot;&gt;Metodologia&lt;/h3&gt;
&lt;p&gt;A metodologia adotada em neste estudo foi desenvolvida com o objetivo de garantir transparência, reprodutibilidade e consistência na análise dos dados extraídos de plataformas públicas de bug bounty. A seguir, são detalhadas as etapas principais do processo:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;A coleta de dados se dará pela utilização de scrapers próprios, desenvolvidos para extrair informações de programas ativos que:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
  &lt;li&gt;Divulguem valores financeiros atribuídos a vulnerabilidades;&lt;/li&gt;
  &lt;li&gt;Classifiquem  claramente as falhas por severidade.&lt;/li&gt;
  &lt;li&gt;Serão incluídos programas de empresas de diversos portes e setores, com abrangência nacional e internacional, a fim de capturar um panorama representativo do mercado.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;Após a coleta, os dados são submetidos em um processo de filtragem, com os seguintes critérios de exclusão:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
  &lt;li&gt;Programas do tipo VDP (Vulnerability Disclosure Program) que não oferecem recompensas financeiras;&lt;/li&gt;
  &lt;li&gt;Programas com dados inconsistentes ou incompletos sobre severidade ou valores;&lt;/li&gt;
  &lt;li&gt;Recompensas genéricas sem vinculação à severidade.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;As recompensas são classificadas nas seguintes categorias, com base em descrições fornecidas pelos próprios programas ou, na ausência destas, segundo critérios compatíveis com o padrão CVSS:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Informativa
Baixa
Média
Alta
Crítica
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;Normalização dos valores, para evitar distorções nos resultados:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
  &lt;li&gt;Em faixas de valores (ex: $ 1.000 a $ 5.000), será utilizado o valor mínimo da faixa, adotando-se uma postura conservadora;&lt;/li&gt;
  &lt;li&gt;Todos os valores serão convertidos para dólar (USD), — com base em uma taxa de câmbio de referência.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;análise&quot;&gt;Análise&lt;/h3&gt;

&lt;p&gt;Foram analisados 808 programas de bug bounty, distribuídos entre as plataformas HackerOne, Bugcrowd, YesWeHack, Intigriti, BugHunt e Bugpay. A amostra contempla programas ativos de organizações com diferentes portes, setores e localizações geográficas, oferecendo um panorama amplo e representativo do mercado de recompensas por vulnerabilidades.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/publications/price-vuln/distribuicao-por-plataforma.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;content-caption&quot;&gt;&lt;strong&gt;Figura 1:&lt;/strong&gt; distribuição de programas de bug bounty por plataforma.&lt;/p&gt;

&lt;p&gt;Os dados utilizados nesta análise estão disponíveis para reprodução e verificação no repositório: &lt;a href=&quot;https://huggingface.co/datasets/lesis-lat/bug-bounty-programs-rewards/viewer/default/train&quot;&gt;https://huggingface.co/datasets/lesis-lat/bug-bounty-programs-rewards/viewer/default/train&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/publications/price-vuln/visibilidade-por-tipo.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;content-caption&quot;&gt;&lt;strong&gt;Figura 2:&lt;/strong&gt; distribuição de programas de bug bounty por tipo de visibilidade (público vs privado).&lt;/p&gt;

&lt;p&gt;A tabela a seguir apresenta os valores mínimos e máximos de recompensa observados em cada categoria de severidade, evidenciando a ampla variação existente entre programas e plataformas. Em particular, nota-se que, embora vulnerabilidades de baixa severidade apresentem recompensas mínimas simbólicas, as faixas superiores — especialmente para severidades altas e críticas — alcançam valores significativamente elevados, refletindo diferentes estratégias de incentivo e percepção de risco.&lt;/p&gt;

&lt;table class=&quot;table-numeric&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt; &lt;/th&gt;
      &lt;th&gt;Baixo&lt;/th&gt;
      &lt;th&gt;Médio&lt;/th&gt;
      &lt;th&gt;Alto&lt;/th&gt;
      &lt;th&gt;Crítico&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;Mínimo&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;$1.00&lt;/td&gt;
      &lt;td&gt;$3.00&lt;/td&gt;
      &lt;td&gt;$5.00&lt;/td&gt;
      &lt;td&gt;$50.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;Máximo&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;$2,000.00&lt;/td&gt;
      &lt;td&gt;$47,175.93&lt;/td&gt;
      &lt;td&gt;$58,969.91&lt;/td&gt;
      &lt;td&gt;$100,000.00&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p class=&quot;content-caption&quot;&gt;&lt;strong&gt;Tabela 1:&lt;/strong&gt; valores mínimo e máximo das recompensas por severidade (USD).&lt;/p&gt;

&lt;p&gt;Esses valores delimitam a faixa completa de variação dos dados observados, servindo como base para análises estatísticas mais robustas.&lt;/p&gt;

&lt;p&gt;Complementarmente, a análise de tendência central revela padrões mais estáveis de precificação por severidade. A tabela a seguir apresenta os valores de média, mediana e moda, indicando que, apesar da presença de outliers relevantes, a concentração das recompensas ocorre em patamares bem definidos para cada categoria.&lt;/p&gt;

&lt;table class=&quot;table-numeric&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Severidade&lt;/th&gt;
      &lt;th&gt;Média&lt;/th&gt;
      &lt;th&gt;Mediana&lt;/th&gt;
      &lt;th&gt;Moda&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Baixa&lt;/td&gt;
      &lt;td&gt;$154,75&lt;/td&gt;
      &lt;td&gt;$100,00&lt;/td&gt;
      &lt;td&gt;$100,00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Média&lt;/td&gt;
      &lt;td&gt;$563,93&lt;/td&gt;
      &lt;td&gt;$350,00&lt;/td&gt;
      &lt;td&gt;$500,00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Alta&lt;/td&gt;
      &lt;td&gt;$1825,83&lt;/td&gt;
      &lt;td&gt;$1000,00&lt;/td&gt;
      &lt;td&gt;$1000,00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Crítica&lt;/td&gt;
      &lt;td&gt;$4601,35&lt;/td&gt;
      &lt;td&gt;$3000,00&lt;/td&gt;
      &lt;td&gt;$3000,00&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p class=&quot;content-caption&quot;&gt;&lt;strong&gt;Tabela 2:&lt;/strong&gt; média, mediana e moda das recompensas por severidade (USD).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/publications/price-vuln/comparacao-plataformas.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;content-caption&quot;&gt;&lt;strong&gt;Figura 3:&lt;/strong&gt; comparação da mediana de recompensas por plataforma e severidade.&lt;/p&gt;

&lt;p&gt;A comparação entre média e mediana, à luz dos coeficientes de assimetria, indica que a média aritmética não representa adequadamente o comportamento típico das recompensas por vulnerabilidade. Todas as categorias de severidade apresentam &lt;strong&gt;assimetria positiva elevada&lt;/strong&gt; (&lt;em&gt;skewness&lt;/em&gt; variando aproximadamente entre &lt;strong&gt;6,49 e 21,72&lt;/strong&gt;), evidenciando distribuições fortemente concentradas em valores baixos, com poucos pagamentos excepcionalmente altos. Embora a intensidade da assimetria varie entre severidades — com destaque para vulnerabilidades de severidade média — esse padrão explica a divergência sistemática entre média e mediana e confirma a &lt;strong&gt;sensibilidade da média a valores extremos&lt;/strong&gt;, tornando medidas robustas mais adequadas para a interpretação dos dados.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/publications/price-vuln/preco-por-severidade-plataforma.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;content-caption&quot;&gt;&lt;strong&gt;Figura 4:&lt;/strong&gt; preço típico de vulnerabilidades por severidade entre plataformas.&lt;/p&gt;

&lt;p&gt;A variabilidade dos valores de recompensa foi avaliada por meio do &lt;strong&gt;intervalo interquartil (IQR)&lt;/strong&gt;, que captura a dispersão do núcleo central da distribuição. Observa-se um aumento consistente da variabilidade típica conforme a severidade da vulnerabilidade cresce. Para vulnerabilidades de baixa severidade, o IQR é de aproximadamente &lt;strong&gt;USD 141,03&lt;/strong&gt;, indicando maior concentração dos valores praticados. Esse intervalo se amplia para &lt;strong&gt;USD 300,00&lt;/strong&gt; em severidade média, &lt;strong&gt;USD 1.410,30&lt;/strong&gt; em severidade alta e &lt;strong&gt;USD 3.500,00&lt;/strong&gt; em vulnerabilidades críticas, evidenciando uma expansão progressiva da faixa na qual se concentram as recompensas mais frequentes. Esse comportamento indica que vulnerabilidades mais severas estão associadas não apenas a valores mais elevados, mas também a maior incerteza econômica quanto à sua precificação.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/publications/price-vuln/mediana-por-visibilidade.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;content-caption&quot;&gt;&lt;strong&gt;Figura 5:&lt;/strong&gt; mediana de recompensas por severidade em programas públicos vs privados.&lt;/p&gt;

&lt;p&gt;Em conjunto, os resultados demonstram que, embora existam padrões consistentes de precificação por severidade, o mercado de bug bounty apresenta elevada heterogeneidade e presença recorrente de valores extremos. Ainda assim, as estatísticas de tendência central e dispersão permitem afirmar que a descoberta de vulnerabilidades possui um valor econômico observável e diferenciado por nível de severidade.&lt;/p&gt;

&lt;p&gt;Assim, é metodologicamente adequado afirmar faixas de custo por severidade, desde que essas faixas sejam definidas a partir de medidas robustas, como a mediana e o intervalo interquartil, e não interpretadas como limites determinísticos. Com base nos dados analisados, a descoberta de vulnerabilidades de baixa severidade apresenta custo típico concentrado entre aproximadamente &lt;strong&gt;USD 59 e USD 200&lt;/strong&gt;, com mediana de &lt;strong&gt;USD 100&lt;/strong&gt;. Para severidade média, a faixa típica situa-se entre &lt;strong&gt;USD 200 e USD 500&lt;/strong&gt;, com mediana em torno de &lt;strong&gt;USD 350&lt;/strong&gt;. Vulnerabilidades de alta severidade apresentam maior dispersão, com valores concentrados entre &lt;strong&gt;USD 590 e USD 2.000&lt;/strong&gt;, e mediana de &lt;strong&gt;USD 1.000&lt;/strong&gt;, enquanto vulnerabilidades críticas exibem as maiores faixas de custo, aproximadamente entre &lt;strong&gt;USD 1.500 e USD 5.000&lt;/strong&gt;, com mediana de &lt;strong&gt;USD 3.000&lt;/strong&gt;. Essas faixas refletem o comportamento típico do mercado e evidenciam o aumento progressivo da incerteza econômica conforme a severidade da vulnerabilidade cresce.&lt;/p&gt;

&lt;h3 id=&quot;conclusão&quot;&gt;Conclusão&lt;/h3&gt;

&lt;p&gt;Este estudo investigou a economia das recompensas (payouts) por vulnerabilidade a partir de uma abordagem quantitativa baseada em dados reais de programas de bug bounty. Neste contexto, “custo” refere-se ao valor pago pelas organizações por relatórios de vulnerabilidade aceitos, e não ao custo operacional do pesquisador para descobrir e reportar vulnerabilidades. Partindo da premissa de que tais programas funcionam como mecanismos de mercado sob assimetria de informação, a análise buscou estimar de forma objetiva como os valores de payout variam conforme sua severidade.&lt;/p&gt;

&lt;p&gt;Os resultados demonstram que a descoberta de vulnerabilidades possui um valor econômico observável e sistematicamente diferenciado por severidade. As análises estatísticas evidenciaram distribuições fortemente assimétricas em todas as categorias, com presença recorrente de valores extremos, o que torna a média aritmética inadequada como medida representativa isolada. Em contraste, medidas robustas como a mediana e o intervalo interquartil mostraram-se mais apropriadas para capturar o comportamento típico do mercado.&lt;/p&gt;

&lt;p&gt;Com base nesses indicadores, foi possível estimar faixas típicas de payout associadas à descoberta de vulnerabilidades. Vulnerabilidades de baixa severidade apresentam valores concentrados entre aproximadamente &lt;strong&gt;USD 59 e USD 200&lt;/strong&gt;, com mediana de &lt;strong&gt;USD 100&lt;/strong&gt;. Para severidade média, a faixa típica situa-se entre &lt;strong&gt;USD 200 e USD 500&lt;/strong&gt;, com mediana em torno de &lt;strong&gt;USD 350&lt;/strong&gt;. Vulnerabilidades de alta severidade concentram-se entre &lt;strong&gt;USD 590 e USD 2.000&lt;/strong&gt;, com mediana de &lt;strong&gt;USD 1.000&lt;/strong&gt;, enquanto vulnerabilidades críticas apresentam as maiores faixas de payout, entre aproximadamente &lt;strong&gt;USD 1.500 e USD 5.000&lt;/strong&gt;, com mediana de &lt;strong&gt;USD 3.000&lt;/strong&gt;. Essas faixas refletem o comportamento típico do mercado e evidenciam o aumento progressivo da variabilidade econômica conforme a severidade cresce.&lt;/p&gt;

&lt;p&gt;Sob a perspectiva econômica, esses achados reforçam a interpretação de programas de bug bounty como mercados de incentivos, nos quais as recompensas funcionam como sinais que equilibram a oferta de esforço especializado por parte dos pesquisadores e a demanda por descoberta de falhas por parte das organizações. Nesse ambiente, pesquisadores tendem a direcionar esforço apenas quando o retorno esperado excede seu custo marginal, o que sustenta a lógica de lucro e continuidade da operação. A assimetria informacional, embora presente, é disciplinada pela migração entre programas e tende a permanecer em patamares baixos e aceitáveis. Embora tais recompensas não representem o custo total associado à existência ou exploração de uma vulnerabilidade, elas constituem um proxy empírico padronizado para o payout organizacional associado à sua identificação e reporte.&lt;/p&gt;

&lt;p&gt;Do ponto de vista prático, a estimativa do &lt;strong&gt;Expected Vulnerability Discovery Cost (EVDC)&lt;/strong&gt; por severidade oferece subsídios objetivos para apoiar decisões de priorização, planejamento orçamentário e avaliação de investimentos em segurança da informação. Ao traduzir vulnerabilidades em faixas econômicas mensuráveis, o estudo contribui para reduzir a dependência exclusiva de avaliações qualitativas e aproxima a gestão de vulnerabilidades de uma lógica econômica comparável a outros investimentos em tecnologia e risco.&lt;/p&gt;

&lt;p&gt;Por fim, embora limitado ao escopo da descoberta e a programas de bug bounty, este trabalho estabelece uma base empírica para futuras pesquisas que explorem a relação entre custo de descoberta, custo de correção e impacto de exploração, bem como para comparações com outros modelos de investimento em segurança. Nesse sentido, a análise apresentada não busca fornecer valores determinísticos, mas oferecer referências econômicas robustas para compreender e discutir o custo das vulnerabilidades em ambientes digitais contemporâneos.&lt;/p&gt;

&lt;h3 id=&quot;referências&quot;&gt;Referências&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.sfu.ca/~wainwrig/Econ400/akerlof.pdf&quot;&gt;https://www.sfu.ca/~wainwrig/Econ400/akerlof.pdf&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cl.cam.ac.uk/archive/rja14/Papers/sciecon2.pdf&quot;&gt;https://www.cl.cam.ac.uk/archive/rja14/Papers/sciecon2.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Pesquisa" />
    <summary type="html">No campo da cibersegurança, uma das perguntas mais relevantes — e, simultaneamente, uma das mais difíceis de responder com precisão — é: qual é o custo financeiro de uma vulnerabilidade? Embora existam diversos programas e práticas voltadas ao gerenciamento de vulnerabilidades, o desafio de atribuir um valor monetário a cada falha, especialmente quando ainda não explorada, permanece pouco abordado sob uma ótica objetiva e quantitativa.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Considerações sobre a elaboração de relatórios de segurança</title>
    <link href="https://blog.lesis.lat/guias/2026/01/15/considerations-for-writing-security-reports.html" rel="alternate" type="text/html" title="Considerações sobre a elaboração de relatórios de segurança" />
    <published>2026-01-15T18:15:10+00:00</published>
    <updated>2026-01-15T18:15:10+00:00</updated>
    <id>https://blog.lesis.lat/guias/2026/01/15/considerations-for-writing-security-reports</id>
    <content type="html" xml:base="https://blog.lesis.lat/guias/2026/01/15/considerations-for-writing-security-reports.html">&lt;p&gt;Após dias ou semanas de trabalho, você identificou falhas relevantes, compreendeu a superfície de ataque do ambiente avaliado e reuniu evidências suficientes para demonstrar riscos reais ao negócio. Tecnicamente, a avaliação terminou. O que ainda falta é transformar esse conhecimento em um relatório claro, acionável e compreensível.&lt;/p&gt;

&lt;p&gt;Em qualquer atividade de segurança da informação — testes técnicos, auditorias, avaliações de maturidade ou análises de risco — o relatório é o principal artefato entregue ao cliente. Ele é o meio pelo qual descobertas técnicas se convertem em decisões estratégicas. Sem um bom relatório, até o melhor trabalho técnico perde impacto.&lt;/p&gt;

&lt;p&gt;Relatórios de segurança documentam objetivos, contexto, escopo, metodologia, achados, riscos e recomendações. A quantidade de informação envolvida é grande, e por isso a forma como ela é organizada e apresentada é tão importante quanto o conteúdo em si. Este texto não propõe um modelo fixo, mas orientações práticas para melhorar a qualidade da comunicação escrita em segurança da informação.&lt;/p&gt;

&lt;h3 id=&quot;tenha-clareza-sobre-o-objetivo&quot;&gt;Tenha clareza sobre o objetivo&lt;/h3&gt;

&lt;p&gt;Todo relatório de segurança deve partir de uma pergunta simples: qual era o objetivo da avaliação? Sem essa resposta bem definida, o documento tende a se tornar uma coleção de achados desconectados. É comum focar excessivamente em detalhes técnicos. Embora eles façam parte do trabalho, o objetivo de uma avaliação de segurança não é demonstrar conhecimento, e sim reduzir risco. O relatório deve refletir essa intenção.&lt;/p&gt;

&lt;p&gt;Manter o objetivo em mente durante a escrita ajuda a definir o que incluir, o nível de detalhe adequado e o tom do texto. Criar um esboço antes de escrever costuma facilitar esse processo, reduzindo repetições, evitando lacunas e tornando a escrita mais fluida.&lt;/p&gt;

&lt;h3 id=&quot;entenda-quem-vai-ler&quot;&gt;Entenda quem vai ler&lt;/h3&gt;

&lt;p&gt;Relatórios de segurança raramente têm um único leitor. Executivos, gestores e equipes técnicas costumam consumir o mesmo documento com expectativas diferentes. Por isso, o texto deve ser compreensível mesmo para quem não domina os detalhes técnicos. Isso não significa simplificar excessivamente, mas explicar conceitos e impactos de forma clara e contextualizada.&lt;/p&gt;

&lt;p&gt;A inclusão de um resumo executivo é uma prática consolidada. Ele apresenta uma visão de alto nível dos principais riscos e da postura geral de segurança, normalmente sendo a única parte lida por decisores. O restante do relatório deve ser mais técnico, desde que forneça contexto suficiente e não pressuponha conhecimento prévio.&lt;/p&gt;

&lt;h3 id=&quot;seja-criterioso-com-o-conteúdo&quot;&gt;Seja criterioso com o conteúdo&lt;/h3&gt;

&lt;p&gt;Um relatório de segurança não precisa ser extenso para ser completo. Ele precisa ser relevante. Tudo o que é incluído deve contribuir para o entendimento do risco ou para a tomada de decisão. Resultados brutos de ferramentas, capturas de tela repetitivas ou informações redundantes tendem a dificultar a leitura e diluir a mensagem principal. O foco deve estar em evidências que sustentem conclusões claras. Avaliar constantemente como cada informação se conecta ao objetivo da avaliação ajuda a manter o texto coeso e direcionado.&lt;/p&gt;

&lt;h3 id=&quot;busque-referências-e-padrões&quot;&gt;Busque referências e padrões&lt;/h3&gt;

&lt;p&gt;Escrever bons relatórios é uma habilidade desenvolvida com prática e observação. Analisar relatórios bem estruturados ajuda a identificar padrões de mercado, estilos de escrita eficazes e boas práticas de comunicação. Relatórios públicos, programas de bug bounty e &lt;a href=&quot;https://github.com/juliocesarfort/public-pentesting-reports&quot;&gt;repositórios com exemplos reais&lt;/a&gt; são boas fontes de referência. Buscar inspiração não significa copiar modelos, mas compreender como outros profissionais comunicam riscos de forma clara e objetiva.&lt;/p&gt;

&lt;h3 id=&quot;cuide-da-apresentação&quot;&gt;Cuide da apresentação&lt;/h3&gt;

&lt;p&gt;A apresentação influencia diretamente a credibilidade do relatório. Um conteúdo tecnicamente sólido, mas mal escrito ou visualmente inconsistente, transmite descuido. Padronização de títulos, espaçamento adequado e linguagem clara fazem diferença. Erros gramaticais e frases ambíguas comprometem a percepção profissional do documento. Independentemente do idioma, revisão cuidadosa é essencial.
No fim, o relatório representa tanto os achados quanto quem o produziu.&lt;/p&gt;

&lt;h3 id=&quot;documente-desde-o-início&quot;&gt;Documente desde o início&lt;/h3&gt;

&lt;p&gt;Um bom relatório começa durante a avaliação, não após seu término. Anotações feitas desde o início economizam tempo, evitam retrabalho e facilitam revisões futuras.  Registrar comandos, resultados, evidências e observações permite reconstruir o raciocínio por trás de cada achado. Com o tempo, é natural desenvolver modelos próprios de documentação ajustados ao fluxo de trabalho de cada profissional. A qualidade do relatório final depende diretamente da qualidade dessas informações.&lt;/p&gt;

&lt;h3 id=&quot;organização-ferramentas-e-segurança-das-informações&quot;&gt;Organização, ferramentas e segurança das informações&lt;/h3&gt;

&lt;p&gt;Mais importante do que a ferramenta utilizada é o processo adotado. As informações precisam estar organizadas, acessíveis e protegidas, especialmente porque avaliações de segurança frequentemente envolvem dados sensíveis. Automatizar a captura de saídas, complementar com observações pessoais e usar capturas de tela com critério ajuda a não perder informações relevantes. O objetivo final é que os dados sejam claros, confiáveis e fáceis de consultar.&lt;/p&gt;

&lt;h3 id=&quot;a-importância-dos-backups&quot;&gt;A importância dos backups&lt;/h3&gt;

&lt;p&gt;Backups raramente recebem atenção até se tornarem necessários. Documentação perdida representa tempo desperdiçado e, em alguns casos, impacto direto na entrega ao cliente. Manter cópias seguras da documentação, arquivos relevantes e snapshots de ambientes deve fazer parte da rotina. Em segurança da informação, prevenção quase sempre custa menos do que correção.&lt;/p&gt;

&lt;h3 id=&quot;a-importância-da-revisão-por-pares-e-de-olhares-externos&quot;&gt;A importância da revisão por pares e de olhares externos&lt;/h3&gt;

&lt;p&gt;Nenhum relatório deveria ser considerado final sem revisão. A revisão por pares melhora a qualidade técnica, ajuda a identificar inconsistências e fortalece a narrativa dos achados.&lt;/p&gt;

&lt;p&gt;Além disso, a leitura por alguém de fora do contexto da avaliação é fundamental para validar clareza e compreensão. Se esse leitor não entende o risco ou o raciocínio apresentado, é provável que o cliente também não entenda.&lt;/p&gt;

&lt;p&gt;Quando a revisão humana não é possível, modelos de linguagem podem ser usados como apoio para identificar erros gramaticais, problemas de coesão e oportunidades de melhoria. Eles não substituem revisores humanos, mas funcionam como um segundo par de olhos quando usados com critério.&lt;/p&gt;

&lt;h3 id=&quot;ferramentas-conceituais&quot;&gt;Ferramentas conceituais&lt;/h3&gt;

&lt;p&gt;Ferramentas conceituais ajudam a organizar o pensamento antes e durante a escrita. Modelos como &lt;a href=&quot;https://en.wikipedia.org/wiki/Five_Ws&quot;&gt;5W&lt;/a&gt; e 5W2H forçam o autor a refletir sobre propósito, contexto, escopo e método, evitando relatórios sem direção clara.&lt;/p&gt;

&lt;p&gt;Estruturas como Problema, Causa, Impacto e Recomendação ajudam a conectar achados técnicos a riscos reais e ações práticas. Abordagens baseadas em cenários de ameaça facilitam a comunicação de consequências, especialmente para públicos não técnicos.&lt;/p&gt;

&lt;p&gt;Conceitos como &lt;a href=&quot;https://en.wikipedia.org/wiki/Inverted_pyramid_(journalism)&quot;&gt;pirâmide invertida&lt;/a&gt; e a separação entre fato, evidência e interpretação aumentam a clareza e a credibilidade do texto. Perguntar constantemente o que o leitor precisa entender ou decidir após cada seção ajuda a manter o relatório objetivo e focado.&lt;/p&gt;

&lt;h3 id=&quot;conclusão&quot;&gt;Conclusão&lt;/h3&gt;

&lt;p&gt;Relatórios de segurança são instrumentos de comunicação. Eles conectam análises técnicas a decisões que afetam pessoas, processos e negócios. Produzir bons relatórios exige clareza de propósito, entendimento do público, organização da informação e cuidado com a forma. Revisões, boas práticas de documentação e ferramentas conceituais não são burocracia, mas mecanismos de qualidade.&lt;/p&gt;

&lt;p&gt;Um relatório bem escrito não é apenas um registro do que foi encontrado. Ele é a ponte entre descoberta e ação. Investir tempo nessa etapa é uma das formas mais eficazes de gerar impacto real em segurança da informação.&lt;/p&gt;

&lt;h3 id=&quot;referências&quot;&gt;Referências&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/juliocesarfort/public-pentesting-reports&quot;&gt;https://github.com/juliocesarfort/public-pentesting-reports&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Inverted_pyramid_(journalism)&quot;&gt;https://en.wikipedia.org/wiki/Inverted_pyramid_(journalism)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Five_Ws&quot;&gt;https://en.wikipedia.org/wiki/Five_Ws&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Eight_disciplines_problem_solving&quot;&gt;https://en.wikipedia.org/wiki/Eight_disciplines_problem_solving&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Scientific_method&quot;&gt;https://en.wikipedia.org/wiki/Scientific_method&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Guias" />
    <summary type="html">Após dias ou semanas de trabalho, você identificou falhas relevantes, compreendeu a superfície de ataque do ambiente avaliado e reuniu evidências suficientes para demonstrar riscos reais ao negócio. Tecnicamente, a avaliação terminou. O que ainda falta é transformar esse conhecimento em um relatório claro, acionável e compreensível.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Fortalecendo a comunidade brasileira de cibersegurança através da educação</title>
    <link href="https://blog.lesis.lat/comunidade/2026/01/14/commitiment-to-strengthening-community.html" rel="alternate" type="text/html" title="Fortalecendo a comunidade brasileira de cibersegurança através da educação" />
    <published>2026-01-14T22:13:00+00:00</published>
    <updated>2026-01-14T22:13:00+00:00</updated>
    <id>https://blog.lesis.lat/comunidade/2026/01/14/commitiment-to-strengthening-community</id>
    <content type="html" xml:base="https://blog.lesis.lat/comunidade/2026/01/14/commitiment-to-strengthening-community.html">&lt;p&gt;Em 2026, a LESIS dará mais um passo concreto no seu compromisso com o desenvolvimento sustentável do ecossistema de tecnologia e segurança da informação no Brasil. Realizaremos uma doação financeira para a ONG &lt;a href=&quot;https://mentebinaria.com.br/&quot;&gt;Mente Binária&lt;/a&gt;, uma organização que atua diretamente na formação de novos profissionais para a área de cibersegurança.&lt;/p&gt;

&lt;p&gt;Acreditamos que segurança da informação não se constrói apenas com tecnologia, mas com pessoas capacitadas, acesso ao conhecimento e oportunidades reais de crescimento profissional. É nesse ponto que a atuação da Mente Binária se torna essencial: ao investir em educação técnica acessível e de qualidade, a organização ajuda a transformar trajetórias individuais, impactando famílias, comunidades e, em última instância, o próprio país.&lt;/p&gt;

&lt;p&gt;A formação de novos profissionais em segurança fortalece toda a cadeia — reduz o déficit de talentos no mercado, eleva o nível técnico da indústria e contribui para um ambiente digital mais seguro, resiliente e preparado para os desafios atuais e futuros. Cada pessoa formada representa não apenas uma nova carreira, mas um avanço coletivo para o setor de segurança da informação como um todo.&lt;/p&gt;

&lt;p&gt;Nossa contribuição financeira é, por si só, uma ação pontual. No entanto, ela carrega uma convicção maior: quando os recursos certos chegam às pessoas certas, o impacto se multiplica. Pequenas ações, quando feitas de forma consistente e alinhadas a um propósito claro, constroem mudanças duradouras.&lt;/p&gt;

&lt;p&gt;Como instituição, a LESIS entende que seu papel vai além da atuação comercial. Temos a responsabilidade de contribuir positivamente para o ecossistema em que estamos inseridos, apoiando iniciativas que geram valor social, técnico e humano.&lt;/p&gt;

&lt;p&gt;Seguiremos buscando formas de apoiar projetos que acreditam na educação como motor de transformação. Porque, mesmo que cada ação individual pareça pequena, é assim — passo a passo — que se constrói um grande impacto.&lt;/p&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Comunidade" />
    <summary type="html">Em 2026, a LESIS dará mais um passo concreto no seu compromisso com o desenvolvimento sustentável do ecossistema de tecnologia e segurança da informação no Brasil. Realizaremos uma doação financeira para a ONG Mente Binária, uma organização que atua diretamente na formação de novos profissionais para a área de cibersegurança.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Porque patrocinamos eventos de Segurança da Informação</title>
    <link href="https://blog.lesis.lat/comunidade/2025/11/30/sposoring-events.html" rel="alternate" type="text/html" title="Porque patrocinamos eventos de Segurança da Informação" />
    <published>2025-11-30T12:33:00+00:00</published>
    <updated>2025-11-30T12:33:00+00:00</updated>
    <id>https://blog.lesis.lat/comunidade/2025/11/30/sposoring-events</id>
    <content type="html" xml:base="https://blog.lesis.lat/comunidade/2025/11/30/sposoring-events.html">&lt;p&gt;O ano de 2025 tem sido marcante para a LESIS. Entre projetos, pesquisas e o crescimento de nossa atuação no mercado, também assumimos um compromisso que consideramos fundamental: &lt;strong&gt;contribuir diretamente para e com a comunidade de Segurança da Informação&lt;/strong&gt;. 
Acreditamos que a inovação nasce do encontro entre pessoas, da troca constante de conhecimento e da construção coletiva de soluções que tornam o mundo digital mais seguro. Por isso, apoiar eventos ao redor do país se tornou uma prioridade e uma maneira concreta de contribuir com o desenvolvimento do setor.&lt;/p&gt;

&lt;p&gt;Ao longo deste ano, patrocinamos financeiramente e participamos de iniciativas como o &lt;a href=&quot;https://www.linkedin.com/posts/lesis-lat_ever-thought-about-spending-a-full-day-diving-activity-7361743511337017344-qYrN&quot;&gt;Hacking na Web Day RJ&lt;/a&gt;, no Rio de Janeiro; o &lt;a href=&quot;https://www.linkedin.com/posts/lesis-lat_xib%C3%A9sec-is-back-for-its-third-edition-bringing-activity-7364280260671987714-nAGf&quot;&gt;XibéSec&lt;/a&gt;, em Belém; o &lt;a href=&quot;https://www.instagram.com/lesis.lat/p/DRMt3HTkaKl/&quot;&gt;RioCyberSec&lt;/a&gt;, também no Rio; o &lt;a href=&quot;https://www.linkedin.com/posts/lesis-lat_during-the-month-of-february-two-researchers-activity-7299858979961118720-jJwY&quot;&gt;FortalSec&lt;/a&gt;, em Fortaleza; e o &lt;a href=&quot;https://www.linkedin.com/posts/lesis-lat_hackincariri-ciberseguranaexa-tecnologia-activity-7287745352982519809-fVA2&quot;&gt;Hack in Cariri&lt;/a&gt;, em Juazeiro do Norte. Cada um desses eventos possui sua identidade e seu público: alguns com forte vínculo acadêmico, outros mais voltados à indústria, alguns maiores e já consolidados, outros ainda em expansão. Para nós, essa pluralidade é exatamente o que torna a comunidade tão rica — e apoiar diferentes perfis é uma forma de garantir que o conhecimento chegue cada vez mais longe.&lt;/p&gt;

&lt;p&gt;Além dos patrocínios, também fizemos questão de estar presentes como participantes em eventos de destaque, como o &lt;a href=&quot;https://www.linkedin.com/posts/lesis-lat_lesis-is-proud-to-join-the-25th-edition-of-activity-7359220025188139008-KKYG&quot;&gt;SBSEG&lt;/a&gt;, o &lt;a href=&quot;&quot;&gt;Web Summit&lt;/a&gt; e a &lt;a href=&quot;https://www.linkedin.com/posts/htrgouvea_bsidesrj-foi-incr%C3%ADvel-obrigado-p-quem-separou-activity-7309547965197565952-R3Q7&quot;&gt;BSides RJ&lt;/a&gt;. São espaços onde as discussões mais atuais da cibersegurança ganham força, novas conexões surgem e parcerias estratégicas se desenvolvem. Estar próximos dessas conversas é fundamental tanto para o crescimento da &lt;a href=&quot;https://lesis.lat&quot;&gt;LESIS&lt;/a&gt; quanto para a nossa capacidade de contribuir efetivamente com avanços na área.&lt;/p&gt;

&lt;p&gt;Naturalmente, como empresa, parte desse investimento retorna em forma de posicionamento de marca, networking e oportunidades de negócios. Porém, esse não é o fator que nos move. A motivação principal é retribuir à comunidade tudo aquilo que ela representa para nós , que é o conhecimento compartilhado, a inspiração constante e a formação de profissionais que constroem um futuro mais seguro para todos. Queremos participar da base que sustenta esse ecossistema, incentivando o surgimento de novos talentos e fortalecendo iniciativas que fazem diferença para quem está entrando na área e para quem já trilha uma longa jornada.&lt;/p&gt;

&lt;p&gt;Também fazemos questão de distribuir nosso apoio por diferentes regiões do Brasil. Enquanto alguns polos como São Paulo já contam com maior volume de investimentos e eventos, outras localidades ainda enfrentam escassez de iniciativas e oportunidades. Apoiar encontros no Norte e no Nordeste, por exemplo, é uma forma de contribuir para um cenário mais equilibrado, em que talentos não sejam limitados pela geografia.&lt;/p&gt;

&lt;p&gt;Esse movimento está apenas começando. Seguimos abertos a colaborar com quem compartilha da mesma visão: uma comunidade forte, diversa, acessível e em constante evolução.&lt;/p&gt;

&lt;p&gt;Se você organiza um evento e acredita no impacto da educação, da troca e do desenvolvimento da segurança da informação, queremos fazer parte dessa construção ao seu lado.&lt;/p&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Comunidade" />
    <summary type="html">O ano de 2025 tem sido marcante para a LESIS. Entre projetos, pesquisas e o crescimento de nossa atuação no mercado, também assumimos um compromisso que consideramos fundamental: contribuir diretamente para e com a comunidade de Segurança da Informação. Acreditamos que a inovação nasce do encontro entre pessoas, da troca constante de conhecimento e da construção coletiva de soluções que tornam o mundo digital mais seguro. Por isso, apoiar eventos ao redor do país se tornou uma prioridade e uma maneira concreta de contribuir com o desenvolvimento do setor.</summary>
  </entry>
  <entry xml:lang="pt-BR">
    <title type="html">Dinheiro de graça, descontos sem esforço: hackeando o loop dos gift cards</title>
    <link href="https://blog.lesis.lat/vulnerabilidade/2025/10/04/rocking-gift-card.html" rel="alternate" type="text/html" title="Dinheiro de graça, descontos sem esforço: hackeando o loop dos gift cards" />
    <published>2025-10-04T16:29:00+00:00</published>
    <updated>2025-10-04T16:29:00+00:00</updated>
    <id>https://blog.lesis.lat/vulnerabilidade/2025/10/04/rocking-gift-card</id>
    <content type="html" xml:base="https://blog.lesis.lat/vulnerabilidade/2025/10/04/rocking-gift-card.html">&lt;p&gt;Com certa frequência, surge a oportunidade de realizar pesquisas de vulnerabilidades em e-commerces. Apesar do contexto ser o mesmo, cada uma das oportunidades é única,  pois sempre há peculiaridades em cada aplicação. Nesta publicação busco demonstrar um caso envolvendo gift cards que considero interessante.&lt;/p&gt;

&lt;p&gt;Sites que comercializam qualquer tipo de produto possuem uma enorme complexidade em suas implementações de lógicas, e essa complexidade frequentemente dificulta a garantia de que todos os fluxos contenham as medidas de seguranças adequadas. Nesta publicação, abordaremos especificamente dois itens frequentemente presentes em e-commerces: gift cards e cupons de descontos, em um estudo de caso onde foi localizada primitivas que permitiram a exploração de uma vulnerabilidade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gift cards&lt;/strong&gt;: virtual ou físico, é uma espécie de cartão pré-pago que os clientes podem adquirir para si ou para presentear outras pessoas. Ele possui um valor monetário associado, que pode ser usado para compras no site, permitindo ao destinatário escolher os produtos ou serviços que deseja adquirir até que o saldo do gift card seja totalmente utilizado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cupom de desconto&lt;/strong&gt;: trata-se de um código, geralmente alfanumérico, fornecido aos clientes para reduzir o valor de compra de produtos ou serviços. Ao aplicar o cupom durante o processo de pagamento, o cliente recebe um desconto ou benefício específico, como uma porcentagem de desconto ou frete grátis, tornando a compra mais vantajosa.&lt;/p&gt;

&lt;h3 id=&quot;rocking-the-gift-card-loop&quot;&gt;Rocking the gift card loop&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/publications/ecommerce-giftcard/product-list.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;Figura 1: Listagem de um Gift Card para venda;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Durante um ciclo de atividades de testes, identifiquei o seguinte cenário: um site oferece a opção de compra de gift cards e, simultaneamente, permite o uso de cupons de desconto ainda nessa mesma compra. Por exemplo, ao comprar de um gift card no valor de R$150,00, é permitido o uso de  um cupom de desconto chamado “15OFF”, que concede desconto de R$ 15. Dessa forma,  o valor a ser pago é de apenas R$135,00 por um gift card que ainda tem a capacidade de compra do valor de R$150,00.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/publications/ecommerce-giftcard/checkout.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;Figura 2: Comprando um Gift Card com cupom de desconto em e-commerce&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O problema neste cenário é: esse gift card pode ser utilizado durante a compra de outro gift card, com a possibilidade de aplicar o cupom de desconto novamente. Assim, na próxima transação, é possível adquirir um gift card de R$150,00, utilizando um gift card que custou apenas R$ 135,00. Aplicando outra vez o cupom de desconto de R$ 15,00.&lt;/p&gt;

&lt;p&gt;Surge então um padrão: a cada utilização desse fluxo, ocorre a geração indevida de R$15,00 em saldo adicional. Em termos práticos, a cada transação o usuário amplia o valor de crédito disponível sem efetuar novo desembolso financeiro.&lt;/p&gt;

&lt;p&gt;Para ilustrar, caso o processo seja repetido em 10 ciclos consecutivos, o crédito inicial de R$150,00 evolui para R$300,00, representando um aumento de 100% no saldo sem qualquer contrapartida financeira. Tal situação caracteriza um cenário de fraude sistêmica, uma vez que possibilita a criação de saldo fictício dentro da plataforma.&lt;/p&gt;

&lt;p&gt;Adicionalmente, é importante considerar que cada transação realizada está sujeita à cobrança de taxas operacionais por parte dos intermediadores de pagamento. Assim, além do prejuízo decorrente da geração indevida de saldo, o recorrente processamento de transações aumenta os custos da operação, ampliando o impacto financeiro negativo para a plataforma.&lt;/p&gt;

&lt;h3 id=&quot;conclusão&quot;&gt;Conclusão&lt;/h3&gt;

&lt;p&gt;A vulnerabilidade identificada tem origem em falhas de lógica de negócios, e a sua mitigação demanda ajustes estruturais no fluxo de compra. A primeira e mais direta medida consiste em restringir o uso de gift cards como forma de pagamento para a aquisição de novos gift cards. Essa regra simples elimina a possibilidade de encadeamento de transações que resultam na geração artificial de saldo.&lt;/p&gt;

&lt;p&gt;De forma complementar, recomenda-se estabelecer políticas específicas para cupons de desconto, impedindo que sejam aplicados em operações de compra de gift cards. Essa prática é comum no mercado e visa preservar a integridade financeira do sistema, já que os gift cards funcionam, na prática, como instrumentos de valor armazenado e não devem ser objeto de promoções que reduzem seu custo de aquisição.&lt;/p&gt;

&lt;p&gt;Adicionalmente, é altamente recomendável a implementação de mecanismos de prevenção e detecção de fraudes. A utilização de uma engine antifraude, integrada ao processo de checkout, permite identificar padrões suspeitos, como múltiplas transações de baixo risco aparente, mas que na prática revelam tentativas de exploração sistêmica. Esse tipo de controle, associado a monitoramento contínuo e políticas de limitação de uso (ex.: valor máximo de gift cards adquiridos por cliente em determinado período), fortalece a resiliência da plataforma contra abusos semelhantes.&lt;/p&gt;

&lt;p&gt;Em conjunto, essas medidas representam uma abordagem de mitigação em múltiplas camadas, reduzindo a exposição da empresa ao risco de fraude financeira e garantindo maior confiabilidade.&lt;/p&gt;

&lt;h4 id=&quot;referências&quot;&gt;Referências&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://soroush.me/downloadable/common-security-issues-in-financially-orientated-web-applications.pdf&quot;&gt;&lt;em&gt;Common Security Issues in Financially- Oriented Web Applications – NCC Group&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://datadome.co/threats/gift-card-fraud-prevention/&quot;&gt;&lt;em&gt;Gift Card Fraud Prevention Methods &amp;amp; Solutions&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    <author>
      <name>Heitor Gouvêa</name>
    </author>
    <category term="Vulnerabilidade" />
    <summary type="html">Com certa frequência, surge a oportunidade de realizar pesquisas de vulnerabilidades em e-commerces. Apesar do contexto ser o mesmo, cada uma das oportunidades é única, pois sempre há peculiaridades em cada aplicação. Nesta publicação busco demonstrar um caso envolvendo gift cards que considero interessante.</summary>
  </entry>
</feed>
