Nashorn:ClassFilter安全风险

问题描述 投票:0回答:1

我在使用nashorn时遇到问题,我发现存在此安全漏洞:https://mbechler.github.io/2019/03/02/Beware-the-Nashorn/

当某人可以通过以下命令实例化代码时:this.engine.factory.scriptEngine.eval('java.lang.Runtime.getRuntime().exec("whatever")')

确实影响了我的网站。如何解决该问题?

javascript security nashorn
1个回答
0
投票

本文告诉您。

请注意,在安全路径中添加的逻辑会阻止访问仅当BOTHengineSecurityManager时,才有ClassFilter当下。向Oracle报告这一点,据称这是预期的行为。

因此,即使在CVE-2018-3183的补丁之后,如果没有SecurityManager有效,engine属性将对所有用户可用脚本,即使ClassFilter不允许任何访问完全是Java类。

安全上,仅靠ClassFilter是不够的。您还需要一个SecurityManager。仅当提供engine属性的代码都存在时,才会被禁用。

((从它的外观看,任何安全管理器都将做-甚至允许所有内容的管理器。但是出于安全性考虑,或者如果出于某些原因您实际上want允许访问this.engine,您可能想要SecurityManager的子类,至少可以拒绝产生子进程或替换当前安全管理器的尝试。坦率地说,最好将其默认抛出,并将要允许的内容列入白名单。您可能不希望用户随意编写文件,接受网络连接等。)

一旦有了这样的安全经理,您就可以说System.setSecurityManager(yourSecurityManager);来负责。

© www.soinside.com 2019 - 2024. All rights reserved.