Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-72559

CVE-2026-72559: HortusFox XSS Vulnerability

CVE-2026-72559 is a stored XSS vulnerability in HortusFox 5.9 that lets authenticated users inject JavaScript into plant notes. Attackers can steal session cookies or hijack admin accounts. This article covers technical details, affected versions, impact, and mitigation strategies.

Published:

CVE-2026-72559 Overview

CVE-2026-72559 is a stored cross-site scripting (XSS) vulnerability in HortusFox 5.9, an open-source plant collection management application. The flaw exists in the plant notes feature, which uses the Parsedown Markdown parser without safe mode enabled. Authenticated workspace members can inject persistent JavaScript payloads into plant notes. The payloads execute in the browser of any user who subsequently views the affected plant, including administrators. Attackers can abuse this to steal session cookies, hijack accounts, or perform arbitrary actions in the context of other users. The vulnerability is classified under CWE-79: Improper Neutralization of Input During Web Page Generation.

Critical Impact

Authenticated attackers can execute arbitrary JavaScript in the browsers of other workspace members, enabling session theft and privileged actions against administrators.

Affected Products

  • HortusFox 5.9
  • HortusFox instances rendering plant notes via Parsedown without safe mode
  • Multi-user workspaces where untrusted members can create or edit plant notes

Discovery Timeline

  • 2026-08-11 - CVE-2026-72559 published to the National Vulnerability Database (NVD)
  • 2026-08-11 - Last updated in NVD database

Technical Details for CVE-2026-72559

Vulnerability Analysis

HortusFox allows workspace members to attach notes to plant records. The application processes note content through the Parsedown Markdown library and renders the resulting HTML directly to viewers. Parsedown supports a safe mode that strips inline HTML and JavaScript, but HortusFox 5.9 does not enable it. As a result, Markdown syntax that produces raw HTML, or inline HTML supplied by the note author, is passed to the browser unescaped. Persistent payloads remain in the database and execute for every user who loads the affected plant view.

Root Cause

The root cause is missing output encoding combined with a permissive Markdown configuration. Parsedown's safe mode is disabled by default and must be explicitly enabled via setSafeMode(true). Because HortusFox does not apply this setting and does not perform secondary HTML sanitization on the rendered output, attacker-controlled content is embedded into the DOM as active markup rather than inert text.

Attack Vector

Exploitation requires an authenticated account with permission to edit plant notes within a shared workspace. The attacker submits a note containing a Markdown or HTML construct that resolves to a script-executing element, such as an event-handler attribute on an image tag or an inline <script> block. When any other workspace member views the plant, the injected script runs with that user's session context. If an administrator views the record, the attacker can perform administrative actions, exfiltrate the session cookie, or pivot to other workspace resources. See the HortusFox project repository for release details and remediation status.

Detection Methods for CVE-2026-72559

Indicators of Compromise

  • Plant notes containing raw HTML tags such as <script>, <img onerror=...>, <iframe>, or <svg onload=...> stored in the HortusFox database
  • Outbound HTTP requests from user browsers to unfamiliar domains immediately after loading a plant view
  • Unexpected session token access, account modifications, or workspace configuration changes performed by administrator accounts
  • New or modified plant notes authored by low-privileged workspace members that contain Markdown link constructs with javascript: URIs

Detection Strategies

  • Audit the plant notes table for stored content matching HTML tag or event-handler patterns using regular expressions such as <[a-z]+[^>]*on[a-z]+= or <script
  • Enable and monitor Content Security Policy (CSP) violation reports to surface inline script execution attempts
  • Correlate note edit events with subsequent anomalous session behavior from viewers of the same plant record

Monitoring Recommendations

  • Log all note create and update actions with the authoring user ID, timestamp, and raw content hash for forensic review
  • Alert on administrator sessions that generate API calls immediately after viewing user-authored plant notes
  • Track outbound requests from browsers accessing HortusFox to identify credential exfiltration channels

How to Mitigate CVE-2026-72559

Immediate Actions Required

  • Upgrade HortusFox to a release that enables Parsedown safe mode or applies output sanitization; monitor the HortusFox project repository for the fixed version
  • Restrict note-editing permissions to trusted workspace members until the patch is applied
  • Review existing plant notes for embedded HTML or JavaScript and remove suspicious content
  • Invalidate active sessions for administrators who may have viewed attacker-controlled notes

Patch Information

At the time of publication, refer to the upstream project at danielbrendel/hortusfox-web on GitHub for the current release notes and remediation guidance. Administrators should track new releases and apply the vendor-supplied fix that enables Parsedown safe mode or introduces HTML sanitization on rendered note content.

Workarounds

  • Deploy a strict Content Security Policy that disallows inline scripts and restricts script sources to the application origin
  • Place HortusFox behind a web application firewall (WAF) with rules that block HTML tags and JavaScript event handlers in note submission endpoints
  • Manually patch the application to call setSafeMode(true) on the Parsedown instance and pass rendered output through an HTML sanitizer such as HTML Purifier
  • Limit workspace membership to trusted users and disable public or self-service registration where possible
bash
# Example Content Security Policy header to mitigate inline script execution
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.