无非法访问(
--illegal-access=deny
jdk.unsupported
(使用完成)
accessClassInPackage
支票),看起来像
ReflectPermission "suppressAccessChecks"
不会再导致一个完整的沙盒逃脱。
以下是设置:
-
这个java.policy策略文件授予所有代码
ReflectPermission“suppressAccessChecks”
.
-
使用默认的java安全管理器。这是通过添加
-Djava.security.manager
-
通过添加
--非法访问=拒绝
到VM选项。
-
已安装SecurityManger。(为什么我还要说这个?)
-
RuntimePermission("loadLibrary.*")
-这是不允许的
-
访问
sun.misc.Unsafe
你需要进入
RuntimePermission("accessClassInPackage.sun.misc")
-这是不允许的
-
访问,例如。
ClassLoader.defineClass
通过反射和
setAccessible(true)
,
java.base
必须打开
java.lang
你的模块-它没有。
所以要么:
-
如果
ReflectPermission“suppressAccessChecks”
是否批准?
-
或者将模块边界视为安全边界,这样的沙盒旁路将被视为安全缺陷?
简而言之:
my.policy
:
grant {
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};
Main.java
:
public class Main {
public static void main(String[] args) {
// Your code here
}
}
和你一起跑
java --illegal-access=deny -Djava.security.manager -Djava.security.policy=my.policy Main