Skip to main content
Vulnerability Database/CVE-2026-55567

CVE-2026-55567: BleachBit Privilege Escalation Vulnerability

CVE-2026-55567 is a privilege escalation flaw in BleachBit that allows local unprivileged users to obtain SYSTEM privileges through junction manipulation. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-55567 Overview

BleachBit is an open-source disk cleaner and privacy tool used on Windows and Linux systems. Versions prior to 6.0.1 contain a time-of-check to time-of-use (TOCTOU) flaw in the Windows privileged cleaning routine. The elevated cleaner does not lock and validate a target's parent directory before performing deletion. A local unprivileged user can replace that directory with a Windows junction and use a native symbolic link to redirect the elevated deletion to an attacker-controlled path. Chained with Windows Installer rollback behavior, the arbitrary privileged file deletion leads to local SYSTEM privilege escalation. The issue is fixed in BleachBit 6.0.1.

Critical Impact

A local, low-privileged Windows user can escalate to SYSTEM by redirecting BleachBit's privileged cleaner to delete an attacker-chosen file.

Affected Products

  • BleachBit for Windows, all versions prior to 6.0.1
  • Deployments where BleachBit runs with elevated (administrative) privileges
  • Multi-user Windows systems with BleachBit installed

Discovery Timeline

Technical Details for CVE-2026-55567

Vulnerability Analysis

The flaw is a TOCTOU race in BleachBit's Windows privileged deletion code path, classified as [CWE-367]. The elevated cleaner resolves a target path and later performs a deletion, but does not hold an exclusive handle on the parent directory between validation and the delete syscall. During that window a local user can swap the parent directory for a Windows junction that redirects filesystem operations elsewhere. A native NTFS symbolic link inside the redirected target then causes the SYSTEM-level deletion to remove a file the attacker selects.

Root Cause

BleachBit's Windows cleanup routines call the underlying delete function without first opening and locking the parent directory. Because directory reparse points (junctions) can be created by non-privileged users, the cleaner cannot trust the resolved path when it runs elevated. Without an exclusive lock, an attacker wins the race between path resolution and deletion.

Attack Vector

Exploitation requires local access with an interactive user session on a Windows host where BleachBit runs with administrative privileges. The attacker prepares a directory the elevated cleaner will process, replaces it with a junction pointing at a sensitive location, and plants a symbolic link inside. The elevated deletion is redirected to a file chosen by the attacker. Combined with Windows Installer rollback primitives, arbitrary file deletion by SYSTEM is converted into full SYSTEM code execution.

python
# Security patch in bleachbit/FileUtilities.py - lock parent directory before deletion
def _delete_path(path, delete_func):
    """
    Delete a path with parent lock if on Windows.
    """
    if os.name == 'nt':
        return bleachbit.Windows.with_parent_lock(path, delete_func, path)
    return delete_func(path)


def _run_with_delete_lock(path, func):
    """Run a function with a lock on the parent directory of pathname.

    This prevents race conditions where the parent directory is deleted
    while the function is running.
    """
    if os.name == 'nt':
        return bleachbit.Windows.with_parent_lock(path, func)
    return func()


def close_delete_parent_lock():
    """Close the delete parent lock if on Windows."""
    if os.name == 'nt':
        bleachbit.Windows._close_delete_parent_lock()

Source: GitHub commit ee12823

Detection Methods for CVE-2026-55567

Indicators of Compromise

  • Creation of NTFS junctions or symbolic links in directories that BleachBit is configured to clean, especially by non-administrative users.
  • BleachBit privileged process (bleachbit.exe) opening or deleting files outside its expected working directories.
  • Unexpected deletion of files owned by SYSTEM or located in C:\Windows\, C:\Program Files\, or installer rollback directories.
  • New SYSTEM-owned processes spawned in the same session where BleachBit was executed elevated.

Detection Strategies

  • Monitor Sysmon Event ID 11 (FileCreate) for reparse point creation by unprivileged users in cleaner-target paths.
  • Alert on Sysmon Event ID 23 (FileDelete) where the deleting process is BleachBit and the target path is outside temp or user profile locations.
  • Correlate elevated BleachBit executions with subsequent Windows Installer rollback file operations affecting privileged paths.

Monitoring Recommendations

  • Enable object-access auditing on directories BleachBit cleans and forward events to a centralized SIEM.
  • Track installed versions of BleachBit across the fleet and flag hosts running versions earlier than 6.0.1.
  • Baseline normal cleaner file-deletion behavior and alert on deviations, particularly writes to %SYSTEMROOT% and %PROGRAMFILES%.

How to Mitigate CVE-2026-55567

Immediate Actions Required

  • Upgrade all Windows installations of BleachBit to version 6.0.1 or later.
  • Restrict who can launch BleachBit elevated; do not permit standard users to invoke the privileged cleaner.
  • Audit endpoints for pre-existing junctions in directories BleachBit targets and remove suspicious reparse points.

Patch Information

The fix is available in BleachBit v6.0.1. The patch introduces _delete_path and with_parent_lock helpers that hold an exclusive handle on the parent directory during deletion, eliminating the TOCTOU window. See Pull Request #1774 and GitHub Security Advisory GHSA-vcjw-px28-5w94 for full technical details.

Workarounds

  • Run BleachBit only under a dedicated administrator account, not from standard user sessions.
  • Remove BleachBit shortcuts and scheduled tasks that trigger the elevated cleaner from shared or multi-user hosts.
  • Configure cleaner targets to exclude directories writable by unprivileged users until patching is complete.
bash
# Verify installed BleachBit version on Windows (PowerShell)
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" |
  Where-Object { $_.DisplayName -like "BleachBit*" } |
  Select-Object DisplayName, DisplayVersion, InstallLocation

# Silent upgrade to the patched release
Start-Process -FilePath "BleachBit-6.0.1-setup.exe" -ArgumentList "/S" -Wait

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.