可以用sun.misc.unsafe破坏安全管理器吗?

时间:2011-04-23 02:19:20

标签: java security classloader

在另一个question上进行对话后,正在提出一个有趣的问题。

使用相应的安全性保护加载了安全管理器的类。此安全性可能会禁用反射(例如)。

问题是:是否可以通过sun.misc.unsafe破解安全管理器?如果是,怎么样?

修改

SecuredClassLoader更改为相关安全管理器。

2 个答案:

答案 0 :(得分:2)

没有。 sun.misc.Unsafe类需要访问检查,就像任何其他特权操作一样。您可以使用自定义类加载器或安全管理器来阻止它。这是一个简单的示例,其中一个空的安全管理器显示它将抛出AccessControlException

System.setSecurityManager(new SecurityManager());
Unsafe unsafe = Unsafe.getUnsafe();

答案 1 :(得分:1)

什么是“安全类加载器”? SecureClassLoader的?尽管它的名字,它并不安全。它所做的就是将类加载源限制为特定的代码位置。

因此,您甚至不需要任何不安全的操作来“破坏”它。例如,确保在SecureClassLoader获得控制之前,确保替换的被攻击类位于类路径中。

该线程中有人告诉过您 - 您无法在不安全的环境中拥有安全点。如果你的代码被部署到用户机器上,那么用户就是上帝,没有任何JVM安全可以帮助你,因为JVM是一个在更强大的本机事物之上的小层。