"heap spraying" विकिपीडिया लेख से पता चलता है कि कई जावास्क्रिप्ट शोषण में स्क्रिप्ट के निष्पादन योग्य कोड या डेटा स्पेस मेमोरी में कहीं भी शेलकोड की स्थिति शामिल होती है और उसके बाद दुभाषिया वहां कूदता है और इसे निष्पादित करता है। जो मुझे समझ में नहीं आता है, दुभाषिया के पूरे ढेर को "डेटा" के रूप में क्यों चिह्नित नहीं किया जा सकता है ताकि दुभाषिया को डीईपी द्वारा शेलकोड निष्पादित करने से रोका जा सके? इस बीच जावास्क्रिप्ट व्युत्पन्न बाइटकोड का निष्पादन वर्चुअल मशीन द्वारा किया जाएगा जो इसे दुभाषिया से संबंधित स्मृति को संशोधित करने की अनुमति नहीं देगा (यह वी 8 पर काम नहीं करेगा जो मशीन कोड निष्पादित करने लगता है, लेकिन शायद फ़ायरफ़ॉक्स पर काम करेगा जो किसी प्रकार का उपयोग करता है बाइटकोड का)।क्यों जावास्क्रिप्ट शेलकोड शोषण "डेटा निष्पादन रोकथाम" के माध्यम से तय नहीं किया जा सकता है?
मुझे लगता है कि उपर्युक्त आवाज़ तुच्छ और शायद कुछ ऐसा ही किया जा रहा है। इसलिए, मैं समझने की कोशिश कर रहा हूं कि तर्क में दोष कहां है, या मौजूदा दुभाषिया कार्यान्वयन में दोष है। जैसे क्या जावास्क्रिप्ट स्मृति के लिए पूछताछ करते समय दुभाषिया अपने आंतरिक आवंटन को लागू करने के बजाय सिस्टम की स्मृति आवंटन पर भरोसा करता है, इसलिए दुभाषिया और जावास्क्रिप्ट से संबंधित स्मृति को अलग करने के लिए इसे अनावश्यक रूप से कठिन बनाते हैं? या ऐसा क्यों है कि डीईपी आधारित विधियां शेलकोड को पूरी तरह से खत्म नहीं कर सकती हैं?
सभी आधुनिक जावास्क्रिप्ट इंजन ही नहीं, वी 8, का उपयोग JIT मशीन कोड [विकिपीडिया देखें] के संकलन (http://en.wikipedia.org/wiki/List_of_ECMAScript_engines): Chacra (आईई), Spidermonkey (एफ इयरफ़ॉक्स), जावास्क्रिप्टकोर (सफारी), वी 8 (क्रोम) इत्यादि – OlliM
@ ओलीआईएम, क्या इसका मतलब यह है कि अगर मान लें कि स्पाइडरमोन्की वीएम पर बाइटकोड निष्पादित करने के लिए वापस चला जाता है और मैंने वर्णित छोटी स्मृति प्रतिबंध नीति का उपयोग किया है, तो कोई संभावित जावास्क्रिप्ट शोषण नहीं होगा फ़ायरफ़ॉक्स के खिलाफ? http://www.piotrbania.com/all/articles/pbania-jit-mitigations2010.pdf: – EndangeringSpecies
आपने इस रुचि के मिल सकता है। विशेष रूप से, भाग 2. – Amy