☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Horilla logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N 🐛 CWE-862
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-63431

CVE-2026-63431 Missing Authorization in Horilla
📅 PUBLISHED: 2026-09-25 00:00 UTC 🔄 UPDATED: 2026-09-28 00:00 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.21%
👁️
0.21% probability
5.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
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 VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-63431 is a broken access control vulnerability (CWE-862) in Horilla, an open source HR and CRM platform. Versions 1.5.0-85 and earlier fail to consistently enforce authorization checks in the payroll module before loading records. Any authenticated employee can manipulate identifiers such as emp_id, allowance_id, or deduction_id to read other employees' salary structures, allowance and deduction amounts, personal loan disbursements, and repayment schedules. The vulnerability requires only a low-privileged authenticated session, no user interaction, and yields high confidentiality impact, which is reflected in its CVSS v3.1 base score of 6.5.

⚡ 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

The vulnerability resides in the payroll module of Horilla. Specifically, the file payroll/views/component_views.py contains at least three view functions — allowances_deductions_tab, view_single_allowance, and view_single_deduction — that do not consistently authorize access before loading records. These views accept user-supplied identifiers (emp_id, allowance_id, deduction_id) and use them to query the database without verifying that the requesting user owns the record or holds the requisite payroll-view permissions.

From a code-level perspective, the flaw is a classic Insecure Direct Object Reference (IDOR) nested within a missing function-level access control (CWE-862). The application fails to perform an ownership check or a permission check on the resolved object. An authenticated employee with a valid session can substitute the identifiers in requests to the affected views. Because the queries are driven directly by these parameters, the backend returns the corresponding records regardless of the caller's identity or role.

The attack surface is the web application's payroll endpoints exposed by these views. Exploitation is remote (AV:N) and requires low privileges (PR:L) — only a valid employee account. No user interaction (UI:N) is needed. The impact is limited to confidentiality (C:H), as the description does not indicate any ability to modify or delete records. Integrity and availability impacts are none.

Sparse technical detail is available beyond the NVD description; no public PoC, Nuclei template, or exploit code exists. The specific URL paths and parameter encodings are not enumerated in the advisory, and no patch has been released. Therefore, the attack mechanism is best described at the vulnerability-class level: unauthenticated object references in payroll views that lack per-object authorization.

Exploitation Scenarios

No public PoC is available; the attack chain is inferred from the vulnerability class described in the NVD entry.

  1. Reconnaissance/Target Identification: An attacker identifies an internet-facing Horilla instance (e.g., via Shodan dork http.title:"Horilla"). They register or obtain a low-privileged employee account. If registration is disabled, the attacker may use credentials from prior breaches or social engineering. The attacker maps the payroll module by browsing the application as a normal employee and noting the allowance/deduction tabs.

  2. Triggering the Flaw: The attacker navigates to the payroll component views — allowances_deductions_tab, view_single_allowance, or view_single_deduction — and observes the request parameters. Because the views do not enforce ownership or permission checks, the attacker substitutes their own emp_id with that of another employee (e.g., a manager or executive). Similarly, they iterate allowance_id and deduction_id values.

  3. Payload/Execution Method: The exploitation is a simple parameter tampering at the HTTP request level. The attacker sends crafted GET or POST requests to the affected endpoints with modified identifiers. No special payload encoding is required; the backend loads and returns the corresponding records. The attacker may automate enumeration of emp_id, allowance_id, and deduction_id to extract data at scale.

  4. Post-Exploitation Impact: The attacker gains read access to another employee's salary structure, allowance and deduction amounts, personal loan disbursements, and repayment schedules. This data can be used for financial fraud, identity theft, corporate espionage, or targeted phishing. The breach is difficult to detect because it uses legitimate application functionality and authenticated sessions, blending with normal traffic. No data modification or denial of service is possible per the CVSS vector, but the confidentiality loss is high.

Impact Assessment

The vulnerability exposes sensitive payroll and financial data. Affected systems are Horilla deployments running version 1.5.0-85 or earlier with the payroll module enabled. The blast radius includes all employees whose records are stored in the system, as any authenticated employee can enumerate identifiers to read others' data. Business impact includes regulatory exposure (e.g., GDPR, CCPA, HIPAA if health-related deductions are included), reputational damage, and potential insider threat enablement. CVSS v3.1 base score is 6.5 (Medium), with subscores: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N. The high confidentiality impact combined with low attack complexity and no user interaction makes this a serious data disclosure risk, though the need for authentication keeps the score in the medium range. The EPSS score is not yet available from FIRST.org, and there is no evidence of active exploitation or CISA KEV listing.

Detection Guidance

Sigma Rule

title: Horilla Payroll IDOR - Excessive Object Identifier Enumeration
id: 3f8c2a1e-9b4d-4f7a-8c1e-2d6f9a0b3e5c
status: experimental
description: Detects requests to Horilla payroll views with manipulated emp_id, allowance_id, or deduction_id parameters, indicating attempted IDOR exploitation.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-63431
author: Threat Intelligence Team
date: 2026-01-01
tags:
  - attack.t1190
  - attack.t1078
logsource:
  category: webserver
  product: apache
detection:
  selection_endpoint:
    cs-uri-stem|contains:
      - '/payroll/'
      - 'component_views'
      - 'allowances_deductions_tab'
      - 'view_single_allowance'
      - 'view_single_deduction'
  selection_params:
    cs-uri-query|contains:
      - 'emp_id='
      - 'allowance_id='
      - 'deduction_id='
  condition: selection_endpoint and selection_params
fields:
  - c-ip
  - cs-username
  - cs-uri-stem
  - cs-uri-query
falsepositives:
  - Legitimate HR administrators accessing multiple employee records
level: medium

YARA Rule

rule CVE_2026_63431_Horilla_IDOR
{
    meta:
        description = "Detects references to vulnerable Horilla payroll views in web logs or source code"
        author = "Threat Intelligence Team"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-63431"
        date = "2026-01-01"
        severity = "medium"

    strings:
        $view1 = "allowances_deductions_tab" ascii wide nocase
        $view2 = "view_single_allowance" ascii wide nocase
        $view3 = "view_single_deduction" ascii wide nocase
        $param1 = "emp_id" ascii wide nocase
        $param2 = "allowance_id" ascii wide nocase
        $param3 = "deduction_id" ascii wide nocase
        $file = "component_views.py" ascii wide nocase

    condition:
        $file and any of ($view*) and any of ($param*)
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-63431 Horilla Payroll IDOR Attempt"; flow:established,to_server; http.uri; content:"/payroll/"; http.uri; content:"component_views"; http.uri; content:"emp_id"; http.uri; content:"allowance_id"; http.uri; content:"deduction_id"; classtype:attempted-recon; reference:cve,2026-63431; reference:url,https://nvd.nist.gov/vuln/detail/CVE-2026-63431; sid:202663431; rev:1;)

Elastic Detection

sequence by user.id with maxspan=5m
  [ network where url.path : "*component_views*" and url.query : "*emp_id=*" and url.query : "*allowance_id=*" ]
  [ network where url.path : "*view_single_allowance*" or url.path : "*view_single_deduction*" ]

Splunk SPL Query

index=web sourcetype=access_combined
| search (uri_path="*component_views*" OR uri_path="*allowances_deductions_tab*" OR uri_path="*view_single_allowance*" OR uri_path="*view_single_deduction*")
| rex field=uri_query "(?<param_name>[^=&]+)=(?<param_value>[^&]+)"
| where param_name IN ("emp_id","allowance_id","deduction_id")
| stats count dc(param_value) as unique_ids values(param_value) as ids by src_ip, user, uri_path
| where unique_ids > 10
| sort - unique_ids

Wazuh OSSEC Rule

<group name="web,appsec,">
  <rule id="100631" level="10">
    <decoded_as>web-accesslog</decoded_as>
    <url>/payroll/.*(component_views|allowances_deductions_tab|view_single_allowance|view_single_deduction)</url>
    <regex>emp_id=|allowance_id=|deduction_id=</regex>
    <description>CVE-2026-63431: Horilla payroll IDOR attempt detected</description>
    <mitre>
      <id>T1190</id>
    </mitre>
    <group>cve_2026_63431,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).

  1. Immediate Mitigations:

    • Restrict access to Horilla instances to trusted networks or VPN-only.
    • Enforce strong authentication and consider MFA for all employee accounts.
    • Implement a Web Application Firewall (WAF) rule to block or alert on requests with sequential or anomalous emp_id, allowance_id, or deduction_id parameters.
    • Audit payroll view usage for abnormal patterns (e.g., one user accessing many different employee records).
    • Apply the principle of least privilege: ensure only payroll-authorized roles can access the payroll module at the network level.
  2. Patch/Upgrade Steps:

    • No fixed version is available. Monitor the Horilla project repository and vendor channels for an official patch.
    • When a patch is released, upgrade to the latest version immediately. Verify that the patch adds ownership and permission checks in allowances_deductions_tab, view_single_allowance, and view_single_deduction.
    • If a patch is not forthcoming, consider custom code hardening: add explicit request.user ownership checks and permission decorators in payroll/views/component_views.py.
  3. Long-Term Hardening:

    • Adopt a secure development lifecycle with mandatory authorization review for all views that accept object identifiers.
    • Implement centralized access control mechanisms (e.g., Django's @login_required and custom has_perm checks) for every view.
    • Regularly conduct code reviews and penetration tests focusing on IDOR and broken access control.
    • Log and monitor all access to sensitive payroll data with alerting on anomalous read volumes.

References

👁️ 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-63431/ · 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.