Skip to main content

HortusFox CVE-2026-108100

| EUVDEUVD-2026-95791 HIGH
SQL Injection (CWE-89)
2026-10-09 VulnCheck GHSA-cwp7-9356-rvxx
7.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain valid API token
  2. Delivery
    Craft include_info subquery payload
  3. Exploit
    POST to /api/locations/list endpoint
  4. Execution
    Concatenated subquery executes in SELECT
  5. Persist
    Read users table and password hashes
  6. Impact
    Crack 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

hortusfox-web 0 <6.2

Affected Packages

euvd hortusfox_web fix: 6.2

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

Vendor (VulnCheck) PRIMARY 7.1 HIGH
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
vuln.today AI 6.5 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Low
niche self-hosted open-source plant-collection manager, small community footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy