HestiaCP Fixes Put Every Tenant-To-Root Helper In Scope
HestiaCP 1.10.6 closes tenant-to-root paths in domain, backup, restore and SSH helpers. Patch, restrict the panel and investigate host state.
HestiaCP published a group of security advisories on November 8 for flaws addressed in its 1.10.6 service release. Several let an ordinary authenticated hosting user turn control-panel features into root-level command execution. The affected paths include proxy-extension and custom-document-root processing, FTP path changes and SSH-key deletion. Separate advisories describe a scheduled backup argument-injection path and restore operations that could make privileged file changes outside the tenant's home directory.
Operators should upgrade to 1.10.6, verify the installed package rather than relying on the panel banner, restrict panel and API access, preserve Hestia, web, authentication, backup and system evidence, and review every tenant with access during the exposure period. The public advisories describe laboratory reproduction, not confirmed exploitation. Their version metadata is also inconsistent: several affected-version fields say versions below 1.10.5, while their own details explicitly reproduce the flaw on 1.10.5. The fixed target is unambiguous, so 1.10.5 should not be treated as safe.
Key Takeaways
- check_circle HestiaCP 1.10.6 is the fixed release for the newly published tenant-to-root and privileged-file-operation advisories.
- check_circle Several flaws begin with ordinary panel capabilities such as editing a domain, changing an FTP path or deleting a user's own SSH key.
- check_circle Shell quoting protected transport through one command layer but did not make attacker-controlled values safe inside later sed expressions or archive arguments.
- check_circle Backup and restore jobs widen the response window because malicious input can remain dormant until a scheduled or queued privileged task runs.
- check_circle The advisory metadata and reproduction text disagree about whether 1.10.5 is affected; operators should use the explicit 1.10.6 fixed boundary.
- check_circle Patching closes known entry paths but does not prove that a previously reachable multi-tenant server retained trustworthy root state.
The Advisories Describe One Repeated Privilege-Boundary Failure
HestiaCP manages web domains, mail, databases, backups, DNS and operating-system accounts from one panel. That convenience requires privileged helpers. A tenant can ask the panel to change a domain setting, and a root-run command performs the system work. The November 8 advisories show why that boundary must be checked at every handoff: several helpers accepted tenant-controlled data, transformed it and later used it in a more powerful interpreter without preserving the original safety assumptions.
The 1.10.6 release notes and advisories collectively describe hardened restore scripts, special-character checks for custom document roots, corrected FTP-path handling, SSH-key deletion fixes, proxy-extension validation and safer backup argument handling. The release also contains unrelated fixes and dependency updates. Operators should not reduce the response to one command-injection field because the security work spans domain configuration, account maintenance, scheduled archives and restores.
The advisories do not assign CVE identifiers and do not claim that the disclosed paths were exploited against production servers. They do provide concrete affected code, preconditions and laboratory results. That supports urgent patching without supporting claims about a known campaign. Exposure depends on the enabled feature and tenant capability, but the consequence of several paths is root command execution on a shared host.
Domain And SSH Operations Crossed Into Root Interpreters
Three critical advisories follow a similar shape. In the proxy-extension path, an ordinary authenticated user could place special characters into a domain's proxy extensions. The value eventually entered a sed replacement in a command that ran with root authority. The custom-document-root issue used a tenant-created directory name that passed a filesystem check but later entered another privileged template replacement. The FTP-path flaw likewise reached a sed expression used while changing an FTP account's path.
The SSH-key deletion issue reached the same class of sink through a different control. A user-controlled key identifier was transported through the web layer and inserted into a sed address expression by a sudo-enabled helper. The advisory says validation referenced the wrong variable, so the intended newline check did not constrain the value that reached the root-run expression. The user's authority to manage their own key was therefore converted into authority over the host.
These are not claims that every punctuation mark is dangerous or that quoting is useless. Quoting can keep a value inside one shell argument. It cannot guarantee that the receiving script will treat that argument only as data. If the script embeds the value into sed syntax, a regular expression, a template program or another command line, that second interpreter needs its own strict grammar or an interface that avoids string interpretation entirely.
Scheduled Backup And Restore Work Extend The Exposure Window
The backup advisory describes tenant-controlled names being passed as positional arguments to an archiving tool during a root-run account backup. Some archive options can execute another program. A tenant or a compromised site process able to create specially formed names could therefore influence a later backup job. The trigger could be the normal schedule or a pre-action backup rather than an administrator clicking a suspicious object at the moment of compromise.
The restore advisory covers archive and restic paths that performed root file operations on locations inside a user's home without proving that the target was still a real directory owned by that account. In tests on HestiaCP 1.10.5, a standard user could redirect the privileged operation through filesystem links and cause deletion outside the account. The 1.10.6 release says restore scripts now refuse symlinked user directories, stage restores in a root-owned location, quote variables and use ownership operations that do not follow links.
This changes investigation order. Review the input state and the jobs that consumed it. A suspicious file name may predate the root execution that a scheduled backup caused. A crafted path may persist until a restore. Preserve backup schedules, queue history, archive manifests, restic activity, panel requests, filesystem metadata and service logs with their timestamps. Looking only for an interactive panel request near a system change can miss the delayed execution path.
The Version Metadata Conflict Should Not Delay The Fix
Several GitHub advisory metadata blocks list affected versions as below 1.10.5 and patched versions as 1.10.6. That wording leaves an apparent gap. The detailed text removes the practical ambiguity: the restore and SSH-key advisories explicitly say they were tested on 1.10.5, and the 1.10.6 release notes name the corresponding fixes. One custom-document-root page also appears to contain a patched-version typo that says 1.0.6 in its body.
Treat 1.10.6 as the minimum fixed release for this advisory set and do not use a scanner's interpretation of the affected-version operator as evidence that 1.10.5 is safe. Confirm the package version from the operating system, check the installed scripts or package hashes where your deployment process supports that, and verify that every Hestia node was updated. A load-balanced panel or fleet image can leave an old helper reachable after the primary node is patched.
Read the release notes before rollout because 1.10.6 includes many service and package changes. Test domain rebuilds, custom document roots, FTP accounts, backups, restores, mail, DNS and web templates on a representative node. Operational testing is not a reason to leave the panel exposed. Restrict it to known administrative networks and reduce tenant access while the maintenance window is prepared.
Contain The Panel Then Prove The Host State
Start by identifying every HestiaCP server, installed version, panel and API address, tenant, administrator, delegated feature, backup schedule and restore repository. Limit network access to the panel and API, end unneeded sessions, disable accounts that should not be active and pause tenant-initiated backup or restore operations if that can be done without destroying evidence. Take a forensic snapshot or equivalent preservation step before broad cleanup when compromise indicators exist.
Search panel and reverse-proxy logs for unusual domain edits, proxy-extension changes, custom document-root changes, FTP-path updates, SSH-key deletion requests, access-key creation and restore requests. Correlate them with sudo, authentication, process, package, cron, systemd, web-server and filesystem events. Review new or changed root-owned files, services, scheduled tasks, authorized keys, sudoers entries, listening sockets and outbound connections. Record which events are expected rather than deleting unexplained artifacts first.
If evidence shows an untrusted tenant reached root, an in-place patch is containment, not recovery. Isolate the host, preserve the affected disk and logs, rotate credentials and secrets available to root, rebuild from trusted media, restore verified tenant data and compare configuration against a known-good baseline. Shared hosting roots can read other tenants, web and mail configuration, databases and service credentials, so the downstream scope follows what the host could access.
Future Helpers Need Typed Inputs And Narrow Privilege
The durable lesson is not to add a longer blacklist of metacharacters. Each helper should accept a typed, minimal input, resolve paths under an owned directory without following unexpected links, separate options from data at the final command boundary and avoid constructing interpreter programs from tenant values. Privileged file operations should run with the least authority that can complete them, and staging directories for root jobs should not be writable by tenants.
Panel permissions also need to match operating-system consequences. A control that looks like editing a website field can rebuild a root-owned server configuration. A key-delete button can call a sudo-enabled script. A backup checkbox can influence a future root process. Threat models and tests should trace the full path from browser request through PHP, shell helpers, sudo rules and each downstream utility rather than stopping at the first layer that quotes a value.
HestiaCP's published fixes provide a clear patch target, but the advisories leave exploitation status, the complete vulnerable-version history and some metadata corrections unresolved. Operators should track follow-up changes and possible CVE assignments while acting on the current evidence. The immediate standard is simple: reach 1.10.6, reduce panel reachability, investigate privileged state and rebuild any server whose root boundary cannot be trusted.
Checklist
- Inventory every HestiaCP node, installed package version, panel/API endpoint, tenant and privileged helper in use.
- Upgrade all nodes to 1.10.6 and verify the package and helper versions from the host, not only the panel UI.
- Restrict panel and API access, end unnecessary sessions and limit backup or restore operations during triage.
- Preserve panel, proxy, authentication, sudo, process, backup, restore and filesystem evidence before cleanup.
- Review domain, FTP, SSH-key, access-key, backup and restore activity for every tenant present during exposure.
- Rebuild from trusted media and rotate root-reachable secrets if any tenant-to-root execution is confirmed.
- Track advisory metadata corrections, CVE assignments and later HestiaCP security updates.
Sources
- HestiaCP 1.10.6 release: security fixes and service-release changes open_in_new
- GHSA-q3m6-6pq7-2vgr: proxy-extension command execution as root open_in_new
- GHSA-whvg-4fmh-9rxg: custom document root reaches privileged template execution open_in_new
- GHSA-jhgf-cvhh-vr4x: FTP-path command injection and root escalation open_in_new
- GHSA-54r9-vp89-25w2: SSH-key deletion command injection open_in_new
- GHSA-274c-fvrr-f3qc: scheduled backup argument injection open_in_new
- GHSA-5jrh-4c42-g53q: privileged restore operations on tenant-controlled paths open_in_new
Continue Reading
OpenSSH Password Bypass Makes Key-Only Accounts Reachable
CVE-2026-123158 is exploited on musl Linux systems without PAM. Patch and restart sshd, disable passwords and investigate unexpected access.
FreeSWITCH SIP MESSAGE Flaw Turns Chat Into Server Control
CVE-2026-116779 lets an accepted SIP MESSAGE reach FreeSWITCH command APIs. Upgrade to 1.11.3, close chat paths and investigate server state.
OpenAM 16.1.4 Makes Session And Federation Trust Explicit
OpenAM 16.1.4 fixes live-session disclosure and unsigned SAML paths to account takeover. Upgrade, invalidate sessions and test federation policy.