logo

Database

Elixir Delete Path Traversal

Description

This detector identifies path traversal vulnerabilities in Elixir code where user-controlled input is passed to file system operations without proper sanitization. Attackers can exploit this to access files outside the intended directory by using sequences like "../" to navigate up the directory tree, potentially exposing sensitive files or system data.

Weakness:

082 - Insecurely deleted files

Category: Information Collection

Detection Strategy

    The detector flags function calls that perform file operations (identified as FILE_SINKS such as File.read, File.write, File.delete, etc.)

    The file path parameter in these operations must be traced back to user input sources (such as request parameters, form data, or external API inputs)

    The path from user input to the file operation must lack proper sanitization that would prevent directory traversal sequences like '../' or absolute path manipulation

    A vulnerability is reported when all three conditions are met: dangerous file operation + user-controlled path + insufficient sanitization

Vulnerable code example

defmodule VulnerableController do
  def delete_file(conn) do
    filename = conn.params["filename"]
    
    # VULNERABLE: User-controlled input reaches File.rm!/1 enabling path traversal
    File.rm!("uploads/" <> filename)
    
    conn...

✅ Secure code example

defmodule SecureController do
  @base_dir "uploads"
  
  def delete_file(conn) do
    filename = conn.params["filename"]
    
    base = Path.expand(@base_dir)
    target = Path.expand(Path.join(base, filename))...