Attenua il possibile attraversamento di file

1

Sto per iniziare a utilizzare il collegamento . Segnala un errore di: Bug type PATH_TRAVERSAL_IN per il seguente codice:

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

Come mitigazione

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

è suggerito (vale a dire qualcosa che ha senso per un'applicazione web. La mia domanda è

  • prova a scrivere un file (quindi potrebbe essere vero che il file non esiste
  • un lavoro di analisi dei dati spark che non affronta regolarmente problemi di sicurezza Web in quanto viene eseguito solo in backend firewall

Tuttavia vorrei capire se:

  • questo è un falso positivo, se sì come può essere ignorato
  • altrimenti come correggere correttamente dato che scrivere su un percorso non esistente dovrebbe crearlo.
posta Georg Heiler 05.07.2018 - 22:47
fonte

1 risposta

2

In base alla documentazione trovata qui

Questo avviso viene generato perché stai trasmettendo una variabile nella funzione Paths.get . Potrebbe portare alla sovrascrittura di file che non intendevi.

In effetti, credo che la tua tecnica di mitigazione servirà solo ad aiutare un utente malintenzionato perché lasceresti solo che sovrascrivano i file esistenti.

La documentazione dice:

Bug Pattern: PATH_TRAVERSAL_OUT

A file is opened to write to its contents. The filename comes from an input parameter. If an unfiltered parameter is passed to this file API, files at an arbitrary filesystem location could be modified.

This rule identifies potential path traversal vulnerabilities. In many cases, the constructed file path cannot be controlled by the user. If that is the case, the reported instance is a false positive.

Se fossi in te, guarderei rearchitecting this. Hai davvero bisogno di passare il percorso o può essere codificato con un valore costante?

Potresti voler riconsiderare tutti gli angoli di attacco su questo.

    
risposta data 05.07.2018 - 22:57
fonte

Leggi altre domande sui tag