Puoi fare un overflow allo spazio heap da uno stack?

1

Stavo leggendo di buffer overflow e so che posso avere un overflow dello stack e un overflow dell'heap. Ma poiché lo stack e l'heap si incontrano a un certo punto, sarebbe possibile traboccare in uno dall'altro?

Sarebbe fantastico se tu potessi dare una spiegazione riguardo al permesso di esecuzione anche nello spazio dell'heap.

    
posta Rowana Ravenclaw 05.11.2016 - 17:28
fonte

1 risposta

1

Un overflow del buffer dello stack di solito sovrascrive i frame dello stack precedenti o l'indirizzo di ritorno. Lo stack si riduce e i buffer all'interno dello stack "crescono" (non lo fanno).

Sulla maggior parte dei sistemi, lo stack si riduce e si trova sopra l'heap.

Un overflow dello stack non può sovrascrivere nulla sull'heap perché l'heap arriva prima dello stack. Tuttavia un underflow forzerebbe lo stack ad eccedere, causando il crash del programma prima che qualcosa venisse sovrascritto.

Se i puntatori sono numeri interi senza segno, l'incremento di un puntatore sufficientemente lungo potrebbe far sì che punti all'heap. Ma dal momento che i buffer overflow di solito scrivono su tutti gli indirizzi nel buffer traboccante, il programma si bloccherà quando sarà andato oltre l'inizio dello stack. E anche se lo stack inizia con l'indirizzo più alto, ci sarà un dereferenziamento del puntatore NULL, i tentativi di scrivere sul testo e i tentativi di scrittura di leggere solo le sezioni di dati, prima che l'heap arrivi.

Su sistemi rari in cui lo stack cresce e verso l'heap, un overflow del buffer dello stack potrebbe sovrascrivere i dati sull'heap, presupponendo che il sistema non crei una terra di nessuno tra lo stack e l'heap.

Alcuni sistemi allocano automaticamente la memoria allo stack man mano che cresce, altri hanno un'area pre-allocata per lo stack. Gli stack con crescita automatica sono limitati da entrambi i criteri e / o dai sistemi a 64 bit: memoria disponibile e scambio.

Un normale overflow del buffer su questi sistemi non danneggerà l'heap perché colpisce la terra di nessuno prima dell'heap.

    
risposta data 05.11.2016 - 17:48
fonte

Leggi altre domande sui tag