¿Riesgo de seguridad de Java? [cerrado]

-4

¿Por qué este código se considera peligroso o vulnerable?

String sFileName = request.getParameter("fName");
if (sFileName.toLowerCase().endsWith(".pdf"))
// open file
else
// don’t open the file
    
pregunta SafetyNetter 19.05.2016 - 07:30
fuente

2 respuestas

1

Además de los ataques de recorrido de ruta, este código podría ser vulnerable a la inyección de Null-Byte. Para obtener más información, lea this .

Actualización:

Como señaló Maarten Bodewes, esto se ha solucionado desde Java 1.7.0_40. Recuerdo que esto es una vulnerabilidad en 1.6 aunque. De todos modos, cuando eche un vistazo al código fuente de la clase File , encontrará que se ha agregado el método isInvalid() , que realiza la comprobación de nulos:

final boolean isInvalid() {
    if (status == null) {
        status = (this.path.indexOf('\u0000') < 0) ? PathStatus.CHECKED
                                                   : PathStatus.INVALID;
    }
    return status == PathStatus.INVALID;
}

Consulte también esta publicación en stackoverflow .

    
respondido por el eol 19.05.2016 - 08:42
fuente
0

Ahora mismo veo 2 problemas con este código, dependiendo del contexto.

  • El hecho de que el nombre de archivo termine con .pdf no significa que sea un PDF expediente. Lo que podría llevar a todo tipo de problemas.
  • El código malicioso se puede ocultar en macros de archivos PDF.

Pero como dije, todo depende del contexto.

    
respondido por el Black Magic 20.05.2016 - 09:29
fuente

Lea otras preguntas en las etiquetas