nodejs命令执行和沙箱安全

2021年7月8日 308点热度 0人点赞 0条评论

今天一个yapi满天飞,看了下以前好像用过。其实是一个正常的mock功能,很多安全人员没深入开发或者是结合到sdl中,所以对这些需求的理解不深刻。


那么假设我们要执行这个需求,这个需求就是要执行任意命令,因为业务会有千奇百怪的需求,前端nodejs就要执行命令来测试的。


java里有沙箱,nodejs里也有。

我们

require("vm")就可以了。

vm里有3个方法,runInNewContext、runInThisContext、runInContext

这3个方法的第二个参数就是上下文。


可惜的是 如果这样,我们可以用原型链绕过,如下

const vm = require('vm');  vm.runInNewContext("this.constructor.constructor('return process')().exit()")


然后我看到了一个网上比较断子绝孙的办法


Object.create(null)

直接跳到了原型链的顶端,这就是一片空白。那就只能执行简单的js了。可能完全不能满足业务的需求了。


因为内置的全部给干掉了。new Function都new个屁了,业务还跑吗?

要是能这样搞安全就好了,我每天直接砍需求就可以把SDL做到完美了。

好了

我觉得

图片

大佬的问题的答案应该是:没有

所以,这个漏洞怎么修复? 答案就是不修复 正常功能,加白!

29750nodejs命令执行和沙箱安全

这个人很懒,什么都没留下

文章评论