Tag: node vm2

用于运行不可信用户的Node.js Sandbox提交代码

我正在尝试获取能够运行不受信任的用户提交的代码的node.js沙箱。 有几个关于这个职位,但他们都是老。 我希望一个最新的职位将有所帮助。 (2011) 如何在node.js沙箱中安全地运行用户提交的脚本? (2012) 如何运行不受信任的代码serverside? (2013) 安全沙盒并执行用户提交的JavaScript? 通过其他职位和研究,我发现了以下沙箱和漏洞: (Jailed) https://github.com/asvd/jailed (Jailed Exploit) https://github.com/asvd/jailed/issues/33 (沙盒) https://github.com/gf3/sandbox (沙盒利用) https://github.com/gf3/sandbox/issues/50 (Sandcastle) https://github.com/bcoe/sandcastle (Sandcastle Exploit) https://github.com/bcoe/sandcastle/issues/70 (节点的VM) https://nodejs.org/api/vm.html#vm_vm_runinthiscontext_code_options (在文档中)注意:vm模块不是安全机制。 不要用它来运行不可信的代码。 (VM2) https://github.com/patriksimek/vm2 (VM2漏洞) https://github.com/patriksimek/vm2/issues/76 有没有人知道没有已知漏洞的node.js沙箱?

结合NodeJS Fibers + VM Sandbox

我想在Node中运行一些不受信任的代码,如下所示: for (var i = 0; i < 5; i++){ green_led(1); sleep(500); green_led(0); sleep(500); } 使用光纤,我得到了同步行为按预期工作: var Fiber = require('fibers'); function sleep(ms){ var fiber = Fiber.current; setTimeout(function(){ fiber.run(); }, ms); Fiber.yield(); } function green_led(active){ //… } Fiber(function(){ for (var i = 0; i < 5; i++){ green_led(1); sleep(500); green_led(0); sleep(500); } }).run(); 难题是如何沙箱代码。 不得不使用Fibers使其变得非常复杂; 我不确定如何开始。 […]

如何获取由Node vm2运行的代码的结果

最近,我一直在尝试使用由@PatrikŠimek发布的包vm2来实现沙箱执行 我试图运行一些js代码,我认为这是一个自定义的逻辑 ,我将这个逻辑存储在一个stringvariables。 我需要在沙盒环境中执行这个自定义逻辑(因为这是不可信的代码),并在实际环境中取回响应,以基于此结果继续正常的应用程序stream程。 我尝试了几种方法来获得最终结果。 自定义逻辑正在沙箱内成功执行,但我无法find一种方法将此结果发送回主进程,而是我得到的结果为undefined 。 所以,迄今为止没有任何工作。 希望我在这里得到一些答案。 自定义逻辑 (将被存储在一个string中) function addValues(a,b){ var c = a + b; console.log('Addition of 2 values'); console.log(c); return c; } addValues(10,10); // function call 实际执行 // vm2 const {NodeVM} = require('vm2'); const vm = new NodeVM({ console: 'inherit', sandbox: {}, require: { external: true, builtin: ['fs','path'], root: "./", […]