Skip to content
Heist/ feed
Back to feed
High

Horilla: Authenticated RCE in Horilla List-View Export

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-96795
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 02:48 UTC · Revision 1

Source evidence

Horilla: Authenticated RCE in Horilla List-View Export

core-osv · Original source

Published 25 Sept 2026, 22:17 UTC

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.

osv:CVE-2026-96795
Complete source record
{
  "id": "6ea6367c61fac75a52f2bcd7734c5d3cae2658a18ae87495a55b084c664519bc",
  "url": "https://osv.dev/vulnerability/CVE-2026-96795",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Horilla: Authenticated RCE in Horilla List-View Export",
    "summary": "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.",
    "evidence": "osv:CVE-2026-96795",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-96795",
      "aliases": [
        "CVE-2026-96795",
        "GHSA-5g4v-4rv4-r26f"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/horilla/horilla-hr",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "edf0a1d18cec6b3d83437ce0ba93950973615e82"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.0.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "edf0a1d18cec6b3d83437ce0ba93950973615e82"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "2.0.0"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.0.0"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "2.0.0-rc1",
            "release/v2.1.0",
            "1.3",
            "1.2.3",
            "1.2.2",
            "1.2.1",
            "1.2.0",
            "1.1.0",
            "1.0.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-96795.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:25.157144120Z",
      "provider": "osv",
      "references": [
        "https://github.com/horilla/horilla-hr/releases/tag/2.0.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/96xxx/CVE-2026-96795.json",
        "https://github.com/horilla/horilla-hr/security/advisories/GHSA-5g4v-4rv4-r26f",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-96795"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-94"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/96xxx/CVE-2026-96795.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-96795",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 492021,
  "published_at": "2026-09-25T22:17:04.855+00:00"
}