CVE-2026-47121
Received Received - Intake

Symlink Path Traversal in Sparkle Framework

Vulnerability report for CVE-2026-47121, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-07-21

Last updated on: 2026-07-21

Assigner: GitHub, Inc.

Description

Sparkle is a software update framework for macOS. Prior to version 2.9.2, `Autoupdate/SUBinaryDeltaApply.m` enforces `relativePath.pathComponents containsObject:@".."` and rejects writes whose immediate parent directory IS itself a symbolic link, but does not detect symlinks deeper in the relative path. `Autoupdate/SPUSparkleDeltaArchive.m`'s `extractItem:` will create symlinks in the destination tree from archive content (no `..` check on the symlink target), and a subsequent `Extract` item targeting `<symlink>/foo/bar` then escapes the destination tree via `fopen(path, "wb")` because the kernel resolves the intermediate symlink during the open call. This is a defense-in-depth issue: exploitation requires a maliciously-crafted `.delta` that passes EdDSA signature verification, i.e. EdDSA private-key compromise. With the AppInstaller running as root for system-domain installs, it gives the holder of a stolen signing key arbitrary file write at root level via the delta-apply path, which is a strictly broader primitive than the "drop-in replacement bundle" install they would otherwise have. Version 2.9.2 contains a patch for the issue.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-07-21
Last Modified
2026-07-21
Generated
2026-07-21
AI Q&A
2026-07-21
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 2 associated CPEs
Vendor Product Version / Range
sparkle 2.9.2 *
sparkle_project sparkle 2.9.2

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-59 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.
CWE-22 The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

CVE-2026-47121 is a vulnerability in Sparkle, a macOS software update framework. It allows attackers with a compromised EdDSA signing key to bypass path traversal checks during binary delta application. The issue occurs because the code only checks the immediate parent directory for symbolic links but misses deeper symlinks in the path. This enables arbitrary file writes outside the intended destination, including system directories like /Library/LaunchDaemons when the AppInstaller runs as root.

Detection Guidance

Detecting this vulnerability requires checking for Sparkle versions prior to 2.9.2 and inspecting delta update files for malicious symlink patterns. Use 'defaults read /Library/Preferences/com.apple.Sparkle.plist' to check Sparkle version. Examine .delta files in update caches for symlink entries targeting parent directories or system paths.

Impact Analysis

If exploited, this vulnerability allows attackers to write files anywhere on the system with root privileges, bypassing normal update restrictions. This could lead to malware installation, system configuration changes, or persistence mechanisms. Users relying on Sparkle for updates are at risk if the attacker has a stolen signing key.

Compliance Impact

This vulnerability could violate compliance requirements by enabling unauthorized file writes, potentially leading to data breaches or system compromise. GDPR requires protecting personal data integrity, while HIPAA mandates safeguarding health information. Unauthorized system modifications may breach these standards, resulting in legal and regulatory penalties.

Mitigation Strategies

Immediately update Sparkle to version 2.9.2 or later. Verify all installed applications use the patched version. Review and remove any untrusted .delta files in update caches. Monitor system files for unauthorized modifications, especially in /Library/LaunchDaemons and other root-level directories.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-47121. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart