Блокировать java агентов без перезапуска jvm - PullRequest
0 голосов
/ 08 апреля 2020

Мне нужно заблокировать java агентам модификацию или чтение JVM. Причина этого в том, что у меня есть защищенная система запуска, которая удаленно загружает важные части приложения. К сожалению, кто-то использовал дампер классов для загрузки безопасных классов. Я провел поиск и обнаружил, что -XX:+DisableAttachMechanism должен отключить их подключение. Проблема в том, что я не могу перезапустить jvm или изменить начальные аргументы. У меня есть доступ к JNI, если это помогает (все еще нужна совместимость windows, ma c и linux).

1 Ответ

2 голосов
/ 09 апреля 2020

Легко отключить динамический механизм присоединения HotSpot c во время выполнения - вам просто нужно удалить сокет подключения /tmp/.java_pidPID (где PID - идентификатор целевого процесса). Если такого файла нет, сначала активируйте механизм присоединения, запустив jcmd PID VM.version.

. Однако вряд ли это поможет при сбросе классов.

Если кто-то имеет доступ к системам, в которых работает JVM он, вероятно, может получить доступ к памяти процесса без JVM, даже не зная об этом. Например, Serviceability Agent может читать память JVM без какого-либо сотрудничества с JVM. Подробнее см. это и это .

Существует хитрость , которая затрудняет использование агента по удобству обслуживания, но все же не пуленепробиваема до тех пор, пока у пользователя есть разрешения на доступ к процессу на уровне ОС.

Если вы действительно хотите защитить свой процесс JVM, вы должны делать это с использованием функций безопасности ОС, включая учетные записи пользователей, списки ACL, возможности , cgroups, et c.

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