Skip to content
OpenAdvisories

Weakness (CWE)

CWE-22: Improper Limitation of a Pathname to a Restricted Directory

Base

The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.

More detail

Many file operations are intended to take place within a restricted directory. By using special elements such as ".." and "/" separators, attackers can escape outside of the restricted location to access files or directories that are elsewhere on the system. One of the most common special elements is the "../" sequence, which in most modern operating systems is interpreted as the parent directory of the current location. This is referred to as relative path traversal. Path traversal also covers the use of absolute pathnames such as "/usr/local/bin" to access unexpected files. This is referred to as absolute path traversal.

How to prevent it (8 mitigations)
  1. Implementation

    Assume all input is malicious. Use an "accept known good" input validation strategy, i.e., use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.

    When performing input validation, consider all potentially relevant properties, including length, type of input, the full range of acceptable values, missing or extra inputs, syntax, consistency across related fields, and conformance to business rules. As an example of business rule logic, "boat" may be syntactically valid because it only contains alphanumeric characters, but it is not valid if the input is only expected to contain colors such as "red" or "blue."

    Do not rely exclusively on looking for malicious or malformed inputs. This is likely to miss at least one undesirable input, especially if the code's environment changes. This can give attackers enough room to bypass the intended validation. However, denylists can be useful for detecting potential attacks or determining which inputs are so malformed that they should be rejected outright.

    When validating filenames, use stringent allowlists that limit the character set to be used. If feasible, only allow a single "." character in the filename to avoid weaknesses such as CWE-23, and exclude directory separators such as "/" to avoid CWE-36. Use a list of allowable file extensions, which will help to avoid CWE-434.

    Do not rely exclusively on a filtering mechanism that removes potentially dangerous characters. This is equivalent to a denylist, which may be incomplete (CWE-184). For example, filtering "/" is insufficient protection if the filesystem also supports the use of "\" as a directory separator. Another possible error could occur when the filtering is applied in a way that still produces dangerous data (CWE-182). For example, if "../" sequences are removed from the ".../...//" string in a sequential fashion, two instances of "../" would be removed from the original string, but the remaining characters would still form the "../" string.

  2. Architecture and Design

    For any security checks that are performed on the client side, ensure that these checks are duplicated on the server side, in order to avoid CWE-602. Attackers can bypass the client-side checks by modifying values after the checks have been performed, or by changing the client to remove the client-side checks entirely. Then, these modified values would be submitted to the server.

  3. Implementation

    Inputs should be decoded and canonicalized to the application's current internal representation before being validated (CWE-180). Make sure that the application does not decode the same input twice (CWE-174). Such errors could be used to bypass allowlist validation schemes by introducing dangerous inputs after they have been checked.

    Use a built-in path canonicalization function (such as realpath() in C) that produces the canonical version of the pathname, which effectively removes ".." sequences and symbolic links (CWE-23, CWE-59). This includes:

    - realpath() in C

    - getCanonicalPath() in Java

    - GetFullPath() in ASP.NET

    - realpath() or abs_path() in Perl

    - realpath() in PHP

  4. Architecture and Design

    Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid [REF-1482].

  5. Operation

    Use an application firewall that can detect attacks against this weakness. It can be beneficial in cases in which the code cannot be fixed (because it is controlled by a third party), as an emergency prevention measure while more comprehensive software assurance measures are applied, or to provide defense in depth [REF-1481].

  6. Architecture and Design, Operation

    Run your code using the lowest privileges that are required to accomplish the necessary tasks [REF-76]. If possible, create isolated accounts with limited privileges that are only used for a single task. That way, a successful attack will not immediately give the attacker access to the rest of the software or its environment. For example, database applications rarely need to run as the database administrator, especially in day-to-day operations.

  7. Architecture and Design

    When the set of acceptable objects, such as filenames or URLs, is limited or known, create a mapping from a set of fixed input values (such as numeric IDs) to the actual filenames or URLs, and reject all other inputs.

    For example, ID 1 could map to "inbox.txt" and ID 2 could map to "profile.txt". Features such as the ESAPI AccessReferenceMap [REF-185] provide this capability.

  8. Architecture and Design, Operation

    Run the code in a "jail" or similar sandbox environment that enforces strict boundaries between the process and the operating system. This may effectively restrict which files can be accessed in a particular directory or which commands can be executed by the software.

    OS-level examples include the Unix chroot jail, AppArmor, and SELinux. In general, managed code may provide some protection. For example, java.io.FilePermission in the Java SecurityManager allows the software to specify restrictions on file operations.

    This may not be a feasible solution, and it only limits the impact to the operating system; the rest of the application may still be subject to compromise.

    Be careful to avoid CWE-243 and other weaknesses related to jails.

Source: MITRE CWE-22

269 results · Clear filters · Feed

  • High 7.5
    CVE-2022-41840 Public exploit Scanner template

    WordPress Welcart eCommerce plugin <= 2.7.7 - Unauth. Directory Traversal vulnerability

    Unauth. Directory Traversal vulnerability in Welcart eCommerce plugin <= 2.7.7 on WordPress.

  • High 7.5
    CVE-2022-32287 Public exploit

    Apache UIMA prior to 3.3.1 has a path traversal vulnerability when extracting (PEAR) archives

    A relative path traversal vulnerability in a FileUtil class used by the PEAR management component of Apache UIMA allows an attacker to create files outside the designated target directory using carefully crafted ZIP entry names. This issue affects Apache UIMA…

  • High 7.5
    CVE-2022-37422 Public exploit

    Path Traversal in Payara

    Payara through 5.2022.2 allows directory traversal without authentication. This affects Payara Server, Payara Micro, and Payara Server Embedded.

  • High 7.2
    CVE-2022-31195 Public exploit

    Path traversal vulnerability in Simple Archive Format package import in DSpace

    DSpace open source software is a repository application which provides durable access to digital resources. In affected versions the ItemImportServiceImpl is vulnerable to a path traversal vulnerability. This means a malicious SAF (simple archive format) pack…

  • High 8.2
    CVE-2022-31194 Public exploit

    Path traversal vulnerabilities in DSpace JSPUI submission upload

    DSpace open source software is a repository application which provides durable access to digital resources. dspace-jspui is a UI component for DSpace. The JSPUI resumable upload implementations in SubmissionController and FileUploadRequest are vulnerable to m…

  • High 7.4
    CVE-2022-35919 Public exploit EPSS 52%

    Authenticated requests for server update admin API allows path traversal in minio

    MinIO is a High Performance Object Storage released under GNU Affero General Public License v3.0. In affected versions all 'admin' users authorized for `admin:ServerUpdate` can selectively trigger an error that in response, returns the content of the path req…

  • High 7.5
    CVE-2022-35650 Public exploit EPSS 54%

    Moodle Arbitrary file read when importing lesson questions

    The vulnerability was found in Moodle, occurs due to input validation error when importing lesson questions. This insufficient path checks results in arbitrary file read risk. This vulnerability allows a remote attacker to perform directory traversal attacks.…

  • High 7.9
    CVE-2022-31159 Public exploit

    Partial Path Traversal in com.amazonaws:aws-java-sdk-s3

    The AWS SDK for Java enables Java developers to work with Amazon Web Services. A partial-path traversal issue exists within the `downloadDirectory` method in the AWS S3 TransferManager component of the AWS SDK for Java v1 prior to version 1.12.261. Applicatio…

  • High 7.5
    CVE-2022-23082 Public exploit

    CureKit - Path Traversal in isFileOutsideDir

    In CureKit versions v1.0.1 through v1.1.3 are vulnerable to path traversal as the function isFileOutsideDir fails to sanitize the user input which may lead to path traversal.

  • High 7.5
    CVE-2022-24897 Public exploit

    Arbitrary filesystem write access from Velocity

    APIs to evaluate content with Velocity is a package for APIs to evaluate content with Velocity. Starting with version 2.3 and prior to 12.6.7, 12.10.3, and 13.0, the velocity scripts are not properly sandboxed against using the Java File API to perform read o…

  • High 7.5
    CVE-2021-35250 Public exploit Scanner template EPSS 13%

    Directory Transversal Vulnerability in Serv-U 15.3

    A researcher reported a Directory Transversal Vulnerability in Serv-U 15.3. This may allow access to files relating to the Serv-U installation and server files. This issue has been resolved in Serv-U 15.3 Hotfix 1.

  • High 7.5
    CVE-2022-23457 Public exploit

    Path Traversal in ESAPI

    ESAPI (The OWASP Enterprise Security API) is a free, open source, web application security control library. Prior to version 2.3.0.0, the default implementation of `Validator.getValidDirectoryPath(String, String, File, boolean)` may incorrectly treat the test…

  • High 7.2
    CVE-2022-27925 Exploited · Ransomware Public exploit Scanner template EPSS 99%

    Zimbra Collaboration (aka ZCS) 8.8.15 and 9.0 has mboximport functionality that receives a ZIP archive and extracts fil…

    KEV Aug 11, 2022
  • High 7.5
    CVE-2022-1119 Public exploit Scanner template EPSS 17%

    Simple File List <= 3.2.7 - Arbitrary File Download

    The Simple File List WordPress plugin is vulnerable to Arbitrary File Download via the eeFile parameter found in the ~/includes/ee-downloader.php file due to missing controls which makes it possible unauthenticated attackers to supply a path to a file that wi…

  • High 7.5
    CVE-2022-24785 Public exploit EPSS 14%

    Path Traversal in Moment.js

    Moment.js is a JavaScript date library for parsing, validating, manipulating, and formatting dates. A path traversal vulnerability impacts npm (server) users of Moment.js between versions 1.0.1 and 2.29.1, especially if a user-provided locale string is direct…

  • High 8.5
    CVE-2022-24715 Public exploit EPSS 15%

    Arbitrary code execution for authenticated users in Icinga Web 2

    Icinga Web 2 is an open source monitoring web interface, framework and command-line interface. Authenticated users, with access to the configuration, can create SSH resource files in unintended directories, leading to the execution of arbitrary code. This iss…

  • High 7.5
    CVE-2022-24716 Public exploit Scanner template EPSS 89%

    Path traversal in Icinga Web 2

    Icinga Web 2 is an open source monitoring web interface, framework and command-line interface. Unauthenticated users can leak the contents of files of the local system accessible to the web-server user, including `icingaweb2` configuration files with database…

  • High 7.8
    CVE-2022-21999 Exploited · Ransomware Public exploit EPSS 41%

    Windows Print Spooler Elevation of Privilege Vulnerability

    Windows Print Spooler Elevation of Privilege Vulnerability

    KEV Mar 25, 2022
  • High 7.7
    CVE-2022-24348 Public exploit

    Path traversal and dereference of symlinks in Argo CD

    Argo CD before 2.1.9 and 2.2.x before 2.2.4 allows directory traversal related to Helm charts because of an error in helmTemplate in repository.go. For example, an attacker may be able to discover credentials stored in a YAML file.

  • High 7.5
    CVE-2021-23797 Public exploit

    Directory Traversal

    All versions of package http-server-node are vulnerable to Directory Traversal via use of --path-as-is.

  • High 7.5
    CVE-2021-39312 Public exploit Scanner template EPSS 78%

    True Ranker <= 2.2.2 Directory Traversal/Arbitrary File Read

    The True Ranker plugin <= 2.2.2 for WordPress allows arbitrary files, including sensitive configuration files such as wp-config.php, to be accessed via the src parameter found in the ~/admin/vendor/datatables/examples/resources/examples.php file.

  • High 7.5
    CVE-2021-43798 Exploited Public exploit Scanner template EPSS 89%

    Grafana path traversal

    Grafana is an open-source platform for monitoring and observability. Grafana versions 8.0.0-beta1 through 8.3.0 (except for patched versions) iss vulnerable to directory traversal, allowing access to local files. The vulnerable URL path is: `<grafana_host_url…

    KEV Oct 9, 2025
  • High 7.8
    CVE-2021-40724 Public exploit

    Adobe Acrobat Reader Android Abritrary Code Execution Vulnerability

    Acrobat Reader for Android versions 21.8.0 (and earlier) are affected by a Path traversal vulnerability. An unauthenticated attacker could leverage this vulnerability to achieve arbitrary code execution in the context of the current user. Exploitation of this…

  • High 7.5
    CVE-2021-40978 Public exploit Scanner template EPSS 15%

    Directory traversal in mkdocs

    The mkdocs 1.2.2 built-in dev-server allows directory traversal using the port 8000, enabling remote exploitation to obtain :sensitive information. NOTE: the vendor has disputed this as described in https://github.com/mkdocs/mkdocs/issues/2601.] and https://g…

  • High 7.5
    CVE-2021-41773 Exploited · Ransomware Public exploit Scanner template EPSS 100%

    Path traversal and file disclosure vulnerability in Apache HTTP Server 2.4.49

    A flaw was found in a change made to path normalization in Apache HTTP Server 2.4.49. An attacker could use a path traversal attack to map URLs to files outside the directories configured by Alias-like directives. If files outside of these directories are not…

    KEV Nov 3, 2021
  • High 8.8
    CVE-2021-40444 Exploited · Ransomware Public exploit EPSS 98%

    Microsoft MSHTML Remote Code Execution Vulnerability

    Microsoft is investigating reports of a remote code execution vulnerability in MSHTML that affects Microsoft Windows. Microsoft is aware of targeted attacks that attempt to exploit this vulnerability by using specially-crafted Microsoft Office documents. An a…

    KEV Nov 3, 2021
  • High 7.5
    CVE-2021-39316 Public exploit Scanner template EPSS 66%

    ZoomSounds <= 6.45 Unauthenticated Directory Traversal and Sensitive Information Dislosure

    The Zoomsounds plugin <= 6.45 for WordPress allows arbitrary files, including sensitive configuration files such as wp-config.php, to be downloaded via the `dzsap_download` action using directory traversal in the `link` parameter.

  • High 8.2
    CVE-2021-32804 Public exploit EPSS 15%

    Arbitrary File Creation/Overwrite due to insufficient absolute path sanitization

    The npm package "tar" (aka node-tar) before versions 6.1.1, 5.0.6, 4.4.14, and 3.3.2 has a arbitrary File Creation/Overwrite vulnerability due to insufficient absolute path sanitization. node-tar aims to prevent extraction of absolute file paths by turning ab…

  • High 7.5
    CVE-2020-6950 Public exploit Scanner template EPSS 10%

    Directory traversal in Eclipse Mojarra

    Directory traversal in Eclipse Mojarra before 2.3.14 allows attackers to read arbitrary files via the loc parameter or con parameter.

  • High 7.7
    CVE-2021-21402 Public exploit Scanner template EPSS 79%

    Unauthenticated Arbitrary File Access in Jellyfin

    Jellyfin is a Free Software Media System. In Jellyfin before version 10.7.1, with certain endpoints, well crafted requests will allow arbitrary file read from a Jellyfin server's file system. This issue is more prevalent when Windows is used as the host OS. S…

  • High 7.8
    CVE-2021-27065 Exploited · Ransomware Public exploit EPSS 100%

    Microsoft Exchange Server Remote Code Execution Vulnerability

    Microsoft Exchange Server Remote Code Execution Vulnerability

    KEV Nov 3, 2021
  • High 7.2
    CVE-2020-28337 Public exploit EPSS 17%

    Zip slip in Microweber

    A directory traversal issue in the Utils/Unzip module in Microweber through 1.1.20 allows an authenticated attacker to gain remote code execution via the backup restore feature. To exploit the vulnerability, an attacker must have the credentials of an adminis…

  • High 7.5
    CVE-2020-8570 Public exploit

    Kubernetes Java client libraries unvalidated path traversal in Copy implementation

    Kubernetes Java client libraries in version 10.0.0 and versions prior to 9.0.1 allow writes to paths outside of the current directory when copying multiple files from a remote pod which sends a maliciously crafted archive. This can potentially overwrite any f…

  • High 7.7
    CVE-2021-21234 Public exploit Scanner template EPSS 21%

    Directory Traversal

    spring-boot-actuator-logview in a library that adds a simple logfile viewer as spring boot actuator endpoint. It is maven package "eu.hinsch:spring-boot-actuator-logview". In spring-boot-actuator-logview before version 0.2.13 there is a directory traversal vu…

  • High 7.5
    CVE-2020-17518 Public exploit Scanner template EPSS 49%

    Apache Flink directory traversal attack: remote file writing through the REST API

    Apache Flink 1.5.1 introduced a REST handler that allows you to write an uploaded file to an arbitrary location on the local file system, through a maliciously modified HTTP HEADER. The files can be written to any location accessible by Flink 1.5.1. All users…

  • High 7.5
    CVE-2020-25540 Public exploit Scanner template EPSS 75%

    ThinkAdmin directory traversal vulnerability

    ThinkAdmin v6 is affected by a directory traversal vulnerability. An unauthorized attacker can read arbitrarily file on a remote server via GET request encode parameter.

  • High 7.5
    CVE-2020-5410 Exploited Public exploit Scanner template EPSS 96%

    Directory Traversal with spring-cloud-config-server

    Spring Cloud Config, versions 2.2.x prior to 2.2.3, versions 2.1.x prior to 2.1.9, and older unsupported versions allow applications to serve arbitrary configuration files through the spring-cloud-config-server module. A malicious user, or attacker, can send …

    KEV Mar 25, 2022
  • High 7.5
    CVE-2020-11738 Exploited Public exploit Scanner template EPSS 98%

    The Snap Creek Duplicator plugin before 1.3.28 for WordPress (and Duplicator Pro before 3.8.7.1) allows Directory Trave…

    KEV Nov 3, 2021
  • High 7.5
    CVE-2019-20085 Exploited Public exploit Scanner template EPSS 96%

    TVT NVMS-1000 devices allow GET /.. Directory Traversal

    KEV Nov 3, 2021
  • High 8.0
    CVE-2019-10220 Public exploit

    Linux kernel CIFS implementation, version 4.9.0 is vulnerable to a relative paths injection in directory entry lists.