Software 44653 Published by

HestiaCP released version 1.9.9 today, addressing a critical privilege escalation vulnerability that allows low-privilege users to execute arbitrary commands as root via the backup exclusions feature. This marks the third consecutive security-focused release in roughly three weeks, following a defensive hardening cycle triggered by what appears to be a comprehensive codebase audit. Lead maintainer Jaap Marcus merged PR #5574 after integrating AI-assisted code review and adding an extensive BATS test suite to validate the tightened config parser. Administrators should run the v-update-hestia script immediately to close the root access window before a CVE is officially assigned.



HestiaCP Drops Critical Security Patch 1.9.9 to Close Root Privilege Escalation Flaw

HestiaCP released version 1.9.9 today, addressing a single but brutally severe vulnerability that lets any authenticated, non-admin user escalate to root and execute arbitrary commands on your server. If you run a HestiaCP-managed VPS or dedicated server, you'll want to update immediately.

This marks the third consecutive security-focused release in roughly three weeks. The 1.9.7, 1.9.8, and now 1.9.9 patches form a clear hardening arc following what looks like a comprehensive codebase audit. HestiaCP, the open-source LEMP control panel popular with self-hosted operators, hasn't shipped a major feature update in over six months. This entire stretch has been purely defensive.

Screenshot_from_2026_05_29_08_20_54

The Vulnerability: A Mundane Feature, A Root-Level Nightmare

The flaw, tracked as GHSA-xffx-jj33-p2px, lives in v-update-user-backup-exclusions. It's the binary that handles the backup exclusion lists regular users manage through the web UI. You add a large asset folder to your exclusion list so it doesn't eat your storage quota. That's the attack vector.

Crafted input could bypass validation in the internal config parser and execute shell commands as uid 0. An attacker who compromises a standard hosting account gains full administrative control over the underlying server. Not ideal.

The official changelog entry is blunt: "Fix critical privilege escalation from low-privilege non-admin user to uid=0 root remote code execution via v-update-user-backup-exclusions". The patch arrived via PR #5574, merged by lead maintainer Jaap Marcus on August 4 after approval from community contributor ScIT-Raphael.

The changes span 6 files and 14 tracked files in total. The team rewrote validation for the exclusions binary, tightened the config parser to reject reserved variable assignments and path traversal attempts, and added a 204-line BATS test suite to lock it down. Roughly 1.3x test coverage for the security changes. That's a mature signal.

Copilot in the Review Loop

GitHub Copilot played a formal role in this patch. Marcus asked the model to perform a "lite review" of the changes, and it flagged a few unsafe unlink() calls and unquoted parameters. Autofix applied corrections to two of those findings before the human lead merged the code.

Community projects typically run on manual reviews, but this one folded in AI-assisted auditing without skipping the traditional approval gate. The human maintainers retained final say. However, at the same time, relying on an AI model to catch basic injection vectors in a critical path does raise eyebrows for anyone who's seen those tools hallucinate plausible-looking but broken code. The human review by ScIT-Raphael seems to have covered those bases, though.

Upgrading is straightforward. Run v-update-hestia on your server. The dedicated upgrade script for 1.9.9 deliberately skips template rebuilds and user rebuilds to keep your services running with minimal interruption. Pragmatic choice for a critical fix.

No CVE has been assigned yet, which is a minor oddity given the critical severity. The advisory uses the GHSA identifier exclusively. The entire development cycle, from initial commit on August 3 to merge on August 4, wrapped up in under twenty-four hours. For a project the size of HestiaCP, that turnaround is unusually sharp.

Keep in mind that this is part of a three-week hardening push. The earlier patches closed command injection, session deserialization RCE, and SQL injection chains. This one targets the config parser in a feature everyday admins touch regularly. If you're running HestiaCP in production, prioritize this update over feature updates for the time being. The exposure window for a critical RCE of this nature doesn't leave much room for scheduling flexibility.

Head here to the official release and PR #5574 for the full diff. The upgrade path is documented directly in the GitHub repo if you need to script it across a fleet of servers.