Don't hack the JVM? ☠️💣💥
summary
Shows concrete JVM attacks and defenses: mutating the Integer cache produces an infinite loop of 4s by changing a cached Integer value; Unicode escape sequences hide code so a test asserting "false" == "true" can pass; reflection and Objenesis create objects without constructors and even clone an enum so a singleton appears twice (and can add a fifth enum constant); runtime bytecode rewrite with Byte Buddy and agents alters System.currentTimeMillis across JVMs; fixes include SecurityManager and illegal-access=deny.
AI-written summary · about
chapters (14)
- 0:00Introduction and motivation
- 2:20Language feature hacks
- 4:47Unicode and flaky tests
- 7:00Language comparison and tricks
- 10:26Hash codes and security
- 13:13Reflection and cache manipulation
- 16:50String interning and mutability
- 20:01Dynamic compilation and patching
- 23:39Annotation and dependency hacks
- 25:58Object instantiation and enums
- 29:00Runtime modification of enums
- 31:57Byte Buddy and agents
- 35:26Remote JVM process attacks
- 38:38Prevention and conclusion
related talks
44mSecuring the JVM
42mHidden security features of the JVM - everything you didn’t know and more
48mHidden Security Features of the JVM - Everything You Didn’t Know and More
53mHacking Java
46mPopular Approaches to Preventing Code Injection Attacks are Dangerously Wrong
46mThe Anatomy of Java Vulnerabilities
45mMaking Java more dynamic
21mWat? That’s Possible in Java?
