Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-70330 — 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. | Kitploit
Ferramentas/GitHubGitHub/themalwareguardian/cve-2025-70330
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoExploraçãoEngenharia ReversaDepuradoresFuzzingAnálise de BináriosAprendizado e Educação

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Exploração de Binários
GitHubthemalwareguardian/cve-2025-70330

CVE-2025-70330

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.

Ver Repositório
2há 4 mesesAinda não revisado

🧩 CVE-2025-70330: Vulnerabilidade de Análise de Arquivo do Easy Grade Pro 4.1

Um exemplo educacional criado para mostrar aos iniciantes que a pesquisa de vulnerabilidades através de engenharia reversa é possível desde o início.




📑 Índice

  • Por que este repositório existe
  • Relação com "O Caminho que Leva ao Seu Primeiro CVE"
  • Por que software antigo é perfeito para aprender
  • Por que este exemplo é importante
  • Sobre a vulnerabilidade
  • Análise técnica
  • 📂
    • Por que apenas arquivos malformados específicos crasham o aplicativo
    • Prova de Conceito
    • Comportamento do crash
    • Notas



🎓 Por que este repositório existe

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.




🧭 Relação com "O Caminho que Leva ao Seu Primeiro CVE"

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:

  • Na auditoria de código-fonte, revisando pequenos projetos de código aberto.
  • Em engenharia reversa, trabalhando com aplicações legadas de lógica simples.
  • Em segurança de aplicações web, analisando aplicações web simples ou plugins antigos de CMS.
  • Em pesquisa de tecnologia, estudando protocolos ou software que não foram projetados com segurança em mente.
  • E muitos outros pontos de partida semelhantes.

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.




Baixar ferramenta
🧱 Por que software antigo é perfeito para 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.




🧪 Por que este exemplo é importante

Este exemplo é importante porque mostra algo muito simples:

  • Você não precisa ser um especialista para começar.
  • Você não precisa explorar o kernel do sistema operacional ou um navegador.
  • Você pode começar com algo pequeno, entendê-lo, documentá-lo e ainda assim produzir resultados reais.

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.




⚠️ Sobre a vulnerabilidade

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.




🔬 Análise técnica

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.

Esses deslocamentos são usados para calcular o tamanho de uma região de memória e copiar dados do buffer do arquivo carregado para a memória recém-alocada.

A lógica vulnerável pode ser resumida como:

root@kitploit:~
size = offset_end - offset_start + 1
buffer = calloc(1, size)
memcpy(buffer, file_buffer[offset_start - base_offset], size)

Uma vez que o arquivo passa pelas verificações de validação iniciais, o analisador assume que os deslocamentos armazenados no arquivo são válidos. Nenhuma verificação é realizada para garantir que o ponteiro de origem calculado permaneça dentro do buffer do arquivo carregado.

Se os deslocamentos forem manipulados de forma controlada, o analisador pode tentar ler memória fora da região válida, causando uma violação de acesso durante a operação memcpy().




💥 Por que apenas arquivos malformados específicos crasham o aplicativo

Nem todo arquivo .EGP malformado provoca a falha.

O analisador realiza várias verificações de consistência antes de atingir o caminho de código vulnerável. Se a estrutura do arquivo estiver muito corrompida, o aplicativo interrompe a análise precocemente e informa que o boletim está danificado.

No entanto, algumas modificações mantêm as estruturas internas coerentes o suficiente para passar pelas verificações iniciais, enquanto ainda produzem valores de deslocamento incorretos posteriormente no processo de análise.

Quando isso acontece, o analisador atinge rotinas mais profundas onde esses deslocamentos são confiados e usados em operações de cópia de memória, eventualmente causando a leitura fora dos limites.




🧾 Prova de Conceito

A falha pode ser provocada modificando um arquivo .EGP válido e inserindo dados controlados em um deslocamento específico.

A prova de conceito funciona da seguinte forma:

  1. Pegando um arquivo de boletim válido gerado pelo Easy Grade Pro.
  2. Lendo o arquivo como dados binários brutos.
  3. Inserindo uma sequência de bytes em um offset fixo.
  4. Salvando o arquivo modificado.
  5. Abrindo o arquivo manipulado no aplicativo.

Exemplo de parâmetros usados no PoC:

  • Offset de injeção: 548
  • Tamanho do payload: 21 bytes
  • Valor do payload: 0x41 ("A")

Esta modificação mantém o arquivo estruturalmente válido o suficiente para passar nas verificações iniciais, mas corrompe os cálculos internos de deslocamento usados posteriormente pelo analisador, eventualmente causando a falha do aplicativo.




💣 Comportamento do crash

Quando o arquivo malformado é aberto sob um depurador, o aplicativo falha durante uma operação de cópia de memória.

A exceção observada é uma violação de acesso causada por uma leitura de memória inválida.

Durante a depuração, o ponteiro inválido usado por memcpy() se origina de cálculos de deslocamento derivados das estruturas do arquivo analisadas. Quando esses deslocamentos referenciam memória fora do buffer do arquivo carregado, o ponteiro de origem aponta para um endereço não mapeado, causando a falha.

Isso confirma que a vulnerabilidade é causada pela falta de validação de limites durante a análise do arquivo.




📌 Notas

Esta vulnerabilidade afeta um produto de fim de vida que não é mais mantido pelo fornecedor.

O problema é documentado para fins educacionais e de pesquisa, e para dar aos iniciantes um exemplo concreto de como o software pode ser analisado passo a passo para entender como os bugs aparecem e como vulnerabilidades reais são encontradas.