CyberSecBulletin

External Control of File Name or Path

CWE-73

The product allows user input to control or influence paths or file names that are used in filesystem operations.

We track 436 vulnerabilities of this type. 99% are rated high or critical, and the average CVSS score is 8.3. 6 have been exploited in real attacks.

How this weakness is prevented

  • Architecture and Design: When the set of filenames is limited or known, create a mapping from a set of fixed input values (such as numeric IDs) to the actual filenames, 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 provide this capability.
  • Architecture and Design Operation: Run your code in a jail or similar sandbox environment that enforces strict boundaries between the process and the operating system. This may effectively restrict all access to files within a particular directory. Examples include the Unix chroot jail and AppArmor. In general, managed code may provide some protection. This may not be a feasible solution, and it only limits the impact to the operating system; the rest of your application may still be subject to compromise. Be careful to avoid CWE-243 and other weaknesses related to jails.
  • 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.
  • Implementation: 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).
  • Installation Operation: Use OS-level permissions and run as a low-privileged user to limit the scope of any successful attack.

Latest External Control of File Name or Path vulnerabilities