Skip to main content

risesoft-y9 WorkFlow-Engine CVE-2026-102616

| EUVDEUVD-2026-89335 MEDIUM
Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection') (CWE-74)
2026-09-29 cna@vuldb.com GHSA-4pwj-27hr-h3gw
5.5
CVSS 4.0 · Vendor: vuldb
View

Attack ChainAIDerived

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

  1. Access
    Reach workflow query endpoint over network
  2. Exploit
    Inject SQL via year/processInstanceId parameter
  3. Execution
    Sink executes tainted query in getByIdAndYear
  4. Impact
    Read or tamper with database records

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Input neutralization, injection prevention
Exploitation Conditions

Exploitation targets the getByIdAndYear function reached through the OAuth2 Resource Filter component of risesoft-y9 WorkFlow-Engine (versions up to 9.6.10), by supplying malicious input in the 'year' and/or 'processInstanceId' parameters, either of which is independently injectable. The vendor rates this as remotely reachable with no privileges (PR:N) and no user interaction, but the 'OAuth2 Resource Filter' component name suggests a valid OAuth2 access token may actually be required to reach the vulnerable endpoint - defenders should confirm whether the endpoint is exposed pre-authentication. Limiting factors: the product is a niche self-hosted workflow engine, so exposure depends on the instance being internet-reachable, and with no vendor patch available mitigation relies on WAF/input filtering or restricting endpoint access.

Impact

This is a low-to-moderate real-world risk despite being a publicly-exploitable, potentially unauthenticated SQL injection. The vendor CVSS 4.0 base score is 5.5 with all impact metrics rated Low (VC:L/VI:L/VA:L), reflecting a partial-impact SQLi rather than full database compromise or RCE, and the vendor vector already encodes E:P (proof-of-concept exploit maturity), consistent with the description's statement that 'the exploit is now public.' There is no CISA KEV listing and no EPSS score supplied, so there is no evidence of active or widespread exploitation - only that exploit code exists (do not conflate the two). The strongest aggravating factors are the network attack vector (AV:N), low attack complexity (AC:L), and PR:N in the vendor vector, meaning the vendor believes no authentication is required. However, there is a signal conflict: the affected component is described as the 'OAuth2 Resource Filter,' which normally implies a valid access token is needed to reach the endpoint, yet the vendor rated PR:N - this tension should be verified against the actual endpoint's auth requirements, as it materially changes exploitability. There is also no official patch or fixed version identified and the vendor did not respond to disclosure, so remediation depends on VulDB/researcher data only. Overall: a genuine, exploitable defect worth patching, but the Low impact ratings and niche product footprint keep it below high priority for most organizations.

Exploit ScenarioDerived

A remote attacker sends a crafted request to the workflow engine's historic-process query endpoint, injecting SQL through the 'year' or 'processInstanceId' parameter consumed by getByIdAndYear in CustomHistoricProcessServiceImpl.java. Because the sink is injectable at two independent positions, the attacker can read or partially manipulate workflow/process data in the backing database. Public exploit code (POC) is already available per the disclosure and the linked VulDB/GitHub write-up.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 29, 2026

SQL injection in risesoft-y9 WorkFlow-Engine (all versions up to and including 9.6.10) lets a remote attacker manipulate the 'year' and 'processInstanceId' arguments passed to the getByIdAndYear function of CustomHistoricProcessServiceImpl.java, with two independent injectable sink positions rather than one. Publicly available exploit code exists (there is no CISA KEV listing, so active exploitation is not confirmed), and the vendor was contacted early but never responded or shipped a fix. The vendor-supplied vector rates the flaw unauthenticated (PR:N), while the independent assessment scores it PR:L because the affected code path sits behind the product's OAuth2 Resource Filter and may require a valid access token; defenders should determine whether the endpoint is reachable before authentication. Impact is bounded (low confidentiality, integrity and availability), so this is a low-to-moderate real-world risk that hinges on whether a given self-hosted instance is internet-exposed.

RemediationAI

No vendor-released patch is identified at time of analysis - the vendor was contacted early about this disclosure and did not respond, and no fixed version number is available from the input data, so upgrading is not currently an option. Because the flaw lives in application code that every accepted token reaches, the most effective compensating control is code-level: replace the concatenation in CustomHistoricProcessServiceImpl.getByIdAndYear with bound parameters (MyBatis #{} placeholders, JPA named parameters, or PreparedStatement), coerce 'year' to an integer and validate 'processInstanceId' against its expected identifier format, and audit both sink positions since either one alone is exploitable. Until that change is deployed, restrict the affected OAuth2 resource-server endpoints to trusted networks or internal service consumers (trade-off: breaks legitimate remote/workflow-history access for external clients), enforce strict input validation or a WAF rule rejecting SQL metacharacters such as quote, comment and boolean-operator sequences in the 'year' and 'processInstanceId' query parameters (trade-off: can cause false positives on malformed but legitimate requests), and confirm whether the endpoint is actually reachable without a valid OAuth2 token, since vendor PR:N and independent PR:L disagree - if it is, treat unauthenticated internet exposure as the worst case. Monitor https://vuldb.com/vuln/411406 and the researcher write-up at https://github.com/fangtang7/CVE/blob/main/WorkFlow-Engine/sql.md for a vendor patch, and re-check the GitHub source repository for a fixed release once the maintainer responds.

Affected VersionsENISA

WorkFlow-Engine 9.6.1
WorkFlow-Engine 9.6.7
WorkFlow-Engine 9.6.4
WorkFlow-Engine 9.6.2
WorkFlow-Engine 9.6.9
WorkFlow-Engine 9.6.0
WorkFlow-Engine 9.6.3
WorkFlow-Engine 9.6.5
WorkFlow-Engine 9.6.8
WorkFlow-Engine 9.6.10
WorkFlow-Engine 9.6.6

Affected Packages

euvd workflow_engine no fix

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 class is CWE-74 (improper neutralization of special elements used in a downstream component, i.e. injection), realized here as classic SQL injection in a Java component. The affected code is a custom implementation, CustomHistoricProcessServiceImpl.java, which implements a getByIdAndYear lookup - almost certainly a historic process-instance query in a workflow/BPM engine that normally sits on top of a persistence layer such as MyBatis, JPA or raw JDBC. The vulnerability indicates the 'year' and 'processInstanceId' arguments are concatenated into the query text instead of being bound as parameters, and the advisory explicitly notes the sink is injectable at two independent positions, meaning both parameters must be neutralized, not just the more obvious one. The described affected component is the OAuth2 Resource Filter, which is the Spring Security resource-server filter chain that validates bearer tokens before dispatching to the controller; this matters because the reachability of the vulnerable service method depends on how the resource-server configuration maps protected paths, and it is the basis for the disagreement between the vendor's PR:N vector and the independent PR:L assessment. The product is a relatively niche, self-hosted Chinese workflow engine, so real-world exposure is aggregate rather than mass-scale, and no CPE identifiers were supplied in the input data.

Know when Java 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 (vuldb) PRIMARY 5.5 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
vuln.today AI 6.3 MEDIUM

Network SQLi with low complexity; PR:L because the OAuth2 Resource Filter component implies a valid token is needed, and Low C/I/A matches a partial-impact injection rather than full DB compromise.

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

Primary rating from Vendor (vuldb).

CVSS VectorVendor: vuldb

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

A vulnerability was detected in risesoft-y9 WorkFlow-Engine up to 9.6.10. Impacted is the function getByIdAndYear of the file CustomHistoricProcessServiceImpl.java of the component OAuth2 Resource Filter. Performing a manipulation of the argument year/processInstanceId results in sql injection. Remote exploitation of the attack is possible. The exploit is now public and may be used. The sink is injectable on two independent positions, not just one. The vendor was contacted early about this disclosure but did not respond in any way.

Threat Intelligence Overview

EPSS Score
0.3%
Top 85% exploitable
Prevalence
Low
niche Chinese open-source enterprise workflow engine, limited production footprint
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.3%
Patch available No
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
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

28
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +28
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.

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

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