今天一个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做到完美了。
好了
我觉得
大佬的问题的答案应该是:没有。
所以,这个漏洞怎么修复? 答案就是不修复 正常功能,加白!
文章评论