it-swarm-es.com

¿Es posible la inyección de bytes nulos en Java nombres de archivo?

11
AviD

De acuerdo con los siguientes recursos:

podemos concluir que las inyecciones de Byte Nulo son posibles en Java.

14
anonymous

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

p.ej. 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 "¿el archivo solicitado termina con .jsp" en una cadena como "/etc/shadow%00.jsp" (donde% 00 representa el valor nulo byte), y devuelve true, al pasar esta cadena a "new FileInputStream ()" dará como resultado que el SO subyacente (tanto Windows como Linux) intente abrir "/ etc/shadow".

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

7
Rogan Dawes

La inyección de bytes nulos en los nombres de archivo se corrigió en Java 7 actualización 40 (lanzada alrededor de septiembre de 2013). Entonces, FINALMENTE se corrigió.

5
Dave Wichers