nodejs命令执行和沙箱安全

  • A+
所属分类:安全闲碎

今天一个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做到完美了。

好了



我觉得

nodejs命令执行和沙箱安全

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

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

本文始发于微信公众号(xsser的博客):nodejs命令执行和沙箱安全

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: