mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
92 lines
6.1 KiB
Markdown
92 lines
6.1 KiB
Markdown
# Controlli di sicurezza delle funzioni di heap
|
|
|
|
<details>
|
|
|
|
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se vuoi vedere la **tua azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
|
|
|
</details>
|
|
|
|
## unlink
|
|
|
|
Questa funzione rimuove un chunk da una lista doppiamente collegata. I controlli comuni garantiscono che la struttura della lista collegata rimanga consistente durante lo scollegamento dei chunk.
|
|
|
|
* **Controlli di coerenza**:
|
|
* Verifica se `P->fd->bk == P` e `P->bk->fd == P`.
|
|
* Messaggio di errore: `corrupted double-linked list`
|
|
|
|
## \_int\_malloc
|
|
|
|
Questa funzione è responsabile dell'allocazione di memoria dall'heap. I controlli qui garantiscono che la memoria non venga corrotta durante l'allocazione.
|
|
|
|
* **Controllo della dimensione di Fastbin**:
|
|
* Quando si rimuove un chunk da un fastbin, assicurarsi che la dimensione del chunk sia nell'intervallo del fastbin.
|
|
* Messaggio di erroro: `malloc(): memory corruption (fast)`
|
|
* **Controllo di coerenza di Smallbin**:
|
|
* Quando si rimuove un chunk da un smallbin, assicurarsi che i collegamenti precedente e successivo nella lista doppiamente collegata siano coerenti.
|
|
* Messaggio di errore: `malloc(): smallbin double linked list corrupted`
|
|
* **Controllo dell'intervallo di memoria di Unsorted Bin**:
|
|
* Assicurarsi che la dimensione dei chunk nell'unsorted bin sia compresa nei limiti minimi e massimi.
|
|
* Messaggio di errore: `malloc(): memory corruption | malloc(): invalid next size (unsorted)`
|
|
* **Controllo di coerenza di Unsorted Bin (Primo Scenario)**:
|
|
* Quando si inserisce un chunk di resto nell'unsorted bin, controllare se `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
|
* Messaggio di errore: `malloc(): corrupted unsorted chunks`
|
|
* **Controllo di coerenza di Unsorted Bin (Secondo Scenario)**:
|
|
* Come il controllo precedente, ma attivato quando si inserisce dopo aver diviso un chunk veloce o piccolo.
|
|
* Messaggio di errore: `malloc(): corrupted unsorted chunks 2`
|
|
|
|
## \_int\_free
|
|
|
|
Questa funzione libera la memoria precedentemente allocata. I controlli qui aiutano a garantire una corretta deallocazione della memoria e a prevenire la corruzione della memoria.
|
|
|
|
* **Controllo dei limiti del puntatore**:
|
|
* Assicurarsi che il puntatore liberato non si avvolga attorno alla memoria.
|
|
* Messaggio di errore: `free(): invalid pointer`
|
|
* **Controllo della dimensione**:
|
|
* Assicurarsi che la dimensione del chunk liberato sia almeno `MINSIZE` o un multiplo di `MALLOC_ALIGNMENT`.
|
|
* Messaggio di errore: `free(): invalid size`
|
|
* **Controllo della dimensione di Fastbin**:
|
|
* Per i chunk fastbin, assicurarsi che la dimensione del chunk successivo sia nei limiti minimi e massimi.
|
|
* Messaggio di errore: `free(): invalid next size (fast)`
|
|
* **Controllo di Double Free di Fastbin**:
|
|
* Quando si inserisce un chunk in un fastbin, assicurarsi che il chunk in testa non sia lo stesso di quello inserito.
|
|
* Messaggio di errore: `double free or corruption (fasttop)`
|
|
* **Controllo di coerenza di Fastbin**:
|
|
* Quando si inserisce in un fastbin, assicurarsi che le dimensioni del chunk in testa e del chunk inserito siano uguali.
|
|
* Messaggio di errore: `invalid fastbin entry (free)`
|
|
* **Controllo di coerenza del Top Chunk**:
|
|
* Per i chunk non fastbin, assicurarsi che il chunk non sia lo stesso del top chunk.
|
|
* Messaggio di errore: `double free or corruption (top)`
|
|
* **Controllo dei limiti di memoria**:
|
|
* Assicurarsi che il chunk successivo per memoria sia nei limiti dell'arena.
|
|
* Messaggio di errore: `double free or corruption (out)`
|
|
* **Controllo del bit Prev\_inuse**:
|
|
* Assicurarsi che il bit precedente-in-uso nel chunk successivo sia contrassegnato.
|
|
* Messaggio di errore: `double free or corruption (!prev)`
|
|
* **Controllo della dimensione normale**:
|
|
* Assicurarsi che la dimensione del chunk successivo sia nei range validi.
|
|
* Messaggio di errore: `free(): invalid next size (normal)`
|
|
* **Controllo di coerenza di Unsorted Bin**:
|
|
* Quando si inserisce un chunk fuso nell'unsorted bin, controllare se `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
|
* Messaggio di errore: `free(): corrupted unsorted chunks`
|
|
|
|
<details>
|
|
|
|
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se vuoi vedere la **tua azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
|
|
|
</details>
|