Skip to main content

ProcessMaker CVE-2026-107803

| EUVDEUVD-2026-95777 MEDIUM
SQL Injection (CWE-89)
2026-10-09 GitHub_M
6.5
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 low-privilege ProcessMaker account
  2. Delivery
    Send GET /api/1.0/tasks with malicious order_by
  3. Exploit
    Injected SQL executes in process_requests subquery
  4. Execution
    Blind time-based inference of query results
  5. Impact
    Exfiltrate 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – 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

ProcessMaker < 2026.14.3

Affected Packages

euvd processmaker fix: 2026.14.3

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

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 6.5 MEDIUM

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Oct 09, 2026 - 15:17 EUVD

DescriptionCVE.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

EPSS Score
0.2%
Top 85% exploitable
Prevalence
Low
niche open-source BPM/workflow suite, limited broad 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

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