Можно ли сломать менеджера безопасности с помощью sun.misc.unsafe? - PullRequest
1 голос
/ 23 апреля 2011

После разговора по другому вопросу поднимается интересная проблема.

Классы, загруженные с помощью менеджера безопасности, защищены соответствующей защитой.Эта защита может отключить отражение (например).

Вопрос: возможно ли сломать менеджер безопасности с помощью sun.misc.unsafe?Если да, то как?

РЕДАКТИРОВАТЬ

Изменено SecuredClassLoader на рассматриваемый Security Manager.

Ответы [ 2 ]

2 голосов
/ 23 апреля 2011

Нет. Класс sun.misc.Unsafe требует проверки доступа, как и любое другое привилегированное действие. Вы можете заблокировать его с помощью пользовательского загрузчика классов или менеджера безопасности. Вот простой пример с пустым менеджером безопасности, который показывает, что он выдаст AccessControlException:

System.setSecurityManager(new SecurityManager());
Unsafe unsafe = Unsafe.getUnsafe();
1 голос
/ 23 апреля 2011

Что такое «безопасный загрузчик классов»?SecureClassLoader?Это не безопасно, несмотря на его имя.Все, что он делает, ограничивает источник загрузки класса определенным местоположением кода.

Поэтому вам даже не нужны небезопасные операции, чтобы «сломать» это.Просто, например, убедитесь, что взломанный класс замены находится в пути к классам еще до того, как SecureClassLoader даже получил контроль.

Кто-то в этом потоке уже сказал вам - вы не можете получить безопасное место в незащищенной среде.Если ваш код развернут на пользовательской машине, пользователь - это Бог, и никакая безопасность JVM не может помочь вам просто потому, что JVM - это крошечный слой поверх гораздо более мощных нативных вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...