Есть такой неймспейс "vm", см.
nodejs.org/api/vm.html В нем методы: vm.createContext(sandbox), vm.createScript(code, scriptName). Так же в нем класс Script и у него методы: script.runInThisContext(), script.runInNewContext(sandbox). В общем, можно создать песочницу, у которой даже не будет доступа к require, и пробросить в нее только те функции, что нужны для безопасного выполнения скрипта. Потом обернуть выполнение скрипта в Domain, см.
nodejs.org/api/domain.html И тогда уж все будет точно безопасно, и доступ ко внешнему миру будет у скрипта закрыт и если он свалится, то через domain можно поймать, и global он своими данными не засрет, т.е. песочницу можно убить и создать новую, даже не перезапуская процесс ноды. Пример использования можно подсмотреть тут:
https://github.com/tshemsedinov/impress/blob/maste... Там есть некоторые хитрости, например, как сделать примесь своих функций к базовым классам в песочнице и подобное.