我是java security的新手;有一个基本的问题。运行AccessController.doPrivileged的恶意代码
我现在的理解是:
- 当你需要限制哪些不可信的代码可以做,你可以做到这一点的方法之一,是通过使用自定义的安全策略,并运行不可信代码在
Subject.doAsPrivileged
块中。 - 如果不可信代码需要调用一些需要某些提升权限的代码(例如文件访问等),则可以通过使用
AccessController.doPrivileged
来完成此操作。
我的问题是: 什么阻止恶意代码插入AccessController.doPrivileged
调用本身?
例如,在我的情况:
- 我运行在沙盒环境中的用户自定义的Groovy脚本;我有一个非常严格的策略,否认Groovy可以做的大部分工作。但是,我允许这些脚本执行某些需要提升权限的操作(通过向groovy脚本发送一个对象并说“嘿,只要你需要某些东西,只需在这个对象上调用这个方法”)。
- 需要提升权限的代码通过
AccessController.doPrivileged
语句运行。
那么,什么使Groovy脚本停止运行一段代码AccessController.doPrivileged (some_malicious_code)
?