An In-Depth Study of More Than Ten Years of Java Exploitation
testlab.sit.fraunhofer.de
testlab.sit.fraunhofer.de
Back in the day Java JVM was the best way to run untrusted code close to native speed. That hasn't been the case for many years now...
Yes, the terminology is all OO-based, but it is really about unauthorized access to code. There's nothing OO specific about it.
For example:
Twelve vulnerabilities abuse a confused deputy to call MethodHandles.lookup to get a lookup object on behalf of a system class. Such a lookup object can be used by malicious code to access members that are accessible to the system class, but that should be inaccessible to untrusted code
This vulnerability would be exactly the same in principle if it was a functional or imperative programming. Loosely bound code is loaded into the incorrect security context and exploited. In a very loose sense, it is similar to https://www.cvedetails.com/cve/CVE-2012-3479/, which is an EMACS Lisp bug cause by incorrect checks[1]. OO or Functional - bugs like this are the same thing.