Welcome to the Linux Foundation Forum!

SECURITY ADVISORY: Persistence Hook & Metadata Obfuscation in CrossOver (Linux)

twzzler
twzzler Posts: 15
edited April 21 in Linux Security

Failure of Post-Removal Cleanup and Intentional Metadata Locking via Non-Standard Filenaming.

  1. Executive Summary

During a system hardening audit on a customized Linux Mint environment (Kernel 6.x), it was discovered that the CrossOver (CodeWeavers) uninstaller fails to release file-system locks on several .desktop entries and shell scripts located in /usr/share/applications/ and /opt/.

These files utilize specific character strings—specifically parentheses (install) and colons :—to create a "Velcro Effect," making them resistant to standard shell deletion commands and automated cleanup scripts (e.g., apt purge).

  1. Technical Analysis of the "Breach of Trust"

The persistence mechanism operates through three distinct vectors:

Shell Globbing Exploitation: By naming files with brackets/parentheses, the installer exploits standard shell globbing. Users attempting to remove these files via terminal often encounter "No such file or directory" or "Missing matches" because the shell interprets the brackets as a pattern rather than a literal string.

Metadata Chain Locking: The "Master" installer files in /usr/share/ appear to hold a reference-count lock on secondary metadata. This prevents the kernel from unlinking orphaned files even after the core application directory (/opt/cxoffice) has been removed.

Manual Rename Requirement: Testing confirmed that the files could only be deleted after a manual rename operation was performed via a GUI or specialized inode-level intervention. This suggests the files are intentionally "hooked" into the desktop environment's MIME-cache to prevent administrative reclamation of the system menu.
  1. Impact

    System Integrity: Creates a "Ghost State" where proprietary software maintains a footprint in the System Menu and MIME-associations without the user's consent or an active binary.

    Metadata Bloat: In high-performance systems (4.80GHz+ targets), these orphaned links contribute to iowait spikes during system-wide indexing or auditing (e.g., Lynis scans).

    Audit Failure: Prevents a "Declarative" system state, as the uninstaller leaves non-functional, obfuscated code in privileged directories.

  2. Remediation (The "Genesis" Protocol)

The only verified method to break the lock is:

Manually rename the file to a standard alphanumeric string (removing all brackets and special characters). R-Click, Properties, Take the brackets out. properties menu is grayed out. 

Force-release the immutability flag if present (chattr -i).

Execute a root-level rm -rf.

Comments

  • twzzler
    twzzler Posts: 15

    ATTENTION EDIT: ACTIVE PERSISTENCE & SELF-HEALING DETECTED

    Update: [2026-04-21]

    Upon further forensic investigation, the "CrossOver(install)" metadata was found to be part of an active, self-healing persistence mechanism. This is a major breach of system sovereignty.

    Observed Adversarial Behavior:

    The Ghost Re-Spawn: Initial attempts to delete orphaned .png and metadata files via system search were successful in the GUI, but upon refreshing the directory or returning to the search, the files automatically recreated themselves.
    
    Watcher Logic: The system was running a background "Watcher" process that monitored the integrity of the CrossOver "shrimp" metadata. The moment a deletion was detected, the process would re-inject the files into the system path from a hidden cache.
    
    Root Access Denial: Standard sudo rm and chattr commands were ignored or bypassed by the file system, indicating a low-level lock (likely a FUSE mount or a persistent systemd transient unit) that prevented even the Root user from modifying the directory.
    
    The "Identity" Workaround: The only way to break the self-healing loop was to go into the file properties and rename the files. This forced an "Identity Shift" that the Watcher process was not programmed to monitor. Once the name was changed, the "link" to the persistence script was broken, and the files could finally be deleted permanently.
    

    Security Conclusion:
    This is not "leftover junk." This is a coordinated persistence hook designed to survive an uninstallation and resist manual removal by the system administrator. It exploits the mismatch between GUI metadata handles and shell-level file management to "roam" the system as a ghost.

    I strongly advise all Linux users to audit their /usr/share/applications for extensionless orphans and perform a manual "Identity Reset" (Rename) if they find these persistent hooks.

Categories

Upcoming Training