Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid API token
-
DeliveryCraft include_info subquery payload
-
ExploitPOST to /api/locations/list endpoint
-
ExecutionConcatenated subquery executes in SELECT
-
PersistRead users table and password hashes
-
ImpactCrack hashes for account takeover
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the attacker to hold a valid HortusFox API token (PR:L) and requires the REST API to be enabled with the /api/locations/list endpoint reachable; the attacker supplies a crafted include_info parameter whose value is concatenated into the SQL column list by PlantsModel::getSpecificInfo(). The limiting factor is the API-token prerequisite - this is not an unauthenticated flaw, so exposure is confined to deployments that issue API tokens and to actors who have obtained one. Affected versions are all releases before 6.2; upgrading to 6.2 (which adds column-name validation) removes the condition. |
| Impact | This is a moderate-priority, authenticated SQL injection (CWE-89) in HortusFox, grounded in a vendor-confirmed source-code fix. The provided CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N, score 7.1) is internally consistent with the description: remote and low-complexity, but gated behind PR:L - the attacker must already hold a valid API token. Impact is confidentiality-only (VC:H, with VI/VA:N), matching a read-oriented injection that can dump arbitrary tables including user password hashes; there is no claimed integrity or availability impact. No EPSS score, KEV listing, or public POC was supplied, so by the precision rule the status is 'no public exploit identified at time of analysis' - this is not evidence of widespread exploitation. The key tempering signals are the authentication requirement (API token) and the product's small deployment footprint, which together lower real-world risk well below what a network-vector/low-complexity flaw alone might suggest. No conflicting signals were detected; the main limitation is the absence of EPSS/KEV data to gauge exploitation likelihood. |
| Exploit ScenarioDerived | An attacker who already possesses a valid HortusFox API token sends a request to /api/locations/list with a crafted include_info value containing a SQL subquery. Because PlantsModel::getSpecificInfo() concatenates include_info directly into the SELECT column list, the subquery executes and returns data from arbitrary tables, letting the attacker exfiltrate the users table and crack the recovered password hashes offline. No public exploit code was identified at the time of analysis, though the vendor patch commit publicly reveals the vulnerable code path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Authenticated SQL injection in HortusFox (hortusfox-web) before 6.2 lets any holder of a valid API token read arbitrary database tables, including user password hashes, by supplying a crafted include_info value to the /api/locations/list endpoint. The flaw is in PlantsModel::getSpecificInfo(), which concatenates the caller-supplied include_info string directly into the SQL column list instead of validating column names. Exploitation is limited by the API-token prerequisite (CVSS PR:L, assessed CVSS:3.1 7.1, high confidentiality impact with no integrity or availability impact), the vendor has published a fix commit adding column-name validation, and no public exploit code or CISA KEV active-exploitation record was identified at time of analysis.
RemediationAI
Upgrade HortusFox to version 6.2 or later; the vendor-released fix is commit c0c0f4057dd8376b63c34028de36c8c6b6288fee, which adds PlantsModel::validateAttrList() to whitelist each comma-separated column name passed through include_info (https://github.com/danielbrendel/hortusfox-web/security/advisories/GHSA-4w8p-x2jj-42w7); if upgrading immediately is not possible, backport that validation or the referenced patch. Where patching is delayed, treat every API token as a potential SQL-injection primitive: disable the REST API or block external access to /api/locations/list at the reverse proxy or WAF (trade-off: any legitimate integrations relying on the API break), and revoke and reissue API tokens so that previously compromised tokens cannot be reused (trade-off: automation clients must be reconfigured). Because the injection permits reading arbitrary tables, assume user password hashes were exposed on any instance where the API was enabled with untrusted token holders, and force password resets for all accounts; note that HortusFox does not appear to support session invalidation independently of credential rotation. Finally, review web-server and application logs for anomalous include_info values containing commas, parentheses, or SELECT keywords, and monitor for follow-up authentication attempts against harvested hashes.
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 vulnerability is a classic SQL injection (CWE-89) arising from unsafe string concatenation rather than parameterization. HortusFox is a PHP web application built on the Asatru database layer; in v6.1, app/controller/api.php (around lines 642-650) passes the client-controlled include_info parameter from the /api/locations/list REST endpoint to PlantsModel::getSpecificInfo(), and app/models/PlantsModel.php (around lines 1026-1033) embeds that value in the SELECT column list. Because column identifiers cannot be bound as parameters, the code was expected to whitelist names via PlantsModel::validateAttribute(), but the include path allowed comma-separated lists that were never validated, so subqueries and other SQL constructs could be injected. The fix commit c0c0f4057dd8376b63c34028de36c8c6b6288fee introduces a new validateAttrList() helper that splits the include value on commas and runs each element through validateAttribute(), and adds missing columns ('id', 'created_at') to the attribute list in the same file. The affected package is tracked as CPE cpe:2.3:a:danielbrendel:hortusfox-web:*:*:*:*:*:*:*:* (all releases before 6.2), and VulnCheck reported the issue, with GitHub security advisory GHSA-4w8p-x2jj-42w7 documenting it.
Know when Hortusfox Web 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Remote API endpoint (AV:N), no special timing (AC:L), valid API token required (PR:L), no UI; injection reads arbitrary tables giving C:H, with no write/availability impact so I:N/A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
HortusFox (hortusfox-web) before 6.2 contains an SQL injection vulnerability that allows API token holders to inject SQL by supplying crafted include_info values to the /api/locations/list endpoint. Attackers can place subqueries in include_info, which PlantsModel::getSpecificInfo() concatenates into the column list, to read any database table including user password hashes.
Technical POC Analysis
CWE-89 (Improper Neutralization of Special Elements used in an SQL Command).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
HortusFox deployments running versions earlier than 6.2 allow anyone already holding a valid API token to read arbitrary database tables, including user password hashes, through a single request to the locations list endpoint. The exposure is therefore concentrated among staff, integration accounts, and third parties issued API credentials-any one of which could hand an attacker reusable credential material for systems where passwords are shared or recycled. Leadership should treat this as a credential-compromise event rather than a routine bug: a vendor fix is available and inexpensive to deploy, but every unpatched instance leaves the full user directory readable.
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
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
More in Hortusfox Web
View allHortusFox-Web releases prior to 6.1 expose the Import/Export data-portability feature to arbitrary file write, letting a
HortusFox versions before 6.2 expose an authenticated remote code execution path through the theme import feature (Theme
Stored cross-site scripting and potential remote code execution in HortusFox (hortusfox-web) through version 6.3 allow a
EUVD-2026-95791
GHSA-cwp7-9356-rvxx
NVD
CVE.org
EPSS
Exploit-DB