nodejs命令执行和沙箱安全

admin 2021年7月9日18:18:20评论53 views字数 603阅读2分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做到完美了。

好了



我觉得

nodejs命令执行和沙箱安全

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

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

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年7月9日18:18:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   nodejs命令执行和沙箱安全http://cn-sec.com/archives/416552.html

发表评论

匿名网友 填写信息