Name |
Symlink Attack |
|
Likelyhood of attack |
Typical severity |
Low |
High |
|
Summary |
An adversary positions a symbolic link in such a manner that the targeted user or application accesses the link's endpoint, assuming that it is accessing a file with the link's name. |
Prerequisites |
The targeted application must perform the desired activities on a file without checking whether the file is a symbolic link or not. The adversary must be able to predict the name of the file the target application is modifying and be able to create a new symbolic link where that file would appear. |
Execution Flow |
Step |
Phase |
Description |
Techniques |
1 |
Explore |
[Identify Target] Adversary identifies the target application by determining whether there is sufficient check before writing data to a file and creating symlinks to files in different directories. |
- The adversary writes to files in different directories to check whether the application has sufficient checking before file operations.
- The adversary creates symlinks to files in different directories.
|
2 |
Experiment |
[Try to create symlinks to different files] The adversary then uses a variety of techniques, such as monitoring or guessing to create symlinks to the files accessed by the target application in the directories which are identified in the explore phase. |
- The adversary monitors the file operations performed by the target application using a tool like dtrace or FileMon. And the adversary can delay the operations by using "sleep(2)" and "usleep()" to prepare the appropriate conditions for the attack, or make the application perform expansive tasks (large files parsing, etc.) depending on the purpose of the application.
- The adversary may need a little guesswork on the filenames on which the target application would operate.
- The adversary tries to create symlinks to the various filenames.
|
3 |
Exploit |
[Target application operates on created symlinks to sensitive files] The adversary is able to create symlinks to sensitive files while the target application is operating on the file. |
- Create the symlink to the sensitive file such as configuration files, etc.
|
|
Solutions | Design: Check for the existence of files to be created, if in existence verify they are neither symlinks nor hard links before opening them. Implementation: Use randomly generated file names for temporary files. Give the files restrictive permissions. |
Related Weaknesses |
CWE ID
|
Description
|
CWE-59 |
Improper Link Resolution Before File Access ('Link Following') |
|
Related CAPECS |
CAPEC ID
|
Description
|
CAPEC-159 |
An adversary exploits a weakness in the way an application searches for external libraries to manipulate the execution flow to point to an adversary supplied library or code base. This pattern of attack allows the adversary to compromise the application or server via the execution of unauthorized code. An application typically makes calls to functions that are a part of libraries external to the application. These libraries may be part of the operating system or they may be third party libraries. If an adversary can redirect an application's attempts to access these libraries to other libraries that the adversary supplies, the adversary will be able to force the targeted application to execute arbitrary code. This is especially dangerous if the targeted application has enhanced privileges. Access can be redirected through a number of techniques, including the use of symbolic links, search path modification, and relative path manipulation. |
|
Taxonomy: ATTACK |
Entry ID
|
Entry Name
|
1547.009 |
Boot or Logon Autostart Execution:Shortcut Modification |
|