VYPR
High severityNVD Advisory· Published Jun 3, 2026· Updated Jun 3, 2026

CVE-2025-41259

CVE-2025-41259

Description

SWUpdate versions prior to 2026.05 are vulnerable to a TOCTOU race condition allowing privilege escalation or installation of untrusted content.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

SWUpdate versions prior to 2026.05 are vulnerable to a TOCTOU race condition allowing privilege escalation or installation of untrusted content.

Vulnerability

SWUpdate versions prior to 2026.05 are affected by a time-of-check time-of-use (TOCTOU) race condition. This vulnerability allows local, unprivileged attackers to escalate their privileges to root or install untrusted content by exploiting the signed update process [1].

Exploitation

A local attacker with unprivileged shell access can exploit this vulnerability by manipulating the temporary directory used by SWUpdate during the update installation process. The attacker needs to trigger a race condition between the time SWUpdate checks a file's integrity and the time it uses that file, allowing them to substitute malicious content or scripts before the update is finalized [1].

Impact

Successful exploitation allows a local attacker to escalate privileges to root, run untrusted code in the context of the swupdate user, or tamper with update files during the installation process. This could lead to a full compromise of the affected system [1].

Mitigation

SWUpdate version 2026.05 and later contain a fix for this vulnerability. Users are advised to update to version 2026.05 or newer. The commit addressing this issue includes a check to verify that a path is a directory before attempting to remove it [3].

AI Insight generated on Jun 3, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

1

Patches

1
f4bd64260e23

Verify that a path is a directory before cleanup

https://github.com/sbabic/swupdateStefano BabicDec 18, 2025via body-scan
1 file changed · +13 0
  • core/util.c+13 0 modified
    @@ -7,6 +7,7 @@
     
     #include <stdio.h>
     #include <stdlib.h>
    +#include <stdbool.h>
     #include <stdarg.h>
     #include <unistd.h>
     #include <string.h>
    @@ -176,13 +177,25 @@ static int _remove_directory_cb(const char *fpath, const struct stat *sb,
     int swupdate_remove_directory(const char* path)
     {
     	char* dpath;
    +	struct stat path_stat;
     	int ret;
     	if (asprintf(&dpath, "%s%s", get_tmpdir(), path) ==
     		ENOMEM_ASPRINTF) {
     		ERROR("OOM: Directory %s not removed", path);
     		return -ENOMEM;
     	}
     
    +	if (stat(dpath, &path_stat)) {
    +		/* not exist, return ok */
    +		if (errno == ENOENT)
    +			return 0;
    +		ERROR("stat for path %s failed: %s", path, strerror(errno));
    +		return -errno;
    +	}
    +	if (!S_ISDIR(path_stat.st_mode)) {
    +		ERROR("Tried to remove %s dir, but it is not a dir", path);
    +		return -ENODEV;
    +	}
     	ret = _is_mount_point(dpath, get_tmpdir());
     	if (ret < 0)
     		goto out;
    

Vulnerability mechanics

Root cause

"The swupdate_remove_directory function did not verify if the provided path was a directory before attempting to remove it, leading to a TOCTOU race condition."

Attack vector

Local unprivileged attackers can exploit this vulnerability by creating a file with the same name as a directory that swupdate intends to remove. This race condition allows them to escalate privileges to root or install untrusted content using a signed update, as the check for a directory might pass, but the subsequent removal operation could target a file instead [ref_id=1].

Affected code

The vulnerability resides in the `swupdate_remove_directory` function within the `core/util.c` file. The patch modifies this function to include a `stat()` call and a check `!S_ISDIR(path_stat.st_mode)` to ensure the target path is a directory before proceeding with its removal [patch_id=4655743].

What the fix does

The patch introduces a check using stat() to verify that the path provided to swupdate_remove_directory is indeed a directory before proceeding with any removal operations [patch_id=4655743]. This prevents the function from attempting to remove files that might be maliciously placed, thus closing the TOCTOU race condition and mitigating the risk of privilege escalation or unauthorized content installation [ref_id=1].

Preconditions

  • authAttacker must have local unprivileged access to the system.

Generated on Jun 3, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

2

News mentions

0

No linked articles in our index yet.