Bug de parsing de arquivos do Easy Grade Pro 4.1 usado como exemplo educacional para mostrar como iniciantes podem começar a pesquisa de vulnerabilidades através de engenharia reversa.
Um exemplo educacional criado para mostrar aos iniciantes que a pesquisa de vulnerabilidades através de engenharia reversa é possível desde o início.
Este repositório surge da necessidade de ter um exemplo simples que possa ser usado ao ensinar iniciantes que estão começando na pesquisa de vulnerabilidades, especialmente aqueles interessados em engenharia reversa.
Após concluir um curso, um treinamento ou um programa de mestrado relacionado a exploração binária ou análise binária, muitos alunos sentem que a pesquisa real de vulnerabilidades é algo muito além do seu nível. Eles geralmente associam engenharia reversa a tópicos muito avançados, como vulnerabilidades de kernel, exploração de navegadores, pesquisa de firmware ou alvos modernos complexos e, por causa disso, pensam que ainda não estão prontos. Na prática, o problema não é a falta de conhecimento, mas a falta de um ponto de partida realista.
Eu queria um exemplo que pudesse mostrar que com as habilidades aprendidas durante um curso básico, já é possível pegar um programa real, entender como ele funciona, provocar uma falha e identificar um bug real.
Este repositório é exatamente esse tipo de exemplo. Não se trata de encontrar uma vulnerabilidade complexa. Trata-se de mostrar que iniciantes podem começar com algo pequeno, reproduzível e compreensível, e ainda assim estar fazendo pesquisa real de vulnerabilidades.
Este repositório está diretamente relacionado à minha palestra "O Caminho que Leva ao Seu Primeiro CVE", onde explico que existem múltiplas formas de entrar no mundo da pesquisa de vulnerabilidades e que cada pessoa geralmente acaba seguindo um caminho diferente dependendo de seus interesses.
Algumas pessoas começam com auditoria de código-fonte, outras com engenharia reversa, outras com segurança web e outras com pesquisa de tecnologia. Todos esses caminhos são válidos, mas o importante é entender que cada área também possui pontos de entrada amigáveis para iniciantes.
Exemplos de caminhos para iniciantes incluem:
Esse tipo de alvo pode parecer básico, mas ensina as mesmas habilidades fundamentais que são necessárias mais tarde ao trabalhar em sistemas complexos.
Este repositório representa um desses caminhos para iniciantes na área de engenharia reversa.
A vulnerabilidade documentada aqui foi encontrada analisando um aplicativo antigo, entendendo como seu formato de arquivo é analisado e identificando um erro de programação que leva a uma falha. O impacto em si não é complexo, mas o processo é real, reproduzível e útil para aprender como a pesquisa de vulnerabilidades realmente funciona.
Este é o tipo de exemplo que uso ao explicar "O Caminho que Leva ao Seu Primeiro CVE", para mostrar que a engenharia reversa é um caminho válido desde o início e que começar com alvos simples não é apenas aceitável, mas muitas vezes a melhor forma de aprender.
Quando você está começando, aplicativos modernos são frequentemente complexos demais. Eles usam proteções, mitigações e bases de código que são difíceis de entender sem muita experiência. Software antigo é diferente.
Aplicações legadas não foram escritas com práticas modernas de segurança em mente. Frequentemente contêm bugs simples de análise, operações de memória inseguras e erros de lógica que podem ser compreendidos com habilidades básicas de reversão. Isso os torna perfeitos para aprender.
Com um programa antigo, você pode: reverter o binário, entender o formato do arquivo, provocar uma falha, analisar a falha, localizar o bug, documentar o problema e reportar a vulnerabilidade. Em outras palavras, você aprende as habilidades fundamentais que todo pesquisador de vulnerabilidades precisa.
É exatamente isso que este exemplo demonstra.
Este exemplo é importante porque mostra algo muito simples:
Se você gosta de engenharia reversa, pode seguir esse caminho desde o início. Pode levar anos para dominá-lo, mas você não precisa esperar anos para começar a fazer trabalho real.
A vulnerabilidade (CVE-2025-70330) afeta a lógica de análise de arquivos do Easy Grade Pro 4.1 ao carregar arquivos de boletim .EGP proprietários.
O aplicativo reconstrói estruturas internas de boletim lendo campos de posição fixa do arquivo e usando esses valores como deslocamentos dentro do buffer do arquivo carregado. Esses deslocamentos são posteriormente usados para calcular tamanhos de memória e copiar dados para buffers alocados dinamicamente.
Em condições normais, o arquivo passa por várias verificações estruturais antes que a análise continue. No entanto, uma vez que essas verificações são bem-sucedidas, o analisador confia nos valores de deslocamento armazenados no arquivo sem validar se eles permanecem dentro dos limites do buffer carregado.
Ao modificar bytes específicos dentro de um arquivo .EGP que de outra forma seria válido, é possível corromper esses cálculos internos de deslocamento. Quando o analisador usa esses valores posteriormente, ele tenta ler memória fora da região válida do arquivo, resultando em uma violação de acesso e falha do aplicativo.
Esta condição corresponde a uma leitura fora dos limites (CWE-125), levando a uma negação de serviço local quando o arquivo manipulado é aberto.
O formato de arquivo .EGP é analisado usando uma abordagem baseada em deslocamentos. Em vez de processar o arquivo sequencialmente, o analisador lê estruturas internas que contêm deslocamentos de início e fim descrevendo onde blocos de dados específicos devem estar localizados dentro do arquivo.