L'articolo di wikipedia "heap spraying" suggerisce che molti exploit javascript implicano il posizionamento di uno shellcode da qualche parte nel codice eseguibile dello script o nella memoria dello spazio di dati e quindi l'esecuzione dell'interprete e l'esecuzione. Quello che non capisco è, perché l'intero heap dell'interprete non può essere contrassegnato come "dati" in modo che l'interprete possa impedire l'esecuzione dello shellcode da parte di DEP? Nel frattempo l'esecuzione di bytecode derivato da javascript sarebbe stata eseguita dalla macchina virtuale che non gli avrebbe permesso di modificare la memoria appartenente all'interprete (questo non funzionerebbe su V8 che sembra eseguire codice macchina, ma probabilmente funzionerebbe su Firefox che usa qualche tipo di bytecode).perché gli exploit dello shellcode Javascript non possono essere corretti tramite "prevenzione esecuzione dati"?
Immagino che quanto sopra sembra banale e probabilmente qualcosa di simile in realtà è stato fatto. Quindi, sto cercando di capire dove si trova il difetto nel ragionamento, o il difetto nelle implementazioni di interpreti esistenti. Per esempio. l'interprete fa affidamento sull'allocazione di memoria del sistema invece di implementare la propria allocazione interna quando javascript richiede memoria, rendendo così eccessivamente difficile separare la memoria che appartiene all'interprete e al javascript? O perché i metodi basati su DEP non possono eliminare completamente i codici shell?
Tutti i motori javascript moderni, non solo V8, utilizzano JIT compilazione su codice macchina [vedi Wikipedia] (http://en.wikipedia.org/wiki/List_of_ECMAScript_engines): Chacra (IE), SpiderMonkey (F irefox), JavaScriptCore (Safari), V8 (Chrome) ecc. – OlliM
@OlliM, vuol dire che se diciamo che SpiderMonkey torna all'esecuzione di bytecode su VM e utilizza una politica di restrizione di memoria banale che ho descritto, allora non ci sarebbero javascript exploit possibili contro Firefox? – EndangeringSpecies
È possibile trovare questo di interesse: http://www.piotrbania.com/all/articles/pbania-jit-mitigations2010.pdf. In particolare, guarda il primo paragrafo della parte 2. – Amy