Home > CAPEC List > CAPEC-132: Symlink Attack (Version 2.11)  

CAPEC-132: Symlink Attack

Symlink Attack
Definition in a New Window Definition in a New Window
Attack Pattern ID: 132
Abstraction: Detailed
Status: Draft
Completeness: Complete
Presentation Filter:
+ Summary

An attacker 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. The endpoint file may be either output or input. If the file is output, the result is that the endpoint is modified, instead of a file at the intended location. Modifications to the endpoint file may include appending, overwriting, corrupting, changing permissions, or other modifications. In some variants of this attack the attacker may be able to control the change to a file while in other cases they cannot. The former is especially damaging since the attacker may be able to grant themselves increased privileges or insert false information, but the latter can also be damaging as it can expose sensitive information or corrupt or destroy vital system or application files. Alternatively, the endpoint file may serve as input to the targeted application. This can be used to feed malformed input into the target or to cause the target to process different information, possibly allowing the attacker to control the actions of the target or to cause the target to expose information to the attacker. Moreover, the actions taken on the endpoint file are undertaken with the permissions of the targeted user or application, which may exceed the permissions that the attacker would normally have.

+ Attack Steps
  1. Identify Target: Attacker 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 attacker writes to files in different directories to check whether the application has sufficient checking before file operations.

    The attacker creates symlinks to files in different directories.

  1. Try to create symlinks to different files: The attacker 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 attacker monitors the file operations performed by the target application using a tool like dtrace or FileMon. And the attacker 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 attacker may need a little guesswork on the filenames on which the target application would operate.

    The attacker tries to create symlinks to the various filenames.

  1. Target application operates on created symlinks to sensitive files: The attacker 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.

+ Attack Prerequisites
  • The targeted application must perform the desired activities on a file without checking whether the file is a symbolic link or not. The attacker 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.

+ Typical Severity


+ Typical Likelihood of Exploit

Likelihood: Low

+ Methods of Attack
  • Spoofing
  • Analysis
  • Time and State
+ Examples-Instances


The attacker creates a symlink with the "same" name as the file which the application is intending to write to. The application will write to the file- "causing the data to be written where the symlink is pointing". An attack like this can be demonstrated as follows:

root# vulprog myFile
{...program does some processing...]
attacker# ln –s /etc/nologin myFile
[...program writes to 'myFile', which points to /etc/nologin...]

In the above example, the root user ran a program with poorly written file handling routines, providing the filename "myFile" to vulnprog for the relevant data to be written to. However, the attacker happened to be looking over the shoulder of "root" at the time, and created a link from myFile to /etc/nologin. The attack would make no user be able to login.

+ Attacker Skills or Knowledge Required

Skill or Knowledge Level: Low

To create symlinks

Skill or Knowledge Level: High

To identify the files and create the symlinks during the file operation time window

+ Resources Required

None: No specialized resources are required to execute this type of attack. The only requirement is the ability to create the necessary symbolic link.

+ Solutions and Mitigations

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.

+ Attack Motivation-Consequences
ScopeTechnical ImpactNote
"Varies by context"
Information Leakage
Modify files or directories
Read files or directories
Modify application data
Read memory
Modify memory
Read application data
Execute unauthorized code or commands
Run Arbitrary Code
Gain privileges / assume identity
Bypass protection mechanism
DoS: crash / exit / restart
DoS: instability
+ Purposes
  • Exploitation
  • Penetration
+ CIA Impact
Confidentiality Impact: HighIntegrity Impact: HighAvailability Impact: High
+ Technical Context
Architectural Paradigms
+ References
[R.132.1] Shaun Colley. "Crafting Symlinks for Fun and Profit". <http://www.infosecwriters.com/texts.php?op=display&id=159>.
[R.132.2] ATT&CK Project. "Shortcut Modification (1023)". MITRE. <https://attack.mitre.org/wiki/Shortcut_modification>.
+ Content History
CAPEC Content TeamThe MITRE Corporation2014-06-23Internal_CAPEC_Team
CAPEC Content TeamThe MITRE Corporation2015-11-09Updated ReferencesInternal
CAPEC Content TeamThe MITRE Corporation2017-08-04Updated Resources_RequiredInternal

More information is available — Please select a different filter.
Page Last Updated or Reviewed: July 31, 2017