Overflow Binary Resource File

Popis

Zdroj přetečení vyrovnávací paměti může být vstupní data. Když přijde z prostředků Overflow binárním souboru, útočník musí změnit / připravit binární soubor takovým způsobem, že aplikace, po přečtení tohoto souboru, se stal náchylný ke klasickému útoku přetečení vyrovnávací paměti . Jediný rozdíl mezi tímto útokem a klasické Jedním z nich je zdrojem vstupních dat. Běžné příklady jsou speciálně vytvořený MP3, JPEG nebo ANI souborů, které způsobují přetečení zásobníku.

Rizikové faktory

TBD

Příklady

Aplikace přečte prvních 8 znaků z binárního souboru.

rezos @ dojo-labs ~ / OWASP / binární $ cat read_binary_file.c
# Include <stdio.h>
# Include <string.h>

int main (void)
{
       FILE * f;
       char p [8];
       char b [8];

f = fopen ("file.bin", "r");
       fread (b, sizeof (b), 1, f);
       fclose (f);

strcpy (p, b);

printf ("% s \ n", p);

return 0;
}

Vytvořený soubor obsahuje více než 8 znaků.

rezos @ dojo-labs ~ / OWASP / binární $ cat file.bin
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Po pokusu o spuštění ještě jednou, bude aplikace skončí s:

rezos @ dojo-labs ~ / OWASP / binární $. / read_binary_file
Segmentation fault

Selhání. Bylo to buffer overflow?

rezos @ dojo-labs ~ / OWASP / binární $ gdb-q. / read_binary_file
Použití hostitele libthread_db knihovny "/ lib/libthread_db.so.1".
(Gdb) r
Spuštění programu: / home / rezos / OWASP / binární / read_binary_file

Program přijímaného signálu SIGSEGV, Segmentation fault.
0xb7e4b9e3 v strcpy () from / lib/libc.so.6

Ano, to byl buffer overflow v strcpy () funkce.

Proč?

fread (b, sizeof (b), 1, f), - čte znaky z proudu f, sizeof (b) jednou, k ochrannému b. Vypadá to OK. Nicméně není tam žádný prostor pro '\ 0', která ukončí řetězec.

Whiile vykonávající strcpy (p, b), kde oba nárazníky jsou stejné, přepad se koná. Co způsobuje to je absence nulovým bytem / ukončovací znak do bufferu b []. Strcpy () funkce zkopírovat do vyrovnávací paměti p [] vše počínaje b [0] a končí na nulovým bytem. Útočník úspěšně provedla přetečení vyrovnávací paměti útok tím, že crafting speciální soubor.

Jmenovitě: