[0x17] Ataques de corrupção de memória

COMPARTILHAR:

Whatsapp Telegram Twitter Facebook Reddit

Quais ataques de corrupção de memória além do buffer overflow existem?

 

Este tutorial faz parte do GUIA COMPLETO do professional em Segurança Ofensiva de Software, saiba mais.

Aula 23: Outras corrupções de memória

As vulnerabilidades de corrupção de memória continuam sendo uma das classes de falhas de segurança mais exploradas. Dentro deste cenário, o Heap Buffer Overflow e a falha em String de Formatação se destacam como métodos poderosos para sequestrar o fluxo de execução de um programa. Embora não entraremos em detalhes na exploração dessas vulnerabilidades, abaixo você confere uma breve introdução sobre cada uma delas. Caso deseja aprofundar no tema abordado, recomendamos realizar os desafios Phoenix apresentados no site Exploit Education.

Aula 23.1: Heap

Heap é a área de memória alocada dinamicamente, crescendo do menor endereço para o maior e frequentemente usada para variáveis globais e estruturas de dados complexas, em contraste com a Stack (Pilha), que é usada para variáveis locais de função. 

Assim, a vulnerabilidade de Heap Buffer Overflow (transbordamento de buffer no Heap) ocorre quando uma entrada de usuário excede o tamanho do bloco de memória que lhe foi alocado no Heap. Ao extrapolar o limite, os dados do atacante sobrescrevem informações adjacentes na memória.

O ataque se torna crítico quando o buffer transbordado está localizado imediatamente antes de dados importantes, como um ponteiro para função. Ponteiros de função são comumente utilizados na arquitetura de bibliotecas dinâmicas do sistema operacional. O sistema usa uma tabela com símbolos e endereços das funções de bibliotecas (como a função printf) para realizar chamadas.

O ataque envolve os seguintes passos:

Figura 1: Heap Buffer Overflow

  • O atacante envia uma entrada de dados maliciosa que é maior do que o buffer alocado.
  • Essa entrada sobrescreve o ponteiro de função adjacente no Heap.
  • O atacante substitui o endereço original da função legítima pelo endereço contendo um código malicioso (shellcode).
  • Quando o programa tenta chamar a função original, o fluxo de execução é desviado para o shellcode, sequestrando o controle do programa.

Aula 23.2: Format String

vulnerabilidade de Format String (falha em String de Formatação) é uma técnica considerada um pouco mais complexa de se executar do que um Buffer Overflow simples. A vulnerabilidade surge em funções que manipulam strings (como as da família printf na linguagem C) quando o programador permite que uma entrada de usuário seja usada diretamente na string de formatação, sem nenhum tipo de tratativa. 

Figura 2: exemplo de código em C

Isso permite ao atacante injetar diretamente na entrada, strings de formatação que possam ser interpretadas maliciosamente pelo programa.

No padrão ANSI C, diversas funções são vulneráveis se não usadas corretamente, pois são utilizadas para converter tipos de dados C para representação de string. Abaixo você vê algumas das funções de formatação de string em C:

  • printf: Imprime para a stream 'stdout'.
  • fprintf: Imprime para uma stream FILE.
  • sprintf: Imprime em uma string.
  • snprintf: Imprime em uma string com verificação de limite de tamanho.
  • Outras: 
    • vfprintf, vprintf, vsprintf, vsnprintf, setproctitle, syslog, err*, verr*, warn*, vwarn*

Um atacante pode explorar a falha em String de Formatação de duas maneiras principais:

  • Leitura de Memória: 
    • O especificador %x permite imprimir valores da pilha de execução do programa, para encontrar o offset (deslocamento) de exploração.
    • O %s permite visualizar de forma arbitrária a memória a partir de um endereço escolhido até encontrar um byte nulo.
Figura 3: exemplo formatação de string
  • Escrita de Memória: 
    • %n tem a função de escrever na memória. Ele grava no endereço de memória fornecido, o número de bytes que já foram impressos pela função de formatação.
O %n não é amplamente conhecido e é o especificador mais perigoso por permitir que o atacante escreva um valor arbitrário na memória, sendo tipicamente utilizado para sobrescrever um endereço de retorno ou ponteiro de função. Mas como isso é possível?
  1. O atacante insere na string de entrada o endereço de memória alvo que deseja modificar (por exemplo, o endereço de retorno da função).
  2. Em seguida, ele utiliza o especificador %n em conjunto com especificadores de largura, para forçar a impressão de um número exato de bytes.
  3. O número de bytes impresso é, na verdade, o valor que o atacante deseja escrever no endereço alvo. Ao redirecionar o fluxo de execução, o atacante ganha o controle total do programa.
Para mitigar Format String Vulnerabilities, deve-se sempre definir a string de formatação corretamente. Também, o uso de uma função de formatação segura como a snprintf que exige adicionar um limitador ao tamanho da string a ser fornecida pelo usuário, auxilia na mitigação contra a vulnerabilidade.

Próxima aula, clique aqui.

Nome

#ann,25,#HK,30,#LTCode,131,Artigo - Diversos,158,Artigo - Games,201,Artigo - Tecnologia,635,autor-thomaz,7,blueteam,15,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,71,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,estudo,8,HN,12,IA,9,logica,14,Pentest,24,Programar C,29,Programar POO,6,Programar Python,6,Programar Shell,25,Programar verilog,12,qradar,4,Raspberry Pi,15,Redes,3,Review,4,root,134,Shorty Awards,1,Smartphones - Reviews,33,Teoria,10,Top Nostalgia,2,VPN,19,WhatsApp,46,
ltr
item
Limon Tec: [0x17] Ataques de corrupção de memória
[0x17] Ataques de corrupção de memória
Quais ataques de corrupção de memória além do buffer overflow existem?
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikJMn5LIEfrtHPEivASNGrjkvEXwlg4pIfsUmJSG3iiHB7Qq2GaWwJER5C7ACwPdzjN3mOJMzZdm6Bafmml93aqYJZ_yJFwmxuidt2RVhJnGRLXV2v545RJExEEpfLRP6o2trej48bX-8CaV9ryot9es4nMq4iCNEvPxcVUu2M8uAvqxo4gECtD5lHKw/w640-h421/limontec_seguranca_ofensiva_software.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikJMn5LIEfrtHPEivASNGrjkvEXwlg4pIfsUmJSG3iiHB7Qq2GaWwJER5C7ACwPdzjN3mOJMzZdm6Bafmml93aqYJZ_yJFwmxuidt2RVhJnGRLXV2v545RJExEEpfLRP6o2trej48bX-8CaV9ryot9es4nMq4iCNEvPxcVUu2M8uAvqxo4gECtD5lHKw/s72-w640-c-h421/limontec_seguranca_ofensiva_software.png
Limon Tec
https://www.limontec.com/2025/10/ataques-de-corrupcao-de-memoria.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2025/10/ataques-de-corrupcao-de-memoria.html
false
2157924926610706248
UTF-8
Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo