CVE-2026-93295: MISP Background Job Argument Injection via Console Path Switches Enables Remote Code Execution
MISP contains a vulnerability in its background job dispatch mechanism that allows remote code execution as the web user. Background job arguments are passed directly as the argv of the CakePHP console process. CakePHP's ShellDispatcher::parsePaths() scans the entire argv for path switches (-app, --app, -working, --working, -root, --root, -webroot, --webroot) and uses the following element as the application root. The events/contact endpoint passes user-controlled fields (message and person) into job arguments without validation. An attacker who can submit the contact form can set the person field to a reserved switch (e.g., -app) and the message field to a phar:// URI pointing to a malicious archive. The CakePHP bootstrap then includes Config/core.php from within that archive, executing attacker-controlled PHP code with the privileges of the web user. The vulnerability requires the ability to submit the events/contact form (or any other endpoint that forwards user input into background job arguments). No special timing or race condition is required; the attack is deterministic once the crafted parameters are accepted. The impact is full remote code execution in the context of the MISP web server process, allowing data exfiltration, persistence, and lateral movement within the host.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Implement/enable validation in BackgroundJobsTool::enqueue() to reject any job argument that matches a reserved CakePHP console path switch: -app, --app, -working, --working, -root, --root, -webroot, --webroot; throw InvalidArgumentException before the job is queued.
MISP BackgroundJobsTool::enqueue() reserved CakePHP console path switch argument validation = reject
Event History
Frequently Asked Questions
Who can realistically exploit this issue?
An attacker needs to be able to submit the events/contact form, or another endpoint that forwards user-controlled input into background-job arguments. The described exploit uses the contact form's person and message fields.
What access and conditions are required for exploitation?
No special timing or race condition is required. Exploitation is deterministic once crafted parameters are accepted, and code executes with the privileges of the web user.
How does an attacker supply the malicious payload?
The attacker sets a user-controlled argument such as person to a CakePHP path switch like -app and supplies a phar:// URI pointing to a malicious archive in another field such as message. CakePHP then treats the following argument as an application path and includes Config/core.php from the archive.
What can be done if patching is not immediately possible?
Restrict access to the events/contact form and any other endpoint that places user input directly into background-job arguments. Prevent untrusted users from submitting values that can reach CakePHP console invocation arguments.