Skip to content
OpenAdvisories

Weakness (CWE)

CWE-59: Improper Link Resolution Before File Access

Base Draft

The product attempts to access a file based on the filename, but it does not properly prevent that filename from identifying a link or shortcut that resolves to an unintended resource.

How to prevent it (1 mitigation)
  1. Architecture and Design

    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.

Source: MITRE CWE-59

58 results · Clear filters · Feed

  • Low 2.2

    Symlink-following arbitrary write via github_workflows module

    The github_workflows module constructs local directory paths from user-controlled repository names without validating for symlinks. A local attacker sharing the scan directory can plant a symlink at the predictable output path, causing workflow data to be wri…

  • Low 2.0

    AnythingLLM: filesystem-copy-file follows nested symlinks and copies files from outside the allowed directory

    AnythingLLM is an application that turns pieces of content into context that any LLM can use as references during chatting. Prior to 1.13.0, the AnythingLLM agent filesystem copy tool validates only the top-level source and destination paths. The recursive co…

  • Low 3.2

    ciguard: discover_pipeline_files follows symlinks out of scan root

    ciguard is a static security auditor for CI/CD pipelines. From 0.8.0 to 0.8.1 , the discover_pipeline_files() function in src/ciguard/discovery.py walks a directory tree following symlinks, with cycle protection via tracking visited resolved paths. An attacke…

  • Low 3.5

    LORIS incorrectly trusts user input in publication module

    LORIS (Longitudinal Online Research and Imaging System) is a self-hosted web application that provides data- and project-management for neuroimaging research. From 20.0.0 to before 27.0.3 and 28.0.1, an endpoint in the publication module was incorrectly trust…

  • Low 3.3

    OpenClaw < 2026.2.22 - Arbitrary File Read via Symlink Following in Static File Handler

    OpenClaw versions prior to 2026.2.22 contain a path traversal vulnerability in the static file handler that follows symbolic links, allowing out-of-root file reads. Attackers can place symlinks under the Control UI root directory to bypass directory confineme…

  • Low 3.3

    This issue was addressed with improved handling of symlinks. This issue is fixed in macOS Sequoia 15.7.2, macOS Sonoma …

  • Low 3.6
    CVE-2025-55188 Public exploit

    7-Zip before 25.01 does not always properly handle symbolic links during extraction.

  • Low 2.5

    tmp does not restrict arbitrary temporary file / directory write via symbolic link `dir` parameter

    tmp is a temporary file and directory creator for node.js. In versions 0.2.3 and below, tmp is vulnerable to an arbitrary temporary file / directory write via symbolic link dir parameter. This is fixed in version 0.2.4.

  • Low 2.1

    Metabase vulnerable to circumvention of local link access protection in GeoJson endpoint

    Metabase is a business intelligence and embedded analytics tool. Versions prior to v0.52.16.4, v1.52.16.4, v0.53.8, and v1.53.8 are vulnerable to circumvention of local link access protection in GeoJson endpoint. Self hosted Metabase instances that are using …

  • Low 3.9

    Zoom Workplace app for macOS - Symlink Following

    Symlink following in the installer for Zoom Workplace App for macOS before 6.2.10 may allow an authenticated user to conduct a denial of service via local access.

  • Low 3.8

    Vagrant’s Windows Installer Allowed Directory Junction Write

    HashiCorp Vagrant's Windows installer targeted a custom location with a non-protected path that could be junctioned, introducing potential for unauthorized file system writes. Fixed in Vagrant 2.4.0.

  • Low 2.7

    Directory exposure in jetty

    In Eclipse Jetty 9.4.32 to 9.4.38, 10.0.0.beta2 to 10.0.1, and 11.0.0.beta2 to 11.0.1, if a user uses a webapps directory that is a symlink, the contents of the webapps directory is deployed as a static webapp, inadvertently serving the webapps themselves and…

  • Low 3.8

    Insecure temp file usage in Ubuntu UI toolkit

    On desktop, Ubuntu UI Toolkit's StateSaver would serialise data on tmp/ files which an attacker could use to expose potentially sensitive data. StateSaver would also open files without the O_EXCL flag. An attacker could exploit this to launch a symlink attack…

  • Low 2.2

    permissions: chkstat sets unintended setuid/capabilities for mrsh and wodim

    A UNIX Symbolic Link (Symlink) Following vulnerability in chkstat of SUSE Linux Enterprise Server 12, SUSE Linux Enterprise Server 15, SUSE Linux Enterprise Server 11 set permissions intended for specific binaries on other binaries because it erroneously foll…

  • Low —

    Local Privilege Escalation in npm

    lib/npm.js in Node Packaged Modules (npm) before 1.3.3 allows local users to overwrite arbitrary files via a symlink attack on temporary files with predictable names that are created when unpacking archives.

  • Low —

    pyxdg Arbitrary File Overwrite via Race Condition

    Race condition in the xdg.BaseDirectory.get_runtime_dir function in python-xdg 0.25 allows local users to overwrite arbitrary files by pre-creating /tmp/pyxdg-runtime-dir-fallback-victim to point to a victim-owned location, then replacing it with a symlink to…

  • Low —

    GoLismero symlink attack

    libs/updater.py in GoLismero 0.6.3, and other versions before Git revision 2b3bb43d6867, as used in backtrack and possibly other products, allows local users to overwrite arbitrary files via a symlink attack on GoLismero-controlled files, as demonstrated usin…

  • Low —

    Puppet arbitrary files overwrite via a symlink attack

    Puppet 0.24.x before 0.24.9 and 0.25.x before 0.25.2 allows local users to overwrite arbitrary files via a symlink attack on the (1) /tmp/daemonout, (2) /tmp/puppetdoc.txt, (3) /tmp/puppetdoc.tex, or (4) /tmp/puppetdoc.aux temporary file.