hoy en día puede leer mucho sobre inyección de código, exploits, buffer-, stack- y heap-overflows etc. lo que lleva a inyectar y ejecutar código. Me pregunto qué de estas cosas es relevante para Java.¿Es posible la inyección de código en Java?
Lo sé, no hay punteros en el lenguaje Java. Pero, ¿la JVM no organiza los datos en montones y/o pilas? Sé que no hay una función eval (como en PHP) por lo que no puede usar fácilmente una entrada como código Java. No estoy tan seguro de lo que está pasando en el nivel de bytecode.
Creo que XSS es posible, por ejemplo en una aplicación Java EE, cuando no se filtran las entradas. ¿Pero no se trata más de una inyección de JavaScript, porque el código inyectado se ejecuta en el navegador y no en la JVM?
Entonces, ¿qué inyecciones de código son posibles con java y cuáles no? ¿Y esto también es cierto para otros lenguajes de plataforma Java?
Gracias de antemano.
La observación acerca de la eficiencia no parece terriblemente relevante en este contexto, la inyección de código no necesariamente tiene que ser eficiente. La mayoría de los exploits no requieren un alto rendimiento ... El punto es que no muchas aplicaciones hacen la cosa de "aceptar código, compilarlo, ejecutarlo", pero las que lo hacen serían vulnerables. – sleske
"Si los compiladores Java se exponen como servicios de biblioteca livianos": bueno, ya lo están (echa un vistazo a javax.tools.JavaCompiler, http://java.sun.com/javase/6/docs/api/javax/tools /JavaCompiler.html). Pero, de nuevo, para que funcione la inyección de código, la aplicación bajo ataque necesita * usar * JavaCompiler, que afortunadamente no lo hace. – sleske
-1 porque la discusión de vulnerabilidades es bastante confusa ... – sleske