首页 > 解决方案 > 设置 -illegal-access=deny 时授予不受信任的代码“suppressAccessChecks”是否安全?

问题描述

如果没有非法访问 ( --illegal-access=deny) 和拒绝访问jdk.unsupported(使用accessClassInPackage检查完成),看起来ReflectPermission "suppressAccessChecks"不会再导致完整的沙箱逃逸。

真的吗?当将此权限授予不受信任的代码时,还有其他方法可以损害 JVM 的安全性吗?

这是设置:

要清楚:

所以要么:

简而言之:

如果我有以下策略文件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,沙箱可以逃脱吗?

标签: javajava-9java-modulejava-securityjava-14

解决方案


推荐阅读