Skip to main content

OpenCATS EUVDEUVD-2026-98922

| CVE-2026-54454 CRITICAL
Unrestricted Upload of File with Dangerous Type (CWE-434)
2026-10-13 GitHub_M
9.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with Import privileges
  2. Delivery
    Upload PHP file via affected import type
  3. Exploit
    Original filename preserved in web temp dir
  4. Execution
    Import error leaves file on disk
  5. Persist
    Request staged file to execute PHP
  6. Impact
    RCE as web server, compromise recruiting data and host

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File type validation, storage isolation
MITRE ATT&CK

2 techniques across 2 tactics: Command and Control, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Three conditions must all hold: (1) the attacker has an authenticated OpenCATS account with Import privileges (PR:H); (2) they use the specific single import data type whose code path preserved the uploaded file's original (attacker-controlled) filename rather than randomizing it - in the vulnerable modules/import/ImportUI.php the non-'Resume' path randomized names while one path kept the original, and an import error leaves the staged file on disk; and (3) critically, the CATS_TEMP_DIR temporary directory must be served by the web server WITH PHP execution enabled. Limiting factors: this executable-temp-dir setting is not a default hardened configuration, authentication plus Import privilege is required, and affected versions are strictly before 0.10.0. Where the temp directory does not execute PHP, the uploaded file cannot run and impact is substantially reduced.

Impact

Signals are mixed, pointing to a moderate-priority issue rather than an emergency. The CVSS 3.1 vector (9.1 Critical, AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H) rates this Critical largely because of the scope change and triple-H impact of PHP RCE, but PR:H confirms the attacker must already be an authenticated user holding Import privileges - a meaningful barrier not reflected in the headline score. The AC:L assigned by the vendor understates a key gatekeeper: exploitation only works 'if the temporary directory is served with PHP execution enabled,' which is a non-default and often-absent deployment condition, so real-world exploitability is narrower than 9.1 suggests. No EPSS score, CISA KEV entry, or SSVC decision data was provided, and no public exploit was identified; the GitHub artifacts are the vendor patch (PR #808 / commit 7f15174) and advisory, not weaponized exploit code. Net: a genuine privileged-attacker RCE worth patching promptly, but the combination of required Import privileges plus a non-default executable-temp-dir configuration makes widespread opportunistic exploitation unlikely absent further intelligence.

Exploit ScenarioDerived

An authenticated recruiter-level user with Import privileges selects the one affected import data type and uploads a PHP webshell whose original attacker-chosen filename is preserved and staged in the web-accessible temporary directory; a deliberately triggered import error leaves the file on disk. If that directory is configured to execute PHP, the attacker then requests the staged filename directly to run arbitrary code as the web server user. No public exploit code was identified, though the vendor patch diff reveals the vulnerable logic in detail.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 13, 2026

Arbitrary PHP code execution can be achieved against OpenCATS deployments prior to 0.10.0 through an unrestricted file upload in the Import module: an authenticated user holding Import privileges can stage a PHP file whose original, attacker-controlled name is preserved on disk in the web-accessible CATS_TEMP_DIR. Exploitation only works where that temporary directory is served by the web server with PHP execution enabled, so the practical risk is conditional rather than universal; there is no public exploit identified at time of analysis, and the issue is fixed in version 0.10.0. The vulnerability carries a CVSS score of 9.1 (assessed as CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:H/I:H/A:H), reflecting high impact but requiring authenticated access and a non-default server configuration.

RemediationAI

Upgrade to OpenCATS 0.10.0 or later (https://github.com/opencats/OpenCATS/releases/tag/v0.10.0); this is the vendor-released patch and incorporates both the filename-randomization fix and the session-whitelist validation added in PR #808 / commit 7f151741598c36c8233ada4b6b64f12b721d4907. If immediate upgrade is not possible, apply the upstream commit to modules/import/ImportUI.php, or as a compensating control disable PHP execution inside CATS_TEMP_DIR - for Apache remove or override any 'php'/'php-fpm' handler for that directory (e.g. 'php_admin_flag engine off' inside a <Directory> block) and for nginx ensure the location does not pass .php files to the FastCGI PHP backend, instead serving or denying them as static content; the trade-off is that legitimate PHP endpoints placed in the temp directory by customizations will stop working, but none are required by stock OpenCATS. Additionally, move CATS_TEMP_DIR outside the document root where the deployment permits it, and periodically purge staged import files, since the patch's error-path @unlink() only protects the fixed flow. Finally, restrict Import privileges to the minimum set of trusted staff, because PR:H authentication with that role is a prerequisite for every exploitation path, and review web server configuration and any existing staged files for signs of prior abuse.

Affected VersionsENISA

OpenCATS < 0.10.0

Affected Packages

euvd opencats fix: 0.10.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-434 (Unrestricted Upload of File with Dangerous Type). In vulnerable versions of modules/import/ImportUI.php, the upload handling logic conditionally preserved the uploaded file's original name depending on the selected import data type - the upstream diff shows that a non-'Resume' path randomized the filename via FileUtility::makeRandomFilename() while another path kept $originalFilename verbatim. That preserved name, combined with a staging location inside the web-served CATS_TEMP_DIR, means a crafted '.php' upload can remain on disk under an attacker-chosen executable filename, particularly when an import error aborts processing without cleanup. The upstream fix (PR #808, commit 7f151741598c36c8233ada4b6b64f12b721d4907) removes the branch that preserved the original name - always randomizing with a '.tmp' suffix - and adds an isValidImportFileID() guard that validates POSTed 'fileName' values against a session-maintained whitelist of valid staged import file IDs (rejecting path traversal via basename() comparison), plus @unlink() cleanup of staged files on error. The CPE entry cpe:2.3:a:opencats:opencats:*:*:*:*:*:*:*:* confirms the entire pre-0.10.0 release line is affected. Impact is scoped as S:C because successful PHP execution escapes the application context and yields code execution under the web server process identity.

Know when Opencats gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 9.1 CRITICAL
AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 8.0 HIGH

PR:H for required Import privileges and AC:H because success depends on the non-default temp directory being configured to execute PHP; S:C and C/I/A:H reflect host-level RCE.

3.1 AV:N/AC:H/PR:H/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 13, 2026 - 18:19 EUVD
CVE Published
Oct 13, 2026 - 16:33 cve.org
CRITICAL 9.1

DescriptionCVE.org

OpenCATS is an open-source applicant tracking system and recruitment CRM for staffing agencies and hiring teams. Prior to 0.10.0, the OpenCATS Import module in modules/import/ImportUI.php can preserve an uploaded file's original name for one import data type and place the file in the web-accessible temporary directory. An authenticated user with Import privileges can select the affected import path and upload a PHP file that remains under an attacker-controlled executable filename, and an import error can leave the file on disk. If the temporary directory is served with PHP execution enabled, requesting the staged file can execute arbitrary PHP code with the web server process privileges, exposing or modifying recruiting data and the host system. This issue is fixed in version 0.10.0.

Technical POC Analysis

CWE-434: Unrestricted Upload of File with Dangerous Type.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

OpenCATS, an open-source applicant tracking system, contains a critical vulnerability (CVE-2026-54454) that could allow an authenticated user with Import privileges to execute arbitrary PHP code on the server, leading to full system compromise. This vulnerability affects all deployments prior to version 0.10.0 and, while exploitation requires a non-default server configuration, the potential for data theft or service disruption is significant. Leadership should prioritize upgrading to version 0.10.0 to protect sensitive recruitment data and maintain system integrity.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 67% exploitable
Prevalence
Low
niche open-source ATS used by staffing agencies, limited enterprise footprint
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.

CVE-2026-27760 CRITICAL POC
9.2 Apr 28

Remote code execution in OpenCATS installer allows unauthenticated attackers to inject and execute arbitrary PHP code by

CVE-2022-43019 CRITICAL POC
9.8 Oct 19

OpenCATS v0.9.6 was discovered to contain a remote code execution (RCE) vulnerability via the getDataGridPager's ajax fu

CVE-2021-41560 CRITICAL POC
9.8 Dec 15

OpenCATS through 0.9.6 allows remote attackers to execute arbitrary code by uploading an executable file via lib/FileUti

CVE-2021-25294 CRITICAL POC
9.8 Jan 18

OpenCATS through 0.9.5-3 unsafely deserializes index.php?m=activity requests, leading to remote code execution. Rated cr

CVE-2021-47936 CRITICAL POC
9.3 May 10

OpenCATS 0.9.4 contains a remote code execution vulnerability that allows unauthenticated attackers to execute arbitrary

CVE-2026-49489 HIGH POC
8.4 May 31

SQL injection in OpenCATS through 0.9.7.4 allows authenticated users to extract arbitrary database contents by injecting

CVE-2019-13358 HIGH POC
7.5 Jul 05

lib/DocumentToText.php in OpenCats before 0.9.4-3 has XXE that allows remote users to read files on the underlying opera

CVE-2022-43023 MEDIUM POC
6.5 Oct 19

OpenCATS v0.9.6 was discovered to contain a SQL injection vulnerability via the importID parameter in the Import viewerr

CVE-2022-43022 MEDIUM POC
6.5 Oct 19

OpenCATS v0.9.6 was discovered to contain a SQL injection vulnerability via the tag_id variable in the Tag deletion func

CVE-2022-43021 MEDIUM POC
6.5 Oct 19

OpenCATS v0.9.6 was discovered to contain a SQL injection vulnerability via the entriesPerPage variable. Rated medium se

CVE-2022-43020 MEDIUM POC
6.5 Oct 19

OpenCATS v0.9.6 was discovered to contain a SQL injection vulnerability via the tag_id variable in the Tag update functi

CVE-2023-27293 MEDIUM POC
6.1 Feb 28

Improper neutralization of input during web page generation allows an unauthenticated attacker to submit malicious Javas

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy