Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: "validation without canonicalization is insecure" changed to "canonicalization without validation".

...

This noncompliant code example attempts to mitigate the issue by using the File.getCanonicalPath() method, which fully resolves the argument and constructs a canonicalized path. For example, the path /img/../etc/passwd resolves to /etc/passwd. Validation Canonicalization without canonicalization validation is insecure because the user can specify files outside the intended directory.

...

The CERT C Secure Coding Standard

FIO02-C. Canonicalize path names originating from untrusted sources

The CERT C++ Secure Coding Standard

FIO02-CPP. Canonicalize path names originating from untrusted sources

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="5cbad76dbdae60cb-cf5065fb-410646da-9ad185f1-d0d38d1dc987a7d0410065ae"><ac:plain-text-body><![CDATA[

[ISO/IEC TR 24772:2010

http://www.aitcnet.org/isai/]

"Path Traversal [EWR]"

]]></ac:plain-text-body></ac:structured-macro>

MITRE CWE

CWE-171, "Cleansing, Canonicalization, and Comparison Errors"

 

CWE-647, "Use of Non-Canonical URL Paths for Authorization Decisions"

...

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="b9911c930c1d68fb-83f7dd3b-40d048dc-843688ed-a87fa296543a9cc404e6156d"><ac:plain-text-body><![CDATA[

[[API 2006

AA. Bibliography#API 06]]

[method getCanonicalPath()

http://java.sun.com/javase/6/docs/api/java/io/File.html#getCanonicalPath()]

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="517b9f2dd7a04911-30650edf-42be454f-b2a58d5d-d7b1fc9b6e9bcc3968c6d32c"><ac:plain-text-body><![CDATA[

[[Harold 1999

AA. Bibliography#Harold 99]]

 

]]></ac:plain-text-body></ac:structured-macro>

...