Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged panel user with web domain
-
DeliveryInject single quote in custom document-root to forge PATH field in web.conf
-
ExploitPlant malicious 'column' executable in injected search path
-
ExecutionInvoke panel Search feature triggering root v-search-user-object
-
ImpactExecute arbitrary code as root
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Argument sanitization
|
| Exploitation Conditions | Requires: (1) a valid authenticated Hestia panel account at only low privilege (PR:L), (2) the user owning at least one web domain so they can write a custom document-root value, (3) injecting a single quote into that document-root value - unescaped by update_object_value() in func/main.sh - to append an attacker-controlled PATH field to the user's web.conf, and (4) invoking the panel's standard Search feature, which runs the root-privileged v-search-user-object script that loads the forged field via parse_object_kv_list_non_eval() (which permits reserved shell-variable names like PATH) and then calls 'column' without an absolute path. The attacker must also stage a malicious 'column' executable within the injected search path. Limiting factors that reduce real-world exposure: exploitation is confined to affected versions 1.9.7-1.10.4; it is unavailable to fully anonymous attackers (a provisioned account with web-domain capability is mandatory), making multi-tenant/shared-hosting and malicious-insider scenarios the realistic threat model; no end-user interaction by an admin is needed since the low-priv attacker triggers Search themselves. |
| Impact | This is a genuine high-priority vulnerability, not a CVSS-inflated paper risk. The input CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H, 9.9) is internally consistent with the description: a low-privileged but authenticated panel user (PR:L) reaches a root-privileged script over the network, with a scope change (S:C) from the panel user context to full host root - a textbook privilege-escalation-to-RCE. The attack complexity is genuinely low (AC:L): the only prerequisite is owning a web domain and supplying a single quote in a document-root value, with no race or special timing. No EPSS score, CISA KEV entry, or explicit POC flag was provided in the input, so exploitation-probability and in-the-wild signals are ABSENT rather than low - this should be read as 'unmeasured,' not 'safe.' The third-party reference (ravindulakmina.pages.dev) and the public vendor security advisory (GHSA-r9q4-pmcm-5qqf) with a full commit diff mean the mechanism is openly documented and readily reproducible by a skilled analyst, which materially raises practical exploitability even though no packaged exploit is confirmed. A notable aggravating factor: this is a RESIDUAL flaw - the description states v1.9.7's parse_object_kv_list_non_eval() reintroduced the sink that CVE-2026-84984 had fixed, so environments that patched the earlier CVE may wrongly assume they are safe. The main mitigating factor is PR:L: an attacker must first hold a valid panel account with a web domain, limiting exposure to multi-tenant/shared-hosting deployments and insiders rather than fully anonymous internet attackers. |
| Exploit ScenarioDerived | A customer on a shared Hestia hosting server (a legitimate low-privileged panel user with a web domain) sets a custom document-root value containing a single quote, breaking out of the quoting in web.conf to inject an attacker-controlled PATH field. They place a malicious executable named 'column' in that path, then click the panel's ordinary Search feature; the root-privileged v-search-user-object script parses the forged field, overrides PATH, and invokes 'column' without an absolute path, running the attacker's binary as root. No weaponized public exploit is confirmed in the provided data, but the vendor advisory and a third-party write-up document the full technique and the fixing commit is public. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Authenticated low-privileged users of Hestia Control Panel 1.9.7 through 1.10.4 who own at least one web domain can escalate to root by injecting a single quote into a custom document-root value, which update_object_value() fails to escape before writing it to the user's web.conf file. The forged PATH field is later loaded by the root-privileged v-search-user-object script via parse_object_kv_list_non_eval() - which allows reserved shell-variable names and replaces PATH globally - and the subsequent invocation of 'column' without an absolute path executes an attacker-supplied binary placed in the injected search path, yielding arbitrary code execution as root with a scope change (S:C) and full confidentiality, integrity and availability impact. The flaw is fixed in Hestia Control Panel 1.10.5; no public exploit code was identified at time of analysis, and the realistic threat model is multi-tenant/shared hosting or a malicious insider rather than an anonymous attacker, since a provisioned panel account with web-domain capability is mandatory.
RemediationAI
Upgrade Hestia Control Panel to version 1.10.5 or later; this is the vendor-released patch that removes the argument-injection sink and the unsafe PATH/name-resolution behavior, and the specific fix is captured in upstream commit 4d86018660f35a1d64a0ae819bc5ee700949a287 and advisory GHSA-r9q4-pmcm-5qqf (further background at https://ravindulakmina.pages.dev/advisories/cve-2026-108390-hestiacp-apostrophe-to-root). Because exploitation requires a valid low-privileged panel account that owns a web domain, interim compensating controls should target that prerequisite: temporarily withhold web-domain/plan provisioning or custom document-root editing rights from untrusted panel users (side effect: customers cannot create or relocate sites), audit existing per-user web.conf files for unexpected PATH or other reserved-variable keys and remove them (side effect: manual, non-persistent, and easily re-added by an attacker who still holds domain rights), and, if the Search feature is not essential to tenants, restrict or disable its availability to low-privileged accounts until the upgrade is applied. Administrators who cannot patch immediately can also apply the hardening logic from the upstream commit to their /bin/v-search-* scripts - anchoring path validation, quoting expansions and invoking 'column' via an absolute path - accepting that this is an unsupported, manually maintained change that will be overwritten by future package updates. No vendor-released fix short of the 1.10.5 upgrade should be relied upon, and no public exploit code was identified at time of analysis, though the disclosed details are sufficient for a competent attacker to reconstruct the chain.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause class is CWE-88 (Improper Neutralization of Argument Delimiters / argument injection) rather than classic shell-metacharacter command injection. Hestia's administrative shell library function update_object_value() in func/main.sh writes key/value pairs into per-user configuration files such as web.conf but does not escape embedded single quotes, so an attacker-controlled document-root string can terminate the intended value and append an additional key - specifically a reserved shell variable name such as PATH. The root-privileged routine v-search-user-object then consumes the file through parse_object_kv_list_non_eval(), a helper introduced in version 1.9.7 to replace the raw 'eval' sink that CVE-2026-84984 addressed; that helper blocks ordinary code evaluation but still permits reserved shell-variable names to be set and performs a global PATH replacement, so the attacker's search path is inherited by child processes. The vulnerability is completed because the script calls the external 'column' utility without an absolute path, allowing the injected PATH entry to shadow the legitimate binary and run an attacker-staged executable with root privileges. The upstream fix in commit 4d86018660f35a1d64a0ae819bc5ee700949a287 hardens the related v-search-fs-object and v-search-object scripts (anchored case-based path validation, quoted parameter expansion, removal of eval, and renamed field lists), eliminating the injection and unsafe name-resolution chain.
Know when Hestiacp gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Authenticated low-priv panel user (PR:L) exploits over the network (AV:N) with no special timing (AC:L), escalating out of the user context to root (S:C) for full host compromise (C:H/I:H/A:H).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Hestia Control Panel is a lightweight and powerful control panel for the modern web. From version 1.9.7 through 1.10.4, update_object_value() in func/main.sh does not escape single quotes when writing a custom document-root value to a user's web.conf file, allowing a low-privileged authenticated panel user with a web domain to inject an additional PATH field. When the user invokes the ordinary Search feature, the root-privileged v-search-user-object script loads the forged field through parse_object_kv_list_non_eval(), which permits reserved shell-variable names and globally replaces PATH before invoking column without an absolute path. By placing a malicious column executable in the injected search path, the user can execute arbitrary code as root. This residual vulnerability was introduced when version 1.9.7 replaced the raw eval sink addressed by CVE-2026-84984 with parse_object_kv_list_non_eval(), and it is fixed in version 1.10.5.
Technical POC Analysis
The flaw is a chained CWE-88 argument-delimiter injection plus CWE-427 uncontrolled search path.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Hestia Control Panel versions 1.9.7 through 1.10.4 contain a critical privilege-escalation flaw that allows a low-privileged user with a hosted web domain to gain root-level control of the server. This creates severe risk for shared-hosting providers and multi-tenant environments, where a single malicious tenant or insider could compromise all hosted accounts and underlying infrastructure. No public exploit identified at time of analysis, but a vendor fix is available in version 1.10.5.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
hestiacp is vulnerable to Use of Wrong Operator in String Comparison. Rated critical severity (CVSS 9.8), this vulnerabi
Improper Control of Generation of Code ('Code Injection') in GitHub repository hestiacp/hestiacp prior to 1.6.6. Rated h
OS Command Injection in GitHub repository hestiacp/hestiacp prior to 1.6.5. Rated high severity (CVSS 8.8), this vulnera
Command Injection Vulnerability in GitHub repository hestiacp/hestiacp prior to 1.5.12. Rated high severity (CVSS 8.8),
Authentication security bypass in HestiaCP 1.2.0 through 1.9.4 allows unauthenticated remote attackers to spoof their so
Privilege Chaining in GitHub repository hestiacp/hestiacp prior to 1.8.9. Rated high severity (CVSS 7.8), this vulnerabi
Incorrect Privilege Assignment in GitHub repository hestiacp/hestiacp prior to 1.6.6. Rated high severity (CVSS 7.2), th
In the Password Reset Module in VESTA Control Panel through 0.9.8-25 and Hestia Control Panel before 1.1.1, Host header
Cross-site Scripting (XSS) - Reflected in GitHub repository hestiacp/hestiacp prior to 1.8.8. Rated medium severity (CVS
Cross-site Scripting (XSS) - Reflected in GitHub repository hestiacp/hestiacp prior to 1.7.8. Rated medium severity (CVS
Reflected Cross-site Scripting (XSS) Vulnerability in GitHub repository hestiacp/hestiacp prior to 1.5.11. Rated medium
Cross-site Scripting (XSS) - Generic in GitHub repository hestiacp/hestiacp prior to 1.5.9. Rated medium severity (CVSS
EUVD-2026-101308
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB