The software, when opening a file or directory, does not sufficiently account for when the file is a symbolic link that resolves to a target outside of the intended control sphere. This could allow an attacker to cause the software to operate on unauthorized files. A software system that allows UNIX symbolic links (symlink) as part of paths whether in internal code or through user input can allow an attacker to spoof the symbolic link and traverse the file system to unintended locations or access arbitrary files. The symbolic link can permit an attacker to read/write/corrupt a file that they originally did not have permissions to access. 1000 Weakness ChildOf 59 631 699 Category ChildOf 60 1000 Weakness Requires 362 1000 Weakness Requires 340 1000 Weakness Requires 216 1000 Weakness Requires 386 1000 Category Requires 275 Resultant Fault: filename predictability, insecure directory permissions, non-atomic operations, race condition. These are typically reported for temporary files or privileged programs. Symlink following symlink vulnerability Implementation High to Very High Confidentiality Integrity Read files or directories Modify files or directories Implementation Symbolic link attacks often occur when a program creates a tmp directory that stores files/links. Access to the directory should be restricted to the program as to prevent attackers from manipulating the files. Architecture and Design Separation of Privilege Follow the principle of least privilege when assigning access rights to entities in a software system. Denying access to a file can prevent an attacker from replacing that file with a link to a sensitive file. Ensure good compartmentalization in the system to provide protected areas that can be trusted. Explicit CVE-1999-1386 Some versions of Perl follows symbolic links when running with the -e option, which allows local users to overwrite arbitrary files via a symlink attack. CVE-2000-1178 Text editor follows symbolic links when creating a rescue copy during an abnormal exit, which allows local users to overwrite the files of other users. CVE-2004-0217 Antivirus update allows local users to create or append to arbitrary files via a symlink attack on a logfile. CVE-2003-0517 Symlink attack allows local users to overwrite files. CVE-2004-0689 Possible interesting example CVE-2005-1879 Second-order symlink vulnerabilities CVE-2005-1880 Second-order symlink vulnerabilities CVE-2005-1916 Symlink in Python program CVE-2000-0972 Setuid product allows file reading by replacing a file being edited with a symlink to the targeted file, leaking the result in error messages when parsing fails. CVE-2005-0824 Signal causes a dump that follows symlinks. Symlink vulnerabilities are regularly found in C and shell programs, but all programming languages can have this problem. Even shell programs are probably under-reported. "Second-order symlink vulnerabilities" may exist in programs that invoke other programs that follow symlinks. They are rarely reported but are likely to be fairly common when process invocation is used. Reference: [Christey2005] Steve Christey Second-Order Symlink Vulnerabilities Bugtraq 2005-06-07 http://www.securityfocus.com/archive/1/401682 Shaun Colley Crafting Symlinks for Fun and Profit Infosec Writers Text Library 2004-04-12 http://www.infosecwriters.com/texts.php?op=display&id=159 Mark Dowd John McDonald Justin Schuh The Art of Software Security Assessment Chapter 9, "Symbolic Link Attacks", Page 518. 1st Edition Addison Wesley 2006 UNIX symbolic link following 27 PLOVER Eric Dalci Cigital 2008-07-01 updated Time_of_Introduction CWE Content Team MITRE 2008-09-08 updated Relationships, Observed_Example, Other_Notes, Research_Gaps, Taxonomy_Mappings, Weakness_Ordinalities CWE Content Team MITRE 2008-10-14 updated Description CWE Content Team MITRE 2009-07-27 updated Observed_Examples CWE Content Team MITRE 2011-06-01 updated Common_Consequences CWE Content Team MITRE 2012-05-11 updated Observed_Examples, References CWE Content Team MITRE 2012-10-30 updated Potential_Mitigations