Tendrías mucha suerte de encontrar un caso en el que puedas ejecutar código directamente a través de un simple error de codificación en Java. Es posible que un error en la implementación de la JVM permita la corrupción de la memoria a través de un código benigno, pero en el peor de los casos es extremadamente raro.
Sin embargo, incluso dentro del JRE (OpenJDK), una parte de las bibliotecas están escritas en C, y por lo tanto contienen vulnerabilidades de corrupción de memoria cuando se usan con datos no confiables. Renderizar un JPEG malicioso sería el ejemplo canónico.
Hay muchos errores no relacionados con la memoria, como la inyección (HTML, SQL, LDAP, encabezados HTTP, etc.), pero en general los que no lo llevan directamente a la ejecución remota de código.
Una situación demasiado común es cuando una biblioteca práctica ejecuta deliberadamente código remoto sin que el programador de aplicaciones lo habilite deliberadamente. Ejemplos proporcionados en las Pautas de codificación segura para Java SE (5.0) Pauta 3-8 / INJECT-8 : Tenga cuidado al interpretar el código que no es de confianza hay ciertas características en: la API de scripting, LiveConnect, las extensiones XSLT, la persistencia a largo plazo de los componentes JavaBeans, el sonido Java, RMI, LDAP y ciertas implementaciones JDBC / SQL. Una aplicación puede cargar código móvil de forma deliberada, lo que conduce a otro mundo.