CVE-2026-14439
Executive Summary
CVE-2026-14439 is a critical path traversal vulnerability in the Git Service component shared by Altium Enterprise Server and Altium 365. The vulnerability allows an authenticated user with basic git access to move arbitrary files outside the intended repository area by supplying user-controlled paths without validation. This file-move primitive can be weaponized to place attacker-controlled script content into directories where it is later executed by the service, leading to remote code execution (RCE) under the Git Service account. On multi-tenant Altium 365 deployments, this could have allowed lateral movement and access to data belonging to other tenants on the same infrastructure node. The vulnerability has been fixed in Altium Enterprise Server version 8.1.1 and remediated at the service level for Altium 365 cloud deployments.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not directly related to NPM, PyPI, Go, or Ruby packages. However, Altium 365 is a cloud-based platform that may integrate with third-party services and libraries. Organizations using Altium 365 should verify that the service-level remediation has been applied by Altium and review any custom integrations or plugins that might expose similar path traversal risks.
CVSS Breakdown & Threat Level
CVSS Score: 9.9 (Critical) Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
- Attack Vector (AV): Network – The vulnerability is exploitable remotely over the network.
- Attack Complexity (AC): Low – No special conditions or race conditions are required.
- Privileges Required (PR): Low – An attacker needs only basic git access (authenticated user).
- User Interaction (UI): None – No user interaction is required.
- Scope (S): Changed – The vulnerability can impact resources beyond the original repository scope (e.g., other tenants).
- Confidentiality (C): High – Full read access to arbitrary files, including tenant data.
- Integrity (I): High – Attacker can write arbitrary script content to execution directories.
- Availability (A): High – RCE can lead to service disruption or destruction.
Threat Level: Critical. The combination of low privileges, network exploitability, and potential for cross-tenant data breach makes this a high-priority vulnerability for Altium customers.
Deep Dive & Mechanics
The vulnerability resides in the Git Service component, which handles post-clone file-manipulation operations. The service accepts a sequence of operations (e.g., move, copy, delete) that use user-supplied paths without proper validation. Specifically, the service fails to sanitize or canonicalize paths, allowing an attacker to use path traversal sequences (e.g., ../) to escape the intended repository directory.
Attack Flow:
- Authentication: The attacker authenticates to the Git Service with basic git access (e.g., a valid user account with repository read/write permissions).
- Post-Clone Operations: After cloning a repository, the attacker sends a series of file-manipulation commands (e.g.,
git mvor custom API calls) that include path traversal sequences in the source or destination paths. - File Move Primitive: The service executes the move operation without checking if the destination path is within the allowed repository directory. For example, moving a file from
repo/file.txtto../../etc/cron.d/malicious_scriptwould place the file outside the repository. - Script Execution: The attacker places a script (e.g., a shell script or a cron job) into a directory that is later executed by the Git Service or another system component. This could be a cron directory, an init script directory, or a web-accessible directory.
- Remote Code Execution: When the script is executed (e.g., by a cron job or service restart), the attacker gains code execution under the Git Service account.
Multi-Tenant Impact: In Altium 365, the Git Service runs on shared infrastructure. By moving files to directories accessible by other tenants (e.g., shared storage or configuration directories), an attacker could read or modify data belonging to other tenants, leading to a cross-tenant data breach.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
# Vulnerable Git Service handler
def handle_post_clone_move(repo_path, source, destination):
# No path validation or canonicalization
full_source = os.path.join(repo_path, source)
full_dest = os.path.join(repo_path, destination)
shutil.move(full_source, full_dest)
Patched Code (Conceptual):
import os
def safe_path_join(base, user_path):
# Canonicalize and validate path
full_path = os.path.realpath(os.path.join(base, user_path))
if not full_path.startswith(os.path.realpath(base)):
raise ValueError("Path traversal detected")
return full_path
def handle_post_clone_move(repo_path, source, destination):
safe_source = safe_path_join(repo_path, source)
safe_dest = safe_path_join(repo_path, destination)
shutil.move(safe_source, safe_dest)
The patched code uses os.path.realpath() to resolve symlinks and canonicalize the path, then checks that the resulting path starts with the intended base directory. This prevents path traversal attacks.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- Access to an Altium Enterprise Server (version < 8.1.1) or Altium 365 instance.
- Valid git credentials with basic repository access.
Exploitation Steps:
- Clone a repository to establish a working directory.
- Create a malicious script (e.g.,
payload.sh) that will be executed by the service. - Use the Git Service API to move the script to a directory where it will be executed. For example:
# Assuming the Git Service accepts a move command via HTTP API curl -X POST https://target.altium.com/git-service/move \ -H "Authorization: Bearer <token>" \ -d 'source=repo/payload.sh&destination=../../etc/cron.d/malicious_cron' - Trigger execution (e.g., wait for cron job or restart service).
- Verify RCE by checking for a reverse shell or file creation.
Alternative Exploit (if API is not available):
- Use
git mvwith path traversal:git mv payload.sh ../../etc/cron.d/malicious_cron git commit -m "malicious move" git push
Blue Team (Defense & Detection)
Detection Steps:
- Monitor Git Service logs for unusual file move operations with path traversal patterns (e.g.,
../). - Audit file system changes outside of repository directories, especially in cron, init, and web directories.
- Implement file integrity monitoring (FIM) on critical system directories.
- Restrict Git Service account permissions to prevent writes outside repository directories.
- Apply the patch (Altium Enterprise Server 8.1.1 or later) or ensure Altium 365 service-level remediation is in place.
Honeypot Strategy:
- Create a fake repository with a honeypot file that triggers an alert when moved outside the repository.
Indicators of Compromise (IOCs)
File System IOCs:
- Unexpected files in
/etc/cron.d/,/etc/init.d/,/var/www/html/, or other execution directories. - Files with names matching repository content but located outside the repository.
Network IOCs:
- HTTP requests to the Git Service API with path traversal sequences in parameters (e.g.,
source=../../etc/passwd). - Outbound connections from the Git Service account to attacker-controlled IPs (reverse shell).
Log IOCs:
- Git Service logs showing file move operations with paths containing
../or absolute paths. - System logs showing execution of scripts from unexpected locations.
Sample YARA Rule (for file scanning):
rule CVE_2026_14439_PathTraversal {
meta:
description = "Detects path traversal attempts in Altium Git Service logs"
author = "Valters IT"
date = "2026-01-01"
strings:
$traversal = "../"
$absolute = /^\/[a-zA-Z0-9_\/]+/
condition:
any of them
}
Detection Engineering
YARA Rules
rule CVE_2026_14439_FileMove {
meta:
description = "Detects file move operations with path traversal in Altium Git Service"
author = "Valters IT"
date = "2026-01-01"
strings:
$move_cmd = "move" nocase
$traversal = "../"
$dest_path = /destination=[^&]*\.\.\//
condition:
$move_cmd and ($traversal or $dest_path)
}
Sigma Rules
title: Altium Git Service Path Traversal Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects path traversal attempts in Altium Git Service logs
author: Valters IT
date: 2026/01/01
logsource:
category: application
product: altium_git_service
detection:
selection:
EventID: 1001 # Example event ID for file move
Path|contains: '../'
condition: selection
falsepositives:
- Legitimate use of relative paths (unlikely)
level: high
Suricata Rules
alert http any any -> any any (msg:"CVE-2026-14439 Altium Git Service Path Traversal"; flow:to_server; content:"POST"; http_method; content:"/git-service/move"; http_uri; content:"../"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade Altium Enterprise Server to version 8.1.1 or later.
- For Altium 365 users: Verify that the service-level remediation has been applied by Altium. Contact Altium support if unsure.
- Restrict Git Service account permissions to the minimum required (e.g., no write access to system directories).
- Enable logging and monitoring for the Git Service component.
Long-Term Mitigations:
- Implement input validation and path canonicalization in all file manipulation operations.
- Use a web application firewall (WAF) to block path traversal patterns.
- Conduct regular security audits of the Git Service component.
- Apply the principle of least privilege to all service accounts.
Workarounds (if patching is not immediately possible):
- Disable the Git Service component if not needed.
- Use network segmentation to limit access to the Git Service.
- Implement a reverse proxy that validates paths before forwarding requests.
Valters IT