Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with low-privilege ProcessMaker account
-
DeliverySend GET /api/1.0/tasks with malicious order_by
-
ExploitInjected SQL executes in process_requests subquery
-
ExecutionBlind time-based inference of query results
-
ImpactExfiltrate database-accessible data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated ProcessMaker session (any low-privilege user account suffices - PR:L) and access to the GET /api/1.0/tasks REST endpoint, which is a core default-enabled API in affected ProcessMaker builds prior to 2026.14.3. The specific trigger is supplying a malicious column name in the order_by request parameter, which reaches the unvalidated DB::raw() subquery in TaskControllerIndexMethods::applyColumnOrdering(). The principal limiting factors are: (1) valid credentials are mandatory, so purely anonymous exploitation is not possible; (2) the injection is blind/time-based, requiring many requests and increasing noise/time cost; and (3) extracted data is bounded by the privileges of the ProcessMaker database account. No non-default configuration or user interaction is needed. |
| Impact | This is a genuine but moderate-priority issue rather than an urgent one. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, base 6.5) indicates a network-reachable, low-complexity attack requiring low-privilege authentication, with high confidentiality impact but no integrity or availability impact - consistent with a blind, time-based SQL injection used for data exfiltration. The description and the GitHub PR diff (pull/9041, commit 2622b7a) independently confirm the root cause: unvalidated concatenation of a user-controlled column name into a DB::raw() subquery in TaskControllerIndexMethods::applyColumnOrdering(), fixed by an allow-list of process_requests/token columns. No EPSS score, CISA KEV listing, POC, or SSVC decision data was supplied, so exploitation probability cannot be quantified; the absence of these signals is not evidence of safety but does argue against widespread automated exploitation at this time. The key limiting factor is that any valid authenticated account is required (PR:L), which restricts the attacker population to insiders or anyone who has obtained ProcessMaker credentials, and confines the blast radius to data reachable by the ProcessMaker DB account. Signals are internally consistent (CVSS confidentiality-only impact matches a read-oriented blind SQLi); no conflicts requiring vendor verification were identified. |
| Exploit ScenarioDerived | An attacker holding any valid ProcessMaker account sends GET /api/1.0/tasks requests with a crafted order_by parameter that injects a boolean/time-based SQL condition into the process_requests ordering subquery. By observing response timing differences across many requests, they infer and exfiltrate database contents (other users' case data, credentials, or tokens) one bit at a time. No public exploit code was identified in the provided data, but the simple network-reachable vector (AV:N/AC:L) makes manual exploitation with standard tooling straightforward. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Authenticated SQL injection in ProcessMaker's task listing API (GET /api/1.0/tasks) allows any low-privilege user with a valid session to inject a malicious column name through the order_by parameter and extract data from the underlying database using blind, time-based queries. All ProcessMaker builds prior to 2026.14.3 that expose the default core REST API are affected (CPE cpe:2.3:a:processmaker:processmaker:*:*:*:*:*:*:*:*); because the injection is blind and extraction is bounded by the privileges of the ProcessMaker database account, this is assessed as a genuine but moderate-priority issue rather than an urgent one. There is no confirmed active exploitation (not in CISA KEV) and no public exploit code identified at time of analysis, though the vulnerability is trivially reachable once credentials are obtained and does not require user interaction or non-default configuration.
RemediationAI
Vendor-released patch: upgrade ProcessMaker to version 2026.14.3 or later, which is the release containing the allowlist-based fix (pull request https://github.com/ProcessMaker/processmaker/pull/9041, commit 2622b7ae810e02c47157028331c45470567e7b79) for TaskControllerIndexMethods::applyColumnOrdering(); consult the vendor advisory at https://github.com/ProcessMaker/processmaker/security/advisories/GHSA-xf7p-gp7c-w7gh for the official guidance and verify the upgrade by confirming the release tag v2026.14.3 is deployed. If immediate upgrade is not possible, apply layered compensating controls knowing each has trade-offs: restrict network access to the ProcessMaker REST API so that /api/1.0/tasks is reachable only from trusted administrative networks or behind an authenticated reverse proxy (this blocks external attackers but does not stop a malicious or compromised low-privilege account); deploy a WAF or API gateway rule that rejects order_by and order_direction values containing SQL metacharacters such as parentheses, spaces, quotes, comments, or subquery keywords (effective against naive payloads but bypassable with encoding and prone to false positives on legitimate column names); and reduce the blast radius by running the ProcessMaker database account with least privilege, removing access to unrelated schemas, DML privileges, and file or information_schema objects so that successful blind injection cannot pivot (this limits data loss but may break features that rely on broader database permissions). Additionally, monitor ProcessMaker and database logs for repeated or unusually slow requests to /api/1.0/tasks with suspicious order_by values, and invalidate credentials of any account suspected of exploitation given that valid authentication is a hard prerequisite.
Affected VersionsENISA
Affected Packages
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
ProcessMaker is an open-source PHP/Laravel workflow and business process management suite whose REST API exposes task listings for authenticated users. The root cause is CWE-89 (SQL Injection): ProcessMaker\Traits\TaskControllerIndexMethods::applyColumnOrdering() parsed the user-supplied order_by parameter, split it on dots to separate a table prefix from a column name, and then concatenated the resulting column name directly into a DB::raw() subquery of the form (select <columnName> from process_requests where process_requests.id = process_request_tokens.process_request_id). Because Laravel's DB::raw() performs no escaping or parameter binding, an attacker-controlled value placed in the process_requests.* prefix path is emitted verbatim into the SQL statement, allowing arbitrary SQL to be injected into the ORDER BY clause of the task index query. Exploitation is blind: results are not reflected in the response, so the attacker must use time-based (or equivalent boolean/error-based) inference to reconstruct data, and the reachable data is limited to what the ProcessMaker database account can read. The upstream fix (PR #9041, commit 2622b7ae810e02c47157028331c45470567e7b79, release v2026.14.3) replaces the raw subquery construction with an explicit allowlist of process_requests and process_request_tokens column names, a whitelist pattern for JSON data.* paths, and a leftJoin against process_requests, eliminating string concatenation of user input into SQL.
Know when Processmaker 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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Network-reachable API with any authenticated account (PR:L, AV:N, AC:L); blind SQLi enables reading DB-account-accessible data (C:H) but no write or disruption, so I:N/A:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
ProcessMaker is an open source workflow management software suite. Prior to 2026.14.3, the GET /api/1.0/tasks endpoint in ProcessMaker is vulnerable to SQL injection through the order_by parameter because ProcessMaker\Traits\TaskControllerIndexMethods::applyColumnOrdering() concatenates a user-controlled process_requests column name into a DB::raw() SQL subquery without validation or parameter binding. Any authenticated user can use blind, time-based queries to infer and extract data accessible to the ProcessMaker database account. This issue is fixed in version 2026.14.3.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
More in Processmaker
View allProcessMaker before v3.5.4 was discovered to contain insecure permissions in the user profile page. Rated high severity
SQL injection vulnerability exists in the handling of sort parameters in ProcessMaker 3.4.11. Rated high severity (CVSS
The sort parameter in the download page /sysworkflow/en/neoclassic/reportTables/reportTables_Ajax is vulnerable to SQL i
ProcessMaker 3.5.4 contains a local file inclusion vulnerability that allows unauthenticated attackers to read arbitrary
EUVD-2026-95777
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB