Mitigar posibles recorridos de archivos

1

Estoy a punto de comenzar a usar enlace . Está informando un error de: Bug type PATH_TRAVERSAL_IN para el siguiente código:

 def writeLocalFile(fileName: String, content: String): Unit = {
    Files.write(Paths.get(fileName), content.getBytes(StandardCharsets.UTF_8))
    ()
  }

Como mitigación

if (!file.exists()) {
        return Response.status(Status.NOT_FOUND).build();
   }

se sugiere (es decir, algo que tiene sentido para una aplicación web). Mi solicitud es

  • tratando de escribir un archivo (por lo que podría ser cierto que el archivo no existe
  • un trabajo de análisis de datos de chispa que no enfrenta problemas regulares de seguridad web, ya que solo se ejecuta en backends con firewall

No obstante, me gustaría entender si:

  • este es un falso positivo, si es así, ¿cómo puede ignorarse?
  • de lo contrario, la forma de corregirlo dado que la escritura en una ruta no existente debería crearla.
pregunta Georg Heiler 05.07.2018 - 22:47
fuente

1 respuesta

2

Según la documentación que se encuentra aquí

Esta advertencia aparece porque está pasando una variable a la función Paths.get . Podría llevar a sobrescribir los archivos que no pretendía.

De hecho, creo que su técnica de mitigación solo serviría para ayudar a un atacante porque solo permitiría que sobrescribieran los archivos existentes.

La documentación dice:

  

Patrón de error: PATH_TRAVERSAL_OUT

     

Se abre un archivo para escribir en su   contenido. El nombre del archivo proviene de un parámetro de entrada. Si un no filtrado   el parámetro se pasa a este archivo API, archivos en un sistema de archivos arbitrario   La ubicación podría ser modificada.

     

Esta regla identifica el camino potencial   Vulnerabilidades transversales. En muchos casos, la ruta del archivo construido.   no puede ser controlado por el usuario. Si ese es el caso, el informe   La instancia es un falso positivo.

Si yo fuera tú, buscaría en la arquitectura de esto. ¿Realmente necesita pasar por el camino o puede ser codificado a algún valor constante?

Es posible que desee reconsiderar todos los ángulos de ataque en esto.

    
respondido por el Anthony Russell 05.07.2018 - 22:57
fuente

Lea otras preguntas en las etiquetas