¿Es posible la inyección de nulo byte en los nombres de archivo de Java?

11

De la propuesta de Area51

    
pregunta AviD 16.11.2010 - 08:23
fuente

3 respuestas

13

De acuerdo con los siguientes recursos:

podemos concluir que las inyecciones de bytes nulos son posibles en Java.

    
respondido por el anonymous 17.11.2010 - 23:06
fuente
7

La inyección de bytes nulos depende de una falta de coincidencia en la forma en que se manejan las cadenas.

por ejemplo Java almacena la longitud de la cadena independientemente del contenido de la cadena, mientras que C comienza al principio de la cadena y comprueba si hay un byte nulo para indicar el final de la cadena.

Como resultado, el código Java puede realizar verificaciones como "finaliza el archivo solicitado con .jsp" en una cadena como "/etc/shadow%00.jsp" (donde% 00 representa el byte nulo) y devuelve true , al pasar esta cadena a "nuevo FileInputStream ()", el sistema operativo subyacente (tanto Windows como Linux) intentará abrir "/ etc / shadow".

(La relevancia de intentar abrir / etc / shadow en Windows se deja como ejercicio para el lector :-))

    
respondido por el Rogan Dawes 19.11.2010 - 08:02
fuente
4

La inyección de bytes nulos en los nombres de archivo se corrigió en la actualización 40 de Java 7 (lanzada en septiembre de 2013). Por lo tanto, es FINALMENTE fijo.

    
respondido por el Dave Wichers 10.09.2014 - 23:36
fuente

Lea otras preguntas en las etiquetas