Every CVE Search/ Get API key

CVE-2025-27591

Below has Incorrect Permission Assignment for Critical Resource

6.8 MediumPublic exploitFix available

A privilege escalation vulnerability existed in the Below service prior to v0.9.0 due to the creation of a world-writable directory at /var/log/below. This could have allowed local unprivileged users to escalate to root privileges through symlink attacks that manipulate files such as /etc/shadow.

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
High
Availability
None

Exploit likelihood

0.37%Up 0.3 points since Mar 12, 2025
90%50%10%1%

What each source reports

CVE List Score used 6.8

A privilege escalation vulnerability existed in the Below service prior to v0.9.0 due to the creation of a world-writable directory at /var/log/below. This could have allowed local unprivileged users to escalate to root privileges through symlink attacks that manipulate files such as /etc/shadow.

Record
CVE-2025-27591
CVSS 3.1
6.8 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
Updated
2026-11-02
EUVDEUVD-2025-7209 6.8

A privilege escalation vulnerability existed in the Below service prior to v0.9.0 due to the creation of a world-writable directory at /var/log/below. This could have allowed local unprivileged users to escalate to root privileges through symlink attacks that manipulate files such as /etc/shadow.

Record
EUVD-2025-7209
CVSS 3.1
6.8 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-9mc5-7qhg-fp3w 7.3

Below has Incorrect Permission Assignment for Critical Resource

Impact

A privilege escalation vulnerability existed in the Below service prior to v0.9.0 due to the creation of a world-writable directory at /var/log/below. This could have allowed local unprivileged users to escalate to root privileges through symlink attacks that manipulate files such as /etc/shadow.

Patches

https://github.com/facebookincubator/below/commit/10e73a21d67baa2cd613ee92ce999cda145e1a83

This is included in version 0.9.0

Workarounds

Change the permission on /var/log/below manually

References

https://www.facebook.com/security/advisories/cve-2025-27591 https://www.cve.org/CVERecord?id=CVE-2025-27591

Record
GHSA-9mc5-7qhg-fp3w
CVSS 4.0
7.3 HighCVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-732
Updated
2026-11-02
NVD 6.8

A privilege escalation vulnerability existed in the Below service prior to v0.9.0 due to the creation of a world-writable directory at /var/log/below. This could have allowed local unprivileged users to escalate to root privileges through symlink attacks that manipulate files such as /etc/shadow.

Record
CVE-2025-27591
CVSS 3.1
6.8 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
Weakness
CWE-732
Updated
2026-11-02
OSV 6.8

A privilege escalation vulnerability existed in the Below service prior to v0.9.0 due to the creation of a world-writable directory at /var/log/below. This could have allowed local unprivileged users to escalate to root privileges through symlink attacks that manipulate files such as /etc/shadow.

Record
CVE-2025-27591
CVSS 3.1
6.8 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
Updated
2026-11-02
OSVGHSA-9mc5-7qhg-fp3w 7.3

Below has Incorrect Permission Assignment for Critical Resource

Impact

A privilege escalation vulnerability existed in the Below service prior to v0.9.0 due to the creation of a world-writable directory at /var/log/below. This could have allowed local unprivileged users to escalate to root privileges through symlink attacks that manipulate files such as /etc/shadow.

Patches

https://github.com/facebookincubator/below/commit/10e73a21d67baa2cd613ee92ce999cda145e1a83

This is included in version 0.9.0

Workarounds

Change the permission on /var/log/below manually

References

https://www.facebook.com/security/advisories/cve-2025-27591 https://www.cve.org/CVERecord?id=CVE-2025-27591

Record
GHSA-9mc5-7qhg-fp3w
CVSS 4.0
7.3 HighCVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-732
Updated
2026-11-02
OSVRUSTSEC-2025-0149 7.3

World Writable Directory in /var/log/below Allows Local Privilege Escalation

Below is a tool for recording and displaying system data like hardware utilization and cgroup information on Linux.

Symlink Attack in /var/log/below/error_root.log

Below's systemd service runs with full root privileges. It attempts to create a world-writable directory in /var/log/below. Even if the directory already exists, the Rust code ensures 1 that it receives mode 0777 permissions:

    if perm.mode() & 0o777 != 0o777 {
        perm.set_mode(0o777);
        match dir.set_permissions(perm) {
            Ok(()) => {}
            Err(e) => {
                bail!(
                    "Failed to set permissions on {}: {}",
                    path.to_string_lossy(),
                    e
                );
            }
        }
    }

This logic leads to different outcomes depending on the packaging on Linux distributions:

  • in openSUSE Tumbleweed the directory was packaged with 01755 permissions (below.spec 2 line 73), thus causing the set_permissions() call to run, resulting in a directory with mode 0777 during runtime.
  • in Gentoo Linux the directory is created with mode 01755 resulting in the same outcome as on openSUSE Tumbleweed (below.ebuild 3). Where the 01755 mode is exactly coming from is not fully clear, maybe the cargo build process assigns these permissions during installation.
  • in Fedora Linux the directory is packaged with 01777 permissions, thus the set_permissions() code will not run, because the if condition masks out the sticky bit. The directory stays at mode 01777 (rust-below.spec 4).
  • the Arch Linux AUR package 5 (maybe wrongly) does not pre-create the log directory. Thus the set_permissions() code will run and create the directory with mode 0777.

Below creates a log file in /var/log/below/error_root.log and assigns mode 0666 to it. This (somewhat confusingly) happens via a log_dir variable 6, which has been changed to point to the error_root.log file. The 0666 permission assignment to the logfile happens in logging::setup() 7, also accompanied by a somewhat strange comment in the code.

A local unprivileged attacker can stage a symlink attack in this location and cause an arbitrary file in the system to obtain 0666 permissions, likely leading to a full local root exploit, if done right, e.g. by pointing the symlink to /etc/shadow. Even if the file already exists it can be removed and replaced by a symlink, because of the world-writable directory permissions. The attack is thus not limited to scenarios in which the file has not yet been created by Below.

Further Issues

Even on Fedora Linux, where /var/log/below has "safe" 01777 permissions, there is a time window during which problems can arise. As long as below.service has not been started, another local user can pre-create /var/log/below/error_root.log and e.g. place a FIFO special file there. This will pose a local DoS against the below service, since it will fail to open the path and thus fail to start.

If /var/log/below were to be deleted for any reason, then Below would still recreate it using the bad 0777 mode permissions, which can also happen on distributions that initially package /var/log/below using permissions that do not trigger the set_permissions() call in Below's code.

Record
RUSTSEC-2025-0149
CVSS 4.0
7.3 HighCVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Updated
2026-11-02
OSVopenSUSE-SU-2026:10194-1 No score

cargo-audit-advisory-db-20260213-1.1 on GA media

These are all security issues fixed in the cargo-audit-advisory-db-20260213-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:10194-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
below
crates.io
before 0.9.0
0.9.0
below
crates.io
0.0.0-0 up to 0.9.0
0.9.0
cargo-audit-advisory-db
openSUSE:Tumbleweed
before 20260213-1.1
20260213-1.1

Public exploits

Links only. Every CVE stores no exploit code.

Public exploits
SourceLinkDate
PoC in GitHub00xCanelo/CVE-2025-275912025-07-19
PoC in GitHub0x00Jeff/CVE-2025-275912025-11-19
PoC in GitHub0xDTC/Below-Logger-Symlink-Attack_CVE-2025-275912025-11-13
PoC in GitHubBridgerAlderson/CVE-2025-27591-PoC2025-07-13
PoC in GitHubCythonic1/CVE-2025-275912025-07-31
PoC in GitHubMoTechStore/CVE-2025-27591-PoC2026-07-15
PoC in GitHubStp1t/CVE-2025-275912026-01-02
PoC in GitHubThekin-ctrl/CVE-2025-27591-Below2025-07-20
PoC in GitHubVisaiCyber/CVE-2025-27591-below-2025-09-03
PoC in GitHubalialucas7/CVE-2025-27591_PoC2025-07-16
Show 9 moreShow less
Public exploits
SourceLinkDate
PoC in GitHubdanil-koltsov/below-log-race-poc2025-09-01
PoC in GitHubdollarboysushil/Linux-Privilege-Escalation-CVE-2025-275912025-07-15
PoC in GitHubincommatose/CVE-2025-27591-PoC2025-07-18
PoC in GitHubkrn966/CVE-2025-275912025-10-18
PoC in GitHubobamalaolu/CVE-2025-275912025-07-12
PoC in GitHubrippsec/CVE-2025-27591-Meta-below-LPE2026-04-16
PoC in GitHubrvzsec/CVE-2025-275912025-07-12
PoC in GitHubsefafl77/CVE-2025-27591-PoC2025-08-10
PoC in GitHubumutcamliyurt/CVE-2025-275912025-08-16

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2025-27591 is a medium vulnerability (CVSS 6.8) in Facebook Below, published March 11, 2025. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 0.37%, the 31st percentile. Fixed in below 0.9.0.

References

Show 6 moreShow less
This page doesn't list everything

Left out here: the rest of 1 source description. The JSON record has them.

MoveEnter Open