☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Horilla logo [ WEBSITE ] [ VENDOR STATS ]
SOON 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-71483

CVE-2026-71483 Cross-Site Scripting in Horilla
📅 PUBLISHED: 2026-09-25 00:00 UTC 🔄 UPDATED: 2026-10-11 22:59 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.27%
👁️
0.27% probability
6.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1189
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Global License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-71483 is a reflected cross-site scripting (XSS) vulnerability in Horilla, an open-source HR and CRM software platform, affecting all versions prior to 1.6.0. The flaw resides in the search parameter at the /employee/employee-filter-view endpoint, where user-supplied input is reflected into the DOM via jQuery's .html() method in employee/templates/employee_nav.html without HTML neutralization. An unauthenticated external attacker can deliver a crafted link that, when opened by an authenticated employee or administrator, executes arbitrary JavaScript in the victim's browser session context. The issue is fixed in version 1.6.0.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

Horilla is a web-based HR and CRM application. The vulnerable component is the employee filter view, reachable at the /employee/employee-filter-view endpoint. According to the NVD description, the application accepts a search parameter at this endpoint and reflects its value — without HTML neutralization (i.e., without output encoding or sanitization) — into the DOM through the use of jQuery's .html() method inside the template file employee/templates/employee_nav.html.

The core defect is a classic reflected cross-site scripting condition (CWE-79). Two distinct implementation weaknesses combine to produce it:

  1. Unsanitized input reflection. The search parameter value is passed back to the client without neutralization of HTML-significant characters. Because the value is not escaped, any HTML or script-bearing markup contained in the parameter survives into the rendered response.

  2. Unsafe DOM sink. Rather than inserting the reflected value as inert text (for example via .text()), the client-side template code feeds it into jQuery's .html() method. The .html() sink parses its argument as HTML and can therefore instantiate script elements, event-handler attributes, or other active markup. This is the specific mechanism by which a reflected string becomes executable code rather than harmless display text.

The combination means the vulnerability is a DOM/page-context injection driven by a query-string parameter. Because the injection point is the search/filter input, the affected flow is one that an authenticated user interacts with routinely while managing employee records, increasing the plausibility of a successful lure. The employee_nav.html template is part of the employee navigation UI, indicating the sink renders on the employee-facing interface rather than on an unauthenticated public page.

The vulnerability requires no authentication on the attacker's side to craft the payload link; however, the impact materializes in the context of an already-authenticated victim, since the description states the payload executes "when an authenticated employee or administrator reaches the employee filter." This is consistent with a session-riding XSS that inherits the victim's application privileges.

No public proof-of-concept, Nuclei template, or exploit code is currently available for this CVE. The precise JavaScript payload, the exact reflection timing (server-side render versus client-side DOM insertion), and the exact serialization of the search parameter are not fully specified in the available description; the analysis above is bounded by what the description states and by the well-understood behavior of the .html() sink. No CVSS base score or vector has been published by the CNA or NVD at the time of writing, and the CVE has not been scored by FIRST.org for EPSS. The vendor-assigned CWE is CWE-79.


Exploitation Scenarios

The following attack chain is inferred at the vulnerability-class level (reflected XSS via an unsafe DOM sink) and uses only the endpoint, parameter, file, and sink named in the NVD description. No public exploit exists.

1. Reconnaissance / target identification. An attacker identifies internet- or intranet-reachable Horilla instances running a version prior to 1.6.0. Because the vulnerable feature is part of the authenticated HR workflow, the attacker typically does not need to breach the perimeter — the lure is aimed at legitimate users. A typical delimiter in Horilla's search parameter is the search query string parameter appended to /employee/employee-filter-view.

2. Triggering the flaw class. The attacker crafts a URL of the form /employee/employee-filter-view?search=<malicious-markup>, where the payload exploits the missing HTML neutralization. Because the value is fed to jQuery's .html() in employee/templates/employee_nav.html, markup that the sink interprets as an active element will be parsed and executed rather than displayed as text. The description does not disclose a specific payload string, so no exact syntax is asserted here; the operative condition is that the payload must survive into the .html() sink.

3. Payload delivery / execution method. The crafted link is delivered out-of-band — email, chat, or a message that appears to originate from a trusted colleague or administrator. When an authenticated employee or administrator opens the link and "reaches the employee filter," the script executes in their browser under the Horilla origin. Because the payload runs in the victim's session context, the attacker can access browser-visible session data and, per the description, perform actions with the victim's application privileges.

4. Post-exploitation impact. The script inherits the victim's authenticated session. Depending on the victim's role, the attacker can read data visible in the browser, perform state-changing actions as the victim, or exfiltrate session material to an attacker-controlled endpoint. Administrative victims represent the greatest risk because their privileges extend across HR and CRM data. No privilege escalation is described beyond the victim's own rights; the flaw is a session-riding client-side code execution primitive.


Impact Assessment

No CVSS base score or vector has been assigned by the CNA or NVD for CVE-2026-71483 at the time of this report; the EPSS score is likewise not yet published by FIRST.org. Impact must therefore be assessed qualitatively from the vulnerability class and the description.

CVE-2026-71483 is a reflected XSS affecting an authenticated HR/CRM workflow. The realistic impact categories are:

  • Session and identity compromise. With the victim's session, an attacker can impersonate the employee or administrator across the Horilla application.
  • Data exposure. Browser-visible session data and application-rendered records (employee and CRM data) are within reach of the injected script.
  • Action forgery. The attacker can perform operations the victim is authorized to perform, including potentially modifying records.
  • Scope. The affected component is the employee filter endpoint; blast radius depends on how broadly Horilla is deployed and which roles use the employee filter. Because the attacker's initial action is link delivery rather than direct exploitation, the attacker does not need network reachability into the Horilla instance — only the ability to send a link to a user.
  • Privilege level. The description explicitly names employees and administrators as the at-risk populations, raising worst-case severity when an administrator opens the link.

As with any XSS in an HR platform, an attacker able to act as an administrator could pivot into adjacent enterprise systems that rely on the Horilla user identity or its session artifacts. No lateral-movement behavior is claimed by the description; this remains an assessment, not an observed fact.


Detection Guidance

Sigma Rule

title: Horilla Reflected XSS via employee-filter-view search Parameter
id: 3f9b2c7e-6a41-4d18-9e02-horilla71483
status: experimental
description: Detects HTTP requests to the Horilla employee filter endpoint where the search parameter contains HTML/JS-significant characters consistent with reflected XSS against the .html() sink.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-71483
author: valtersit.com threat intelligence
date: 2026/01/01
logsource:
  category: webserver
detection:
  selection_uri:
    cs-uri-stem|contains: '/employee/employee-filter-view'
  selection_payload:
    cs-uri-query|contains:
      - 'search='
  selection_tags:
    cs-uri-query|contains:
      - '<script'
      - '%3Cscript'
      - 'onerror='
      - 'onload='
      - 'javascript:'
      - 'document.cookie'
      - '<img'
      - '%3Cimg'
  condition: selection_uri and selection_payload and selection_tags
falsepositives:
  - Legitimate search input containing angle brackets (rare)
level: high

YARA Rule

rule CVE_2026_71483_Horilla_XSS
{
    meta:
        description = "Detects Horilla employee_nav.html template or HTTP payloads associated with reflected XSS in employee-filter-view"
        cve = "CVE-2026-71483"
        author = "valtersit.com threat intelligence"
        date = "2026-01-01"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-71483"
    strings:
        $ep   = "/employee/employee-filter-view" ascii wide nocase
        $param = "search=" ascii wide nocase
        $sink1 = ".html(" ascii wide
        $tpl  = "employee_nav.html" ascii wide
        $vec1 = "<script" ascii wide nocase
        $vec2 = "onerror=" ascii wide nocase
        $vec3 = "onload=" ascii wide nocase
    condition:
        (uint32(0) != 0x04034b50) and
        (
            ($ep and $param and ($vec1 or $vec2 or $vec3)) or
            ($tpl and $sink1)
        )
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-71483 Horilla Reflected XSS attempt via employee-filter-view search parameter"; flow:established,to_server; http.uri; content:"/employee/employee-filter-view"; http.uri; content:"search="; pcre:"/search=.*(%3Cscript|%3Cimg|<script|<img|onerror|onload|javascript:)/Ui"; reference:cve,2026-71483; classtype:web-application-attack; sid:2026714830; rev:1;)

Elastic Detection

sequence by source.ip with maxspan=30d
  [network where url.path == "/employee/employee-filter-view" and url.query : "*search=*"]
  [network where url.path == "/employee/employee-filter-view"
     and url.query : ("*<script*" or "*%3Cscript*" or "*onerror=*" or "*onload=*" or "*javascript:*")]

Splunk SPL Query

index=web sourcetype=access_combined OR sourcetype=nginx
| where like(uri_path, "/employee/employee-filter-view%")
| rex field=uri_query "search=(?<searchval>[^&]+)"
| where isnotnull(searchval)
| eval score = case(
    match(lower(searchval), "(%3cscript|<script|%3cimg|<img)"), 3,
    match(lower(searchval), "(onerror=|onload=|javascript:|document.cookie)"), 3,
    1=1, 0)
| where score >= 3
| table _time, src_ip, host, uri_path, searchval, http_user_agent, status
| sort - _time

Wazuh OSSEC Rule

<group name="web,horilla,cve-2026-71483,">
  <rule id="202671483" level="12">
    <decoded_as>web-accesslog</decoded_as>
    <url>/employee/employee-filter-view</url>
    <regex>search=.*(%3Cscript|%3Cimg|<script|<img|onerror=|onload=|javascript:|document.cookie)</regex>
    <description>CVE-2026-71483: Possible Horilla reflected XSS exploitation via employee-filter-view search parameter</description>
    <mitre>
      <id>T1189</id>
    </mitre>
    <group>cve_2026_71483,web_attack,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). No vendor fix, workaround, or affected-version list has been supplied by any tracked source. However, the NVD description explicitly states that the issue is fixed in Horilla version 1.6.0. That vendor claim has not been independently corroborated by the tracked patch sources in this dataset. Treat all pre-1.6.0 deployments as vulnerable until confirmed otherwise.

1. Immediate mitigations

  • Apply defensive output encoding at the employee-filter-view endpoint so the search parameter is HTML-escaped before it reaches the browser.
  • Where feasible, eliminate the unsafe .html() insertion path in employee/templates/employee_nav.html; render user-controlled search content with a text-safe API instead.
  • Deploy a Content Security Policy that disallows inline script and eval-like sinks, reducing the exploitability of any remaining injection.
  • Add a WAF rule matching the Suricata/Elastic detections above to block or alert on script-bearing search values sent to the employee filter endpoint.
  • Require re-authentication for sensitive actions and shorten session lifetimes to limit the value of a stolen session.

2. Patch / upgrade steps

  • Upgrade Horilla to version 1.6.0 or later as stated by the vendor in the NVD description. Confirm the upgrade in a staging environment first, given the absence of independent patch verification.
  • After upgrade, re-test the /employee/employee-filter-view?search= parameter with benign and script-bearing inputs to verify the neutralization.

3. Long-term hardening

  • Adopt a secure-by-default policy of escaping all reflected values on output.
  • Ban direct use of .html() (and equivalents) for user-supplied input in the codebase via linting or code review.
  • Sponsor an SAST/DAST cycle across the employee filter and other search surfaces.
  • Continuously monitor NVD, the Horilla project, and FIRST.org because the CVSS and EPSS scoring for this CVE remain outstanding.

References

No public PoC, exploit code, or Nuclei template is available for this CVE. There is no CISA KEV listing and no exploit-in-the-wild evidence or named threat-actor campaign associated with CVE-2026-71483 at the time of writing.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:"Horilla"
title:"Horilla"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-71483/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.