Piszemy program java, który przechowuje hasło w pamięci. Niestety, użytkownik może z łatwością użyć jconsole lub jmap do utworzenia pliku zrzutu sterty i otworzyć go, aby znaleźć hasło. Myślę, że jconsole łączy jvm z lokalnymi gniazdami. Chcę wiedzieć, czy istnieje sposób na wyłączenie jmx nawet dla lokalnych użytkowników? Czy istnieje sposób całkowitego wyłączenia zrzutów sterty? Ponieważ użytkownik ma dostęp do segmentu pamięci, i tak jest możliwe uzyskanie dostępu do hasła. Jednak chcę wyłączyć standardowe sposoby robienia tego, aby działanie było jak najdroższe.Wyłączanie lokalnych połączeń JMX na JVM
Odpowiedz
Wreszcie znalazłem rozwiązanie do wyłączania połączeń jconsole. Zapobiega to także tworzeniu przez jmap pliku zrzutu. Znalazłem rozwiązanie here. Ja też zacytować odpowiedź tutaj:
Można zapobiec narzędzi, takich jak JConsole i innych z podłączeniem przez biegł z -XX: + DisableAttachMechanism opcji. Zauważ, że ta opcja nie jest udokumentowana/obsługiwana, ale powinna być zgodna z Twoją wolą. Powiedział, że nawet z to nie ma nic, aby zatrzymać podłączenia gdb lub innych debugowanie/proc programów opartych
jednak, że jest oczywiste, że segment pamięci mogą być dostępne lokalnie. Ale czy ktoś zna narzędzie do tworzenia standardowych zrzutów pamięci z bezpośrednim dostępem do pamięci?
Ustawianie liczyć max gra na zero wyłącza JMX
-Dsun.rmi.transport.tcp.maxConnectionThreads=0
Jeśli trzeba jeszcze statystyk, prosty przeczytać odpowiedni hsperfdata_ plik *
Edycja: opublikowałem mój hsperf munin plugin na github.
Niekoniecznie standardowy format zrzutu pamięci, ale można użyć na przykład edytora szesnastkowego HxD (http://mh-nexus.de/en/hxd/), aby uzyskać dostęp do pamięci dowolnego procesu lokalnego (z odpowiednimi uprawnieniami) . –
Nice. Pracuje dla mnie! – laher