Gli exploit di overflow dello stack e dell'heap non sono più efficaci?

4

Tutti i nuovi SO implementano il no execute bit al fine di superare le vulnerabilità che potrebbero essere utilizzate per eseguire codice dannoso? ad esempio, è implementato in Win7 ? Significa che il modo tradizionale di stack & gli exploit di overflow dell'heap non sono più efficaci?

    
posta Adban 06.11.2012 - 11:26
fonte

3 risposte

7

"Via tradizionale" potrebbe significare qualsiasi cosa. Suppongo che tu stia facendo riferimento a un buffer overflow in cui l'indirizzo di ritorno viene sostituito con un indirizzo controllato da un attaccante sulla memoria per eseguire codice artbitrary. Sì, questo è mitigato dal bit NX. Ma no. Ciò non impedisce agli aggressori di utilizzare altri meccanismi come la programmazione orientata al ritorno che utilizza i gadget ROP per concatenare le istruzioni per eseguire in modo efficace il codice di propria scelta.

Avevo già la stessa domanda, ma mi sono reso conto che lo straripamento dello stack e dell'heap non si estinguerebbe nel prossimo futuro. Windows, Linux, Solaris e altri sistemi operativi conosciuti hanno meccanismi di protezione abilitati che riducono notevolmente questi attacchi. D'altra parte, pensa alle piattaforme mobili. Il firmware, il codice di banda base solitamente scritto secoli fa in C, è ancora suscettibile a questi attacchi e tali sistemi potrebbero non avere i meccanismi di protezione sopra menzionati.

Questa risposta è un'ottima lettura per ulteriori informazioni sui meccanismi di protezione. Anche la tua domanda specifica su NX è trattata qui

    
risposta data 06.11.2012 - 16:30
fonte
2

Un modo per superare il bit no execute è quello di utilizzare completamente obiettivi di overflow diversi. Le persone si concentrano troppo sulle vulnerabilità di overflow dello stile del codice shell e ignorano gran parte delle vulnerabilità presenti. Ad esempio , puoi scavalcare altri array e persino stringhe. Non è necessario alterare lo stack o lo stato heap per sfruttare un overflow del buffer, è sufficiente fare in modo che il programma esegua qualcosa che non era destinato a fare. È possibile eseguire l'overflow in:

  • Stringhe di shell
  • stringhe SQL
  • Qualsiasi stringa contenente una lingua interpretata
  • Chiavi o dati di crittografia che sono solo in testo normale nella memoria

Nessuna di queste cose richiede l'esecuzione di alcun codice shell nel processo sfruttato. Molte delle stesse tecniche (ad esempio irrorazione, slitte sentinella) si applicano.

    
risposta data 23.07.2013 - 17:12
fonte
1

Windows ha avuto Protezione esecuzione dati da XP SP 2, ma non è sempre abilitato per impostazione predefinita, e può essere disabilitato per applicazioni specifiche.

Quindi, molti exploit di stack cracking saranno bloccati, ma probabilmente non tutti.

Come per "tutti i sistemi operativi", YMMV. È meglio chiederne di specifici.

    
risposta data 06.11.2012 - 11:41
fonte

Leggi altre domande sui tag