OpenCATS unauthenticated RCE (CVE-2021-47936)
CVE-2021-47936
CVE-2021-47936: OpenCATS 0.9.4 unauthenticated RCE via PHP file upload to job application endpoint (CVSS 9.8). No patch available; remove the careers module or restrict upload directories.
Patch now - CVE-2021-47936 is a critical unauthenticated remote code execution vulnerability in OpenCATS 0.9.4 that lets attackers upload arbitrary PHP files disguised as resume attachments and execute system commands. No vendor patch is available; users must apply immediate mitigations.
Overview
CVE-2021-47936 affects OpenCATS version 0.9.4, an open-source applicant tracking system. The vulnerability resides in the careers job application endpoint, which allows unauthenticated file uploads. Attackers can upload a malicious PHP file (e.g., a web shell) disguised as a resume document (.doc, .pdf). Once uploaded, the file resides in the application’s uploads directory. The attacker can then send a POST request directly to that file, causing the PHP code to execute on the server. The CVSS score of 9.8 reflects the low attack complexity and the fact that no authentication or user interaction is required.
Impact
Successful exploitation grants an unauthenticated attacker full remote code execution with the privileges of the web server user. This typically means the attacker can:
- Read, modify, or delete application data and configuration files.
- Execute arbitrary system commands to enumerate the environment.
- Use the compromised server as a foothold for lateral movement within the internal network.
- Deface the application or deploy ransomware.
Because the attacker gains shell-level access, the impact can compromise the confidentiality, integrity, and availability of the entire host server.
Remediation and Mitigation
As of this writing, no official patch has been released for OpenCATS 0.9.4. Until a fix is provided, apply the following mitigations:
- Disable the careers module if your deployment does not require unauthenticated job applications. This removes the vulnerable upload endpoint.
- Restrict the uploads directory to prevent PHP execution. Use web server configuration (
.htaccessfor Apache,locationblocks for Nginx) to deny access to.phpfiles in the upload directory. - Implement a WAF rule (e.g., ModSecurity) to block file uploads with double extensions or PHP content types.
- Monitor access logs for POST requests to recently uploaded PHP files in the upload path.
If you must keep the module online, consider using a containerized deployment with read-only filesystem permissions.
Security Insight
This vulnerability is a textbook case of an insecure file upload function lacking validation - a common pattern in older open-source HR and recruitment applications. CVE-2021-47936 highlights the risk of allowing unauthenticated file uploads without strict content-type verification or sandboxing. For threat intelligence on similar recruitment-platform RCEs, see related breach reports and security news.
Further Reading
Never miss a critical vulnerability
Get real-time security alerts delivered to your preferred platform.
Related Advisories
WordPress MStore API 2.0.6 contains an arbitrary file upload vulnerability that allows unauthenticated attackers to upload malicious files by sending POST requests to the REST API endpoint. Attackers ...
Arelle before 2.39.10 contains an unauthenticated remote code execution vulnerability in the /rest/configure REST endpoint that accepts a plugins query parameter and forwards it to the plugin manager ...
marimo is a reactive Python notebook. Prior to 0.23.0, Marimo has a Pre-Auth RCE vulnerability. The terminal WebSocket endpoint /terminal/ws lacks authentication validation, allowing an unauthenticate...
OneUptime is an open-source monitoring and observability platform. Prior to version 10.0.42, unauthenticated access to Notification test and Phone Number management endpoints allows SMS/Call/Email/Wha...