mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-22 11:03:24 +00:00
92 lines
6 KiB
Markdown
92 lines
6 KiB
Markdown
# Verificações de Segurança das Funções de Heap
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
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).
|
|
|
|
</details>
|
|
|
|
## 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`
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
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).
|
|
|
|
</details>
|