Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious search-parameter link
-
DeliveryPhish to authenticated Horilla user
-
ExploitVictim opens employee filter view
-
ExecutionPayload reflected via jQuery .html()
-
PersistScript executes in victim session
-
ImpactHijack session data/actions with victim privileges
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a victim who is already an authenticated Horilla employee or administrator to click an attacker-crafted link and load /employee/employee-filter-view (the employee filter view); the search parameter is reflected unescaped through jQuery |
| Impact | This is a reflected cross-site scripting flaw (CWE-79) confirmed by the vendor's GitHub Security Advisory (GHSA-rw86-x8hq-xgwh) and the one-line fix commit (jQuery |
| Exploit ScenarioDerived | An attacker crafts a URL for /employee/employee-filter-view whose search parameter contains a malicious script payload and phishes it to a logged-in Horilla user. When the victim opens the link and reaches the employee filter, the value is reflected via jQuery |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
Reflected cross-site scripting in Horilla HR (horilla-hr) before 1.6.0 allows a remote, unauthenticated attacker to execute arbitrary JavaScript in the browser of an authenticated employee or administrator by tricking that user into opening a crafted link to /employee/employee-filter-view. The search parameter is written into the DOM through jQuery's .html() in employee/templates/employee_nav.html, so the injected markup is rendered and executed rather than displayed as text; because the payload runs in the victim's session, the attacker can read browser-visible session data and perform actions with the victim's application privileges. There is no public exploit identified at time of analysis and the flaw is not confirmed actively exploited (CISA KEV); impact is capped at the client/browser layer (VC:H/VI:H but VA:N and no scope change to the server in the vendor's CVSS 4.0 vector, with our independent assessment scoring CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N).
RemediationAI
Vendor-released patch: 1.6.0 - upgrade Horilla HR to version 1.6.0 or later, which contains the one-line correction of jQuery .html() to .text() in employee/templates/employee_nav.html (see commit 39ed01306341a1f6b7702df2825ab5431b5401a9 and advisory GHSA-rw86-x8hq-xgwh at https://github.com/horilla/horilla-hr/security/advisories/GHSA-rw86-x8hq-xgwh). If upgrading immediately is not possible, the surgical workaround is to apply the same source change directly - replace $('.search_text').html(this.value) with $('.search_text').text(this.value) in employee_nav.html and redeploy - which fully removes the sink but requires managing a local fork until 1.6.0 is installed; alternatively, add a strict Content-Security-Policy that disallows inline and untrusted script sources, accepting that this may break existing inline scripts and that legacy browsers may not enforce it consistently. Because exploitation requires the victim to click an attacker-supplied link while authenticated, session hardening (short session lifetimes, HttpOnly and SameSite cookies, re-authentication for sensitive actions) reduces the value of a successful payload but does not remove the flaw, and server-side sanitization/encoding of the search parameter before it reaches the template is a reasonable defense-in-depth measure that does not by itself replace the client-side fix.
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 reflected cross-site scripting (CWE-79) caused by unsafe DOM manipulation in a Django-templated front end. In Horilla HR's employee navigation template (employee/templates/employee_nav.html), the value of the search parameter from the /employee/employee-filter-view endpoint was passed to jQuery's .html() method, which parses the supplied string as HTML and inserts it into the DOM. Any script-capable markup in that string therefore executes in the origin of the Horilla instance. The root cause is the well-known semantic difference between jQuery .html() (HTML parsing) and .text() (literal text insertion); the vendor's fix commit 39ed01306341a1f6b7702df2825ab5431b5401a9 changes the call from $('.search_text').html(this.value) to $('.search_text').text(this.value), eliminating the HTML interpretation. Because the sink is on the client side in a template served to authenticated users, the attacker does not need a Horilla account to craft the URL, but the payload only fires when a logged-in employee or administrator loads the vulnerable employee filter view within their existing session.
Know when Python 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:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Reflected XSS delivered via link (AV:N/AC:L/PR:N) requiring victim click (UI:R); executes in victim's origin (S:C) yielding limited session data/action compromise (C:L/I:L), no availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
Horilla is an HR and CRM software. Prior to 1.6.0, the search parameter at /employee/employee-filter-view is reflected by jQuery .html() in employee/templates/employee_nav.html without HTML neutralization. An external attacker can craft and deliver a link that causes JavaScript to execute when an authenticated employee or administrator reaches the employee filter, allowing access to browser-visible session data and actions with the victim's application privileges. This issue is fixed in version 1.6.0.
Articles & Coverage 1
Technical POC Analysis
CWE-79, reflected cross-site scripting.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Horilla HR installations running releases earlier than 1.6.0 are exposed to a reflected cross-site scripting flaw that allows an unauthenticated attacker to run arbitrary JavaScript inside the browser session of any logged-in employee or HR administrator who is tricked into opening a crafted link. Because the injected code executes with the victim's own application privileges, the people most at risk are HR staff and administrators whose sessions can reach personnel records, payroll data, and privileged administrative functions. The flaw requires no attacker authentication and no server-side compromise, so exposure depends largely on whether employees can be induced to click a malicious link, making user awareness and web-layer filtering as important as patching in the near term.
No vendor-released patch identified at time of analysis. Interim mitigations: deploy WAF or reverse-proxy filtering that blocks script-bearing payloads targeting the search parameter on /employee/employee-filter-view; enforce a strict Content Security Policy to limit inline script execution in the HR application; restrict external exposure of Horilla HR to VPN or trusted networks where feasible; shorten session lifetimes and require re-authentication for sensitive HR functions; and deliver targeted phishing-awareness guidance to employees and administrators about crafted links into HR pages.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-87364
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB