Saresti molto fortunato a trovare un caso in cui puoi eseguire direttamente codice tramite un semplice errore di codifica in Java. È possibile che un bug nell'implementazione di JVM permetta la corruzione della memoria attraverso un codice benigno, ma nel peggiore dei casi è raro che raro.
Tuttavia, anche all'interno di JRE (OpenJDK) una parte delle librerie è scritta in C e quindi contiene vulnerabilità di corruzione della memoria quando viene utilizzata con dati non fidati. Rendering di un JPEG dannoso sarebbe l'esempio canonico.
Ci sono molti bug non correlati alla memoria, come l'iniezione (HTML, SQL, LDAP, intestazioni HTTP, ecc.), ma quelli in generale non ti porteranno direttamente all'esecuzione di codice in modalità remota.
Una situazione fin troppo comune è quando una pratica libreria esegue deliberatamente il codice remoto senza che venga deliberatamente abilitato dal programmatore dell'applicazione. Esempi forniti in Secure Coding Guidelines per Java SE (5.0) Linee guida 3-8 / INJECT-8 : Attenzione nell'interpretazione del codice non attendibile sono alcune delle funzionalità disponibili: API di scripting, LiveConnect, estensioni XSLT, Persistenza a lungo termine di componenti JavaBeans, Java Sound, RMI, LDAP e alcune implementazioni JDBC / SQL. Un'applicazione può caricare deliberatamente il codice mobile, che porta a un altro mondo.