Skip to main content
VulnerabilityPublished Updated

CVE-2026-96795: horilla-hr · Code Injection

Affects horilla-hrSource CVE Database V5

0
Compare

Not known to be exploited · CVSS 8.8 High : upgrade to 2.0.0 soon.

Data as of 9 Nov 2026, 23:24 UTC

CVSS 3.1 base score
8.8High
How severe the flaw is on the 0–10 CVSS scale.
EPSS
0.3% chance of exploitation in 30 days – higher than 32% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
Patch
Available – fixed in 2.0.0
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 25 Sep 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 9 Nov 2026.

What to do

Upgrade horilla-hr and horilla/horilla-hr to 2.0.0.

Affected software

ProductAffectedFixed in
horillahorilla-hrAffected
  • <2.0.0
Fixed in
  • 2.0.0
GitHubhorilla/horilla-hrpkg:github/horilla/horilla-hrOther threatsAffected
  • <2.0.0
Fixed in
  • 2.0.0

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

AI-suggested

Upgrade horilla-hr to version 2.0.0 or later, where this vulnerability is fixed. No other mitigation is indicated by the vendor advisory.

Description

Horilla is an HR and CRM software. Prior to 2.0.0, HorillaListView.export_data in horilla_views/generic/cbv/views.py accepts an authenticated user's columns POST parameter, takes field_tuple[1], interpolates it into dynamic_fn_str as Python source, and passes the generated function definition to exec(). A crafted string that remains valid under ast.literal_eval can inject Python syntax into a default argument evaluated during function definition, allowing arbitrary operating-system commands to execute with the application process privileges, including root privileges in the shipped Docker image. This issue is fixed in version 2.0.0.

References

Community reviews

Loading reviews…