CVE-2026-54672: electron-updater Uncontrolled Search Path Elements Within Vulnerability

HIGH
Advisory Identifier: GHSA-7g7r-gx96-252g
CVSS 7.8
CWE-427
Published
Advisory Summary

CVE-2026-54672 is a HIGH (CVSS 7.8) uncontrolled search path elements within vulnerability (CWE-427: Uncontrolled Search Path Element) affecting electron-updater libraries in the npm ecosystem. The issue involves uncontrolled search path elements within `appimage` built by `app-builder-lib`. Remediation is available by upgrading affected packages to version 26.15.0.

CVE-2026-54672 at a Glance

CVE Identifier CVE-2026-54672
GHSA Identifier GHSA-7g7r-gx96-252g
Severity HIGH
CVSS v3.1 Base Score 7.8
CWE Classification CWE-427: Uncontrolled Search Path Element
Affected Product electron-updater
Package Ecosystem npm
Published Date
Last Updated

Security Impact

CVSS: 7.8

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H).

Attack Vector Local (AV:L)
Attack Complexity Low (AC:L)
Privileges Required Low (PR:L)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality High (C:H)
Integrity High (I:H)
Availability High (A:H)

How to Fix CVE-2026-54672

To remediate this vulnerability, upgrade all affected electron-updater dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

app-builder-lib fixed: 26.15.0
npm install app-builder-lib@26.15.0
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

npm ls app-builder-lib

How to Check if You Are Affected

To determine whether your Node.js application is affected by CVE-2026-54672, inspect your project dependencies using npm:

npm ls app-builder-lib

Analyze the terminal output to locate any version of electron-updater in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 26.15.0), your application is affected.

Note: The npm ls app-builder-lib command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-427: Uncontrolled Search Path Element, where the product uses a fixed or controlled search path to find resources, but one or more locations in that path can be under the control of unintended actors. In electron-updater, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary `AppImage` targets built by `app-builder-lib` could use an empty path component when setting the `LD_LIBRARY_PATH` environment variable at runtime. This causes the current working directory to be added to the dynamic linker search path, which may allow an attacker to execute arbitrary code by placing a malicious shared library in the directory from which the `AppImage` is launched. This vulnerability is the same class as [`CVE-2024-41817`](https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-8rxc-922v-phg8). ### Details The vulnerability existed in two independent code paths within `app-builder-lib` (toolset `1.0.0`) and through upstream dependency `app-builder-bin` (toolset `0.0.0`). #### Path 1 — Modern static runtime (`AppRun` generated by TypeScript) The `AppRun` script generated by `app-builder-lib` contained this line: ```bash export LD_LIBRARY_PATH="${APPDIR}/usr/lib:${LD_LIBRARY_PATH}" ``` When `LD_LIBRARY_PATH` is not set in the environment at launch time, this evaluates to: ``` /path/to/app.AppDir/usr/lib: ``` The trailing `:` is treated by the dynamic linker as an empty path component, which resolves to the current working directory. If an attacker can place a malicious shared library (e.g., `libfoo.so`) in the directory from which the `AppImage` is executed, that library will be loaded in place of the legitimate one, resulting in arbitrary code execution. The same issue affected `PATH`, `XDG_DATA_DIRS`, and `GSETTINGS_SCHEMA_DIR` in the same script. ```bash export LD_LIBRARY_PATH="${APPDIR}/usr/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}" ``` #### Path 2 — Legacy FUSE2 toolset (`app-builder-bin`) `AppImage` targets built using the legacy FUSE2 toolset (`toolsets.appimage = "0.0.0"`) delegated `AppRun` script generation to the `app-builder-bin` Go binary, which contained the same vulnerable template: https://github.com/develar/app-builder/blob/7004925f95d8f034fc88d7e782c9aa7583debb8e/pkg/package-format/appimage/templates/AppRun.sh#L27 ### Impact An attacker with the ability to write files to the directory from which a vulnerable `AppImage` is executed can cause arbitrary shared libraries to be loaded into the application process, resulting in arbitrary code execution with the privileges of the user running the `AppImage`. ### Affected Versions This was fully resolved in **`app-builder-lib@26.15.0`** (commit [`01b8ba979`](https://github.com/electron-userland/electron-builder/commit/01b8ba979), PR [#9829](https://github.com/electron-userland/electron-builder/pull/9829)) when `app-builder-bin` was removed from the dependency tree entirely and all AppImage construction was migrated to the TypeScript implementation. ### Workarounds Set `LD_LIBRARY_PATH` to a non-empty value before launching the `AppImage`, so that the concatenation does not produce an empty path component. Alternatively, avoid running `AppImage` files from world-writable directories such as `/tmp`.

CVE-2026-54672 Affected electron-updater Versions

1 component(s)
Fixed Versions:
26.15.0
Product / Package Ecosystem Affected Versions Fixed Version
app-builder-lib
npm
< 26.15.0
26.15.0

References

Frequently Asked Questions

What is CVE-2026-54672?
CVE-2026-54672 is a security vulnerability in electron-updater involving Uncontrolled search path elements within `AppImage` built by `app-builder-lib` under CWE-427: Uncontrolled Search Path Element.
Which electron-updater versions are affected?
Affected versions include releases prior to 26.15.0 across affected packages: app-builder-lib.
What version fixes CVE-2026-54672?
Upgrading to 26.15.0 (or the latest patched release for your respective branch) resolves the vulnerability.
Is app-builder-lib affected?
Yes, app-builder-lib is affected in releases prior to 26.15.0. Upgrade your dependency to 26.15.0 or later.
What is the CVSS score of CVE-2026-54672?
CVE-2026-54672 has a CVSS v3.1 base score of 7.8 (HIGH) with vector string CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H.
What CWE is associated with CVE-2026-54672?
CVE-2026-54672 is classified under CWE-427: Uncontrolled Search Path Element (The product uses a fixed or controlled search path to find resources, but one or more locations in that path can be under the control of unintended actors.).
How can I check npm dependencies for CVE-2026-54672?
Run the dependency tree command: 'npm ls app-builder-lib'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-7g7r-gx96-252g",
  "modified" : "2026-07-24T14:00:59Z",
  "published" : "2026-07-24T14:00:59Z",
  "aliases" : [ "CVE-2026-54672" ],
  "summary" : "electron-updater: Uncontrolled search path elements within `AppImage` built by `app-builder-lib`",
  "details" : "### Summary\n\n`AppImage` targets built by `app-builder-lib` could use an empty path component when setting the `LD_LIBRARY_PATH` environment variable at runtime. This causes the current working directory to be added to the dynamic linker search path, which may allow an attacker to execute arbitrary code by placing a malicious shared library in the directory from which the `AppImage` is launched.\n\nThis vulnerability is the same class as [`CVE-2024-41817`](https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-8rxc-922v-phg8).\n\n### Details\n\nThe vulnerability existed in two independent code paths within `app-builder-lib` (toolset `1.0.0`) and through upstream dependency `app-builder-bin` (toolset `0.0.0`).\n\n#### Path 1 — Modern static runtime (`AppRun` generated by TypeScript)\n\nThe `AppRun` script generated by `app-builder-lib` contained this line:\n\n```bash\nexport LD_LIBRARY_PATH=\"${APPDIR}/usr/lib:${LD_LIBRARY_PATH}\"\n```\n\nWhen `LD_LIBRARY_PATH` is not set in the environment at launch time, this evaluates to:\n\n```\n/path/to/app.AppDir/usr/lib:\n```\n\nThe trailing `:` is treated by the dynamic linker as an empty path component, which resolves to the current working directory. If an attacker can place a malicious shared library (e.g., `libfoo.so`) in the directory from which the `AppImage` is executed, that library will be loaded in place of the legitimate one, resulting in arbitrary code execution.\n\nThe same issue affected `PATH`, `XDG_DATA_DIRS`, and `GSETTINGS_SCHEMA_DIR` in the same script.\n\n```bash\nexport LD_LIBRARY_PATH=\"${APPDIR}/usr/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}\"\n```\n\n#### Path 2 — Legacy FUSE2 toolset (`app-builder-bin`)\n\n`AppImage` targets built using the legacy FUSE2 toolset (`toolsets.appimage = \"0.0.0\"`) delegated `AppRun` script generation to the `app-builder-bin` Go binary, which contained the same vulnerable template:\n\nhttps://github.com/develar/app-builder/blob/7004925f95d8f034fc88d7e782c9aa7583debb8e/pkg/package-format/appimage/templates/AppRun.sh#L27\n\n### Impact\n\nAn attacker with the ability to write files to the directory from which a vulnerable `AppImage` is executed can cause arbitrary shared libraries to be loaded into the application process, resulting in arbitrary code execution with the privileges of the user running the `AppImage`.\n\n### Affected Versions\n\nThis was fully resolved in **`app-builder-lib@26.15.0`** (commit [`01b8ba979`](https://github.com/electron-userland/electron-builder/commit/01b8ba979), PR [#9829](https://github.com/electron-userland/electron-builder/pull/9829)) when `app-builder-bin` was removed from the dependency tree entirely and all AppImage construction was migrated to the TypeScript implementation.\n\n### Workarounds\n\nSet `LD_LIBRARY_PATH` to a non-empty value before launching the `AppImage`, so that the concatenation does not produce an empty path component. Alternatively, avoid running `AppImage` files from world-writable directories such as `/tmp`.",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "npm",
      "name" : "app-builder-lib"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "26.15.0"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/electron-userland/electron-builder/security/advisories/GHSA-7g7r-gx96-252g"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-54672"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/electron-userland/electron-builder/commit/01b8ba979d1db44543e18d07b4ad94953deb10ea"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/electron-userland/electron-builder"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/electron-userland/electron-builder/releases/tag/electron-builder@26.15.0"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-427" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-07-24T14:00:59Z",
    "nvd_published_at" : "2026-06-30T23:17:27Z"
  }
}