Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

An absolute path may sometimes contain aliases, shadows, symbolic links and shortcuts as opposed to canonical paths, which refer to actual files /or directories that these point to. Canonicalizing The process of canonicalizing file names makes it safer to verify a path, directory, or file name by making it easier to compare names.

Noncompliant Code Example

Wiki Markup
In thisThis noncompliant code example, accepts the user inputs a part of thefile path as a command line argument. Let {{argv\[1\]}} be the string {{java}}, where {{/tmp/java}} is a symbolic link that points to another file in some directory of the local file system. On POSIX based UNIXsystems, the {{getAbsolutePath()}} method includes {{/tmp/java}} (name of the symbolic link) in the path that it returns. On the other hand, on Windows and Macintosh systems, this behavior is not observed. The symbolic link is fully resolved on these platforms. resultingThis inimplies implementation defined behavior.

Code Block
bgColor#FFcccc
public static void main(String[] args) {
  File f = new File("/tmp/" + args[1]);
  String absPath = f.getAbsolutePath();
}

Compliant Solution

Use This compliant solution uses the getCanonicalPath() method, introduced in Java 2, wherever possible because it resolves the aliases, shortcuts or symbolic links consistently, across all platforms. The value of the alias is not included in the returned value. Moreover, relative references like the double period (..) are also removed. The getCanonicalPath() method throws a security exception when used within applets as it reveals too much information about the host machine. The getCanonicalFile() method behaves like getCanonicalPath() but returns a new File object instead of a String.

...

Using path names from untrusted sources without first canonicalizing the filenames may result in operations being carried out on the wrong files.

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

FIO00- J

medium

unlikely

medium

P4

L3

...