# CVE-2026-96795: Horilla code injection in list-view export

Source: https://junglewise.ai/threats/cve-2026-96795-horilla-is-an-hr-and-crm-software-prior-to-2-0-0-horillalistview  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-09-25. Updated: 2026-09-26  
License: CC BY 4.0 with a link back

CVE-2026-96795 · Severity: high · CVSS 8.8 · Published 2026-09-25

Horilla is an HR and CRM application that allows employees to manage and export data. Any authenticated user, including those with minimal permissions, can exploit a flaw in the export feature to inject and execute arbitrary operating-system commands on the server. In default Docker deployments, these commands run with root privileges, giving attackers complete control of the application and underlying system.

Technologies: [Horilla](https://junglewise.ai/threats/technologies/horilla). Vendors: [Horilla](https://junglewise.ai/threats/vendors/horilla).

## Quick answers

**Is CVE-2026-96795 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-96795 being exploited in the wild.

**How severe is CVE-2026-96795?** High severity, with a CVSS score of 8.8, published 25 September 2026.

**Which products and versions are affected?** Horilla prior to 2.0.0.

**Is there a fix for CVE-2026-96795?** A patch was published on 2026-08-30: Fixed in version 2.0.0 Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-96795 attacked?** It is attacked over the network, in a web application.

**Am I affected by CVE-2026-96795?** Check whether you run Horilla at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## Technical details

The HorillaListView.export_data handler constructs Python function definitions from user-controlled POST parameters (specifically the columns field) and executes them via exec() without proper sanitization. Although the columns parameter is validated with ast.literal_eval to ensure it is a valid Python literal, this validation does not restrict arbitrary syntax within string values. An attacker can craft a string that remains valid under ast.literal_eval but injects Python code into a default argument of the generated function, which is evaluated immediately during function definition. This allows arbitrary command execution as the application process user (root in the shipped Docker image).

## Affected products

- Horilla Horilla prior to 2.0.0

## Timeline

- 2026-07-21: disclosed
- 2026-08-30: patched: Fixed in version 2.0.0

## References

- [https://github.com/horilla/horilla-hr/releases/tag/2.0.0](https://github.com/horilla/horilla-hr/releases/tag/2.0.0)
- [https://github.com/horilla/horilla-hr/security/advisories/GHSA-5g4v-4rv4-r26f](https://github.com/horilla/horilla-hr/security/advisories/GHSA-5g4v-4rv4-r26f)

## Related threats

- [Horilla information disclosure in mail preview endpoints](https://junglewise.ai/threats/cve-2026-63432-horilla-is-an-hr-and-crm-software-from-1-0-0-until-1-6-0-and-2-0)
- [Horilla missing authorization in payroll views](https://junglewise.ai/threats/cve-2026-63431-horilla-is-an-hr-and-crm-software-in-1-5-0-85-and-earlier-payroll)
- [Horilla open redirect in notification endpoints](https://junglewise.ai/threats/cve-2026-41513-horilla-open-redirect-in-notification-endpoints)
