hacktricks/binary-exploitation/heap/heap-functions-security-checks.md

6 KiB

Verificações de Segurança das Funções de Heap

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Essa função remove um bloco de uma lista duplamente encadeada. Verificações comuns garantem que a estrutura da lista encadeada permaneça consistente ao desvincular blocos.

  • Verificações de Consistência:
  • Verifique se P->fd->bk == P e P->bk->fd == P.
  • Mensagem de erro: corrupted double-linked list

_int_malloc

Essa função é responsável por alocar memória da heap. As verificações aqui garantem que a memória não seja corrompida durante a alocação.

  • Verificação de Tamanho do Fastbin:
  • Ao remover um bloco de um fastbin, certifique-se de que o tamanho do bloco esteja dentro da faixa do fastbin.
  • Mensagem de erro: malloc(): memory corruption (fast)
  • Verificação de Consistência do Smallbin:
  • Ao remover um bloco de um smallbin, certifique-se de que os links anteriores e posteriores na lista duplamente encadeada sejam consistentes.
  • Mensagem de erro: malloc(): smallbin double linked list corrupted
  • Verificação de Faixa de Memória do Unsorted Bin:
  • Garanta que o tamanho dos blocos no unsorted bin esteja dentro dos limites mínimo e máximo.
  • Mensagem de erro: malloc(): memory corruption
  • Verificação de Consistência do Unsorted Bin (Primeiro Cenário):
  • Ao inserir um bloco restante no unsorted bin, verifique se unsorted_chunks(av)->fd->bk == unsorted_chunks(av).
  • Mensagem de erro: malloc(): corrupted unsorted chunks
  • Verificação de Consistência do Unsorted Bin (Segundo Cenário):
  • Igual à verificação anterior, mas acionada ao inserir após dividir um bloco rápido ou pequeno.
  • Mensagem de erro: malloc(): corrupted unsorted chunks 2

_int_free

Essa função libera memória previamente alocada. As verificações aqui ajudam a garantir a desalocação adequada da memória e a prevenir a corrupção de memória.

  • Verificação de Limite do Ponteiro:
  • Garanta que o ponteiro sendo liberado não esteja envolvendo a memória.
  • Mensagem de erro: free(): invalid pointer
  • Verificação de Tamanho:
  • Garanta que o tamanho do bloco sendo liberado seja pelo menos MINSIZE ou um múltiplo de MALLOC_ALIGNMENT.
  • Mensagem de erro: free(): invalid size
  • Verificação de Tamanho do Fastbin:
  • Para blocos fastbin, garanta que o tamanho do próximo bloco esteja dentro dos limites mínimo e máximo.
  • Mensagem de erro: free(): invalid next size (fast)
  • Verificação de Dupla Liberação do Fastbin:
  • Ao inserir um bloco em um fastbin, garanta que o bloco na cabeça não seja o mesmo que está sendo inserido.
  • Mensagem de erro: double free or corruption (fasttop)
  • Verificação de Consistência do Fastbin:
  • Ao inserir em um fastbin, garanta que os tamanhos do bloco na cabeça e do bloco sendo inserido sejam iguais.
  • Mensagem de erro: invalid fastbin entry (free)
  • Verificação de Consistência do Top Chunk:
  • Para blocos não fastbin, garanta que o bloco não seja o mesmo que o top chunk.
  • Mensagem de erro: double free or corruption (top)
  • Verificação de Limites de Memória:
  • Garanta que o próximo bloco por memória esteja dentro dos limites da arena.
  • Mensagem de erro: double free or corruption (out)
  • Verificação do Bit Prev_inuse:
  • Garanta que o bit prev_inuse no próximo bloco esteja marcado.
  • Mensagem de erro: double free or corruption (!prev)
  • Verificação de Tamanho Normal:
  • Garanta que o tamanho do próximo bloco esteja dentro de faixas válidas.
  • Mensagem de erro: free(): invalid next size (normal)
  • Verificação de Consistência do Unsorted Bin:
  • Ao inserir um bloco coalescido no unsorted bin, verifique se unsorted_chunks(av)->fd->bk == unsorted_chunks(av).
  • Mensagem de erro: free(): corrupted unsorted chunks
Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks: