CVE-2026-109965 in Serena
Summary
by MITRE • 10/13/2026
Serena before 2.0.0 contains an improper link resolution vulnerability that allows attackers to access files outside the project root by committing symlinks inside a repository. Project.is_path_in_project() normalizes paths lexically without resolving symlinks, so file tools like read_file and create_text_file can read or overwrite files such as SSH keys or cloud credentials.
If you want to get best quality of vulnerability data, you may have to visit VulDB.
Analysis
by VulDB Data Team • 10/13/2026
The vulnerability identified in Serena versions prior to 2.0.0 represents a critical path traversal issue rooted in improper link resolution during repository operations. This flaw allows authenticated attackers who have the ability to commit symlinks within a project's version control system to bypass intended directory boundaries and access sensitive files located outside the designated project root. The core technical deficiency lies in the implementation of the Project.is_path_in_project() function, which performs lexical normalization of file paths rather than resolving symbolic links to their actual physical locations on the filesystem. By treating path strings as simple text sequences without following symlink targets, the security check fails to detect when a relative path component points outside the allowed directory structure through an intermediate symbolic link.
From a technical perspective, this behavior creates a classic insecure direct object reference scenario where the application trusts user-supplied input regarding file locations without validating the final resolved destination. When tools such as read_file or create_text_file are invoked with paths containing symlinks, they operate on the target of the symlink rather than the path itself. Consequently, an attacker can craft a repository commit that includes a symbolic link pointing to sensitive system files, such as SSH private keys stored in user home directories or cloud provider credentials located in configuration folders outside the project workspace. The application then reads from or writes to these external locations because it believes the operation is confined within the project root based on the un-resolved path string.
The operational impact of this vulnerability is severe, particularly in environments where Serena is used for managing code repositories that may contain sensitive infrastructure configurations or developer credentials. Successful exploitation enables unauthorized reading of confidential data, leading to potential credential theft and subsequent lateral movement within an organization's network. Furthermore, the ability to overwrite files via create_text_file allows attackers to modify critical system configuration files, potentially disrupting service availability or establishing persistence mechanisms by injecting malicious scripts into startup directories. This level of access effectively compromises the integrity and confidentiality guarantees expected from a secure version control management tool.
This vulnerability aligns with CWE-59 Improper Link Resolution Before File Access, which describes flaws where applications do not properly validate symbolic links before performing file operations. In terms of offensive security frameworks, this technique corresponds to ATT&CK T1083 File and Directory Discovery, as it facilitates the enumeration and access of files outside expected boundaries, and can be leveraged for Credential Access (T1552) if sensitive keys are extracted. To mitigate this risk, organizations must upgrade Serena to version 2.0.0 or later where the path resolution logic has been corrected to resolve symlinks before performing boundary checks. Additionally, developers should implement defense-in-depth strategies by validating file paths using canonicalization methods that account for symlink targets and restricting write permissions on directories containing sensitive credentials to prevent exploitation even if similar vulnerabilities exist in other components of the stack.