Present but Unreachable: Reducing Persistentlatent Secrets in HotSpot JVM
نویسندگان
چکیده
Applications that manage sensitive secrets, including cryptographic keys, are typically engineered to overwrite the secrets in memory once they’re no longer necessary, offering an important defense against forensic attacks against the computer. In a modern garbagecollected memory system, however, live objects will be copied and compacted into new memory pages, with the user program being unable to reach and zero out obsolete copies in old memory pages that have not yet been reused. This paper considers this problem in the HotSpot JVM, the default JVM used by the Oracle and OpenJDK Java platforms. We analyze the SerialGC and Garbage First Garbage Collector (G1GC) implementations, showing that sensitive data such as TLS keys are easily extracted from the garbage. To mitigate this issue, we implemented techniques to sanitize older heap pages and we measure the performance impact– sometimes good, sometimes unacceptable. We also discuss how future garbage collectors might be designed from scratch with efficient heap sanitation in mind.
منابع مشابه
Workload characterization of JVM languages
Being developed with a single language in mind, namely Java, the Java Virtual Machine (JVM) nowadays is targeted by numerous programming languages. Automatic memory management, Just-In-Time (JIT) compilation, and adaptive optimizations provided by the JVM make it an attractive target for different language implementations. Even though being targeted by so many languages, the JVM has been tuned ...
متن کاملPicking up the trash: Exploiting generational GC for memory analysis
Memory analysis is slowly moving up the software stack. Early analysis efforts focused on core OS structures and services. As this field evolves, more information becomes accessible because analysis tools can build on foundational frameworks like Volatility and Rekall. This paper demonstrates and establishes memory analysis techniques for managed runtimes, namely the HotSpot Java Virtual Machin...
متن کاملHierarchical PLABs, CLABs, TLABs in Hotspot
Thread-local allocation buffers (TLABs) are widely used in memory allocators of garbage-collected systems to speed up the fast-path (thread-local allocation) and reduce global heap contention yet at the expense of increased memory fragmentation. Larger TLABs generally improve performance and scalability but only up to the point where more frequent garbage collection triggered by increased memor...
متن کاملImproving Continuation-Powered Method-Level Speculation for JVM Applications
Most applications running on the Java Virtual Machine (JVM) make extensive use of dynamic object-oriented programming features such as inheritance, polymorphism, and encapsulation. This makes them very hard or even impossible to analyze statically, defeating most of the automatic parallelization research done so far for traditional computeheavy scientific applications. In this paper, we propose...
متن کاملComparison of Erlang Runtime System and Java Virtual Machine
This report gives a high level overview of the Erlang Runtime System (ERTS) and the Java Virtual Machine (JVM), comparing the two in terms of overall architecture, memory layout, parallelism/concurrency and runtime optimisations. More specifically I’ll look at the HotSpot JVM provided by Oracle and the default BEAM implementation open sourced by Ericsson.
متن کامل