# 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: * Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe seus truques de hacking enviando PRs para os** repositórios [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
## unlink 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 | malloc(): invalid next size (unsorted)` * **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 de 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: * Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe seus truques de hacking enviando PRs para os** repositórios [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).