我想知道模块边界也是安全边界吗?
更具体地说,在没有非法访问(--illegal-access=deny
)并拒绝访问jdk.unsupported
的情况下,看来ReflectPermission("supressAccessChecks")
不再会导致沙箱完全逃脱。
是真的吗?将此权限授予不受信任的代码后,还有其他方法可以破坏JVM的安全性吗?
要清楚:
RuntimePermission("loadLibrary.*")
-不被授予sun.misc.Unsafe
,您需要访问jdk.unsupported
模块和RuntimePermission("accessClassInPackage.sun.misc")
-未授予权限ClassLoader.defineClass
通过反射和setAccessible(true)
,java.base
必须打开java.lang
到您的模块-不会。所以:
ReflectPermission("supressAccessChecks")
,还有其他方法可以绕过/转义Java沙箱吗?