"куча опрыскивания" Статья в wikipedia предполагает, что многие эксплоиты javascript включают в себя размещение шеллкода где-нибудь в script исполняемом коде или памяти пространства данных а затем переведите туда переводчика и выполните его. Я не понимаю, почему нельзя интерпретировать всю кучу, помеченную как "данные", чтобы интерпретатору не удалось выполнить шелл-код с помощью DEP? Между тем выполнение обработанного javascript байт-кода будет выполняться с помощью виртуальной машины, которая не позволит ему изменять память, принадлежащую интерпретатору (это не будет работать на V8, который, похоже, выполняет машинный код, но, вероятно, будет работать на Firefox, который использует какой-то вид байт-кода).
Я думаю, что вышеизложенное звучит тривиально и, вероятно, что-то очень похоже на то, что это делается. Итак, я пытаюсь понять, где ошибка в рассуждениях или недостаток существующих реализаций интерпретатора. Например. интерпретатор полагается на распределение системной памяти вместо того, чтобы реализовать свое собственное внутреннее распределение, когда javascript запрашивает память, поэтому делает его чрезмерно трудным для разделения памяти, принадлежащей интерпретатору и javascript? Или почему методы DEP не могут полностью исключить shellcodes?