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.
Published: 2026-07-21
Score: 6.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Sparkle, a macOS software update framework, has a path‑traversal vulnerability in its binary delta application. The framework rejects writes whose immediate parent directory is a symbolic link, but fails to detect symbolic links that appear deeper in the relative path. During extraction, it creates symlinks in the destination without checking the symlink target, and a later extraction targeting a file under such a symlink (for example, '<symlink>/foo/bar') allows the system call to open a path resolved outside the intended directory, enabling arbitrary file writes. Exploitation requires a malicious .delta file that passes EdDSA signature verification, i.e. a compromised private key. If AppInstaller runs as root for system‑domain installs, the flaw allows the attacker to write any file at the root level, providing privilege escalation beyond the normal drop‑in replacement bundle. The issue is fixed in version 2.9.2.

Affected Systems

The Sparkle framework produced by the Sparkle Project for macOS versions earlier than 2.9.2 is affected.

Risk and Exploitability

The CVSS score of 6.1 indicates moderate severity, while the EPSS score of less than 1% suggests a very low likelihood of exploitation at present. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires a stolen EdDSA private key and a local update context, so the risk is moderate under normal conditions but could be severe for installations that run AppInstaller as root for system‑domain updates, providing arbitrary root‑level file writes.

Generated by OpenCVE AI on August 1, 2026 at 06:57 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Install Sparkle version 2.9.2 or later to eliminate the flaw.
  • Configure the AppInstaller process so that system‑domain updates run with the least privilege necessary, or temporarily disable system‑domain auto‑updates until the patch is applied.
  • Secure and rotate the EdDSA signing keys used for update packages to prevent key compromise.
  • Implement monitoring for unexpected symlink creation or file writes in the root filesystem as a detection measure.

Generated by OpenCVE AI on August 1, 2026 at 06:57 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-hg88-v3cw-3qrh Sparkle: Binary delta apply intermediate-symlink traversal in malicious .delta
History

Wed, 22 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 22 Jul 2026 00:15:00 +0000

Type Values Removed Values Added
First Time appeared Sparkle-project
Sparkle-project sparkle
Vendors & Products Sparkle-project
Sparkle-project sparkle

Tue, 21 Jul 2026 14:00:00 +0000

Type Values Removed Values Added
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.
Title Sparkle: Binary delta apply intermediate-symlink traversal in malicious .delta
Weaknesses CWE-22
CWE-59
References
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:N/I:H/A:N'}


Subscriptions

Sparkle-project Sparkle
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-22T14:30:47.083Z

Reserved: 2026-05-18T19:50:18.694Z

Link: CVE-2026-47121

cve-icon Vulnrichment

Updated: 2026-07-22T14:30:40.892Z

cve-icon NVD

Status : Analyzed

Published: 2026-07-21T14:16:34.387

Modified: 2026-08-05T19:45:19.490

Link: CVE-2026-47121

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-01T07:00:04Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE-59

    Improper Link Resolution Before File Access ('Link Following')