<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sun, 04 Oct 2026 14:10:59 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-47121</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-47121</link>
      <description>&lt;p&gt;Sparkle is a software update framework for macOS. Prior to version 2.9.2, `Autoupdate/SUBinaryDeltaApply.m` enforces `relativePath.pathComponents containsObject:@&amp;#34;..&amp;#34;` 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`&amp;#39;s `extractItem:` will create symlinks in the destination tree from archive content (no `..` check on the symlink target), and a subsequent `Extract` item targeting `&amp;lt;symlink&amp;gt;/foo/bar` then escapes the destination tree via `fopen(path, &amp;#34;wb&amp;#34;)` 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 &amp;#34;drop-in replacement bundle&amp;#34; install they would otherwise have. Version 2.9.2 contains a patch for the issue.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Sparkle is a software update framework for macOS. Prior to version 2.9.2, `Autoupdate/SUBinaryDeltaApply.m` enforces `relativePath.pathComponents containsObject:@&amp;#34;..&amp;#34;` 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`&amp;#39;s `extractItem:` will create symlinks in the destination tree from archive content (no `..` check on the symlink target), and a subsequent `Extract` item targeting `&amp;lt;symlink&amp;gt;/foo/bar` then escapes the destination tree via `fopen(path, &amp;#34;wb&amp;#34;)` 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 &amp;#34;drop-in replacement bundle&amp;#34; install they would otherwise have. Version 2.9.2 contains a patch for the issue.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-47121</guid>
    </item>
    <item>
      <title>GHSA-hg88-v3cw-3qrh — Sparkle: Binary delta apply intermediate-symlink traversal in malicious .delta</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-hg88-v3cw-3qrh</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; SwiftURL: github.com/sparkle-project/Sparkle&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;Binary delta apply intermediate-symlink traversal in malicious .delta&lt;/p&gt;
&lt;p&gt;`Autoupdate/SUBinaryDeltaApply.m` enforces `relativePath.pathComponents containsObject:@&amp;#34;..&amp;#34;` 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`&amp;#39;s `extractItem:` will create symlinks in the destination tree from archive content (no `..` check on the symlink target), and a subsequent `Extract` item targeting `&amp;lt;symlink&amp;gt;/foo/bar` then escapes the destination tree via `fopen(path, &amp;#34;wb&amp;#34;)` because the kernel resolves the intermediate symlink during the open call.&lt;/p&gt;
&lt;p&gt;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 &amp;#34;drop-in replacement bundle&amp;#34; install they would otherwise have.&lt;/p&gt;
&lt;p&gt;Affected versions: 1.x (master branch), 2.x branch including 2.9.1.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;### Symlink writeable from archive&lt;/p&gt;
&lt;p&gt;`Autoupdate/SPUSparkleDeltaArchive.m:557-678`&amp;#39;s `extractItem:` handles symlinks if the archive item carries `S_ISLNK(mode)`:&lt;/p&gt;
&lt;p&gt;```objc
} else {
    // Link files&lt;/p&gt;
&lt;p&gt;if (PARTIAL_IO_CHUNK_SIZE &amp;lt; decodedLength) { ...too long... }
    if (decodedLength &amp;gt; PATH_MAX) { .…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; SwiftURL: github.com/sparkle-project/Sparkle&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;Binary delta apply intermediate-symlink traversal in malicious .delta&lt;/p&gt;
&lt;p&gt;`Autoupdate/SUBinaryDeltaApply.m` enforces `relativePath.pathComponents containsObject:@&amp;#34;..&amp;#34;` 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`&amp;#39;s `extractItem:` will create symlinks in the destination tree from archive content (no `..` check on the symlink target), and a subsequent `Extract` item targeting `&amp;lt;symlink&amp;gt;/foo/bar` then escapes the destination tree via `fopen(path, &amp;#34;wb&amp;#34;)` because the kernel resolves the intermediate symlink during the open call.&lt;/p&gt;
&lt;p&gt;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 &amp;#34;drop-in replacement bundle&amp;#34; install they would otherwise have.&lt;/p&gt;
&lt;p&gt;Affected versions: 1.x (master branch), 2.x branch including 2.9.1.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;### Symlink writeable from archive&lt;/p&gt;
&lt;p&gt;`Autoupdate/SPUSparkleDeltaArchive.m:557-678`&amp;#39;s `extractItem:` handles symlinks if the archive item carries `S_ISLNK(mode)`:&lt;/p&gt;
&lt;p&gt;```objc
} else {
    // Link files&lt;/p&gt;
&lt;p&gt;if (PARTIAL_IO_CHUNK_SIZE &amp;lt; decodedLength) { ...too long... }
    if (decodedLength &amp;gt; PATH_MAX) { .…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-hg88-v3cw-3qrh</guid>
    </item>
  </channel>
</rss>
