Skip to main content

SnailJob CVE-2025-14674

MEDIUM
Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection') (CWE-74)
2025-12-14 cna@vuldb.com
5.3
CVSS 4.0 · Vendor: vuldb
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to snail-job console/API (PR:L)
  2. Delivery
    Submit crafted expression to job/trigger field
  3. Exploit
    Input reaches QLExpressEngine.doEval
  4. Execution
    Engine evaluates attacker expression
  5. Impact
    Injected logic executes server-side

Vulnerability Assessment

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

Requires authenticated access to snail-job (CVSS PR:L) and the ability to reach a code path that feeds attacker-controlled input into QLExpressEngine.doEval - i.e., a snail-job feature that evaluates user-supplied QLExpress expressions (such as job workflow/decision or routing expression fields). Exploitation targets deployments running snail-job version 1.6.0 or earlier; no user interaction is required (UI:N). The primary limiting factors are the authentication requirement (not exploitable pre-auth) and dependence on exposure of an expression-evaluation feature to the authenticated attacker.

Impact

The only quantitative signal provided is the vendor (VulDB) CVSS 4.0 base vector CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L (5.3, Medium). This describes a network-reachable, low-complexity flaw requiring low-level authentication (PR:L) with limited confidentiality/integrity/availability impact and no scope change. No EPSS probability, no CISA KEV listing, and no explicitly claimed proof-of-concept are present in the input, so exploitation is not confirmed in the wild. The most notable tension is between the modest vendor impact rating (all sub-metrics 'Low') and the underlying weakness class: CWE-74 injection into the QLExpress expression engine (QLExpressEngine.doEval). QLExpress evaluates dynamic expressions and can commonly invoke Java methods, so an unsandboxed expression injection often escalates to arbitrary code execution - which would justify considerably higher impact than VC:L/VI:L/VA:L. The vendor's Low rating may reflect a constrained/sandboxed evaluation context, but this is not stated and should be verified against the patch (commit 978f316c) and the linked Gitee issue ICNUG0. Net: this is a real, patch-available injection flaw but not a widespread-exploitation emergency - the PR:L authentication requirement and absence of KEV/EPSS/POC signals keep real-world priority low-to-moderate, with the caveat that actual impact could be higher than the published score if the expression engine reaches arbitrary Java execution.

Exploit ScenarioDerived

An authenticated user of the snail-job console/API submits a crafted expression (e.g., in a job trigger, routing, or workflow decision field) that is passed to QLExpressEngine.doEval, causing the QLExpress engine to evaluate attacker-controlled logic on the server. Depending on how tightly the engine is sandboxed, this yields at minimum information/logic manipulation and potentially arbitrary Java method invocation. No public exploit code is identified in the provided data, though a fix commit and issue thread are public.

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

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

Alert me

AnalysisAIv1 – Sep 28, 2026

SnailJob (aizuda snail-job), a Java-based distributed job scheduling platform, up to and including version 1.6.0 contains an injection flaw in QLExpressEngine.doEval, where attacker-supplied input is passed into the QLExpress expression engine without adequate neutralization (CWE-74). An attacker who is authenticated to the SnailJob console (CVSS PR:L) and can reach a feature that evaluates user-controlled QLExpress expressions - for example job workflow/decision or routing expression fields - can inject expression syntax remotely with no user interaction, achieving limited confidentiality, integrity, and availability impact as scored by the vendor (VulDB CVSS 4.0 base 5.3, Medium; independently assessed as CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L). No public exploit code has been identified at time of analysis, and the issue is fixed by upgrading to version 1.7.0-beta1 (commit 978f316c38b3d68bb74d2489b5e5f721f6675e86).

RemediationAI

Upgrade SnailJob to version 1.7.0-beta1 or later - this is the vendor-released patch (release: https://gitee.com/aizuda/snail-job/releases/tag/vsj1.7.0-beta1, fixing commit 978f316c38b3d68bb74d2489b5e5f721f6675e86, tracked in issue https://gitee.com/aizuda/snail-job/issues/ICNUG0); note the fix is published as a beta tag, so validate it in a staging environment against your job/workflow definitions before promoting it to production, and confirm whether a later stable release supersedes it. If an immediate upgrade is not possible, apply compensating controls that match the exploitation prerequisites: restrict authentication and role assignment in the SnailJob console so that only fully trusted operators can create or edit job workflow, decision-branch, and routing configurations that reach QLExpressEngine.doEval - the trade-off is reduced self-service for tenant or low-privilege users; where the expression feature is not operationally required, disable or avoid configuring QLExpress-based decision/routing expressions entirely, which removes the attack surface but breaks jobs that depend on dynamic branching; and limit network exposure of the SnailJob server/console (bind to internal interfaces, place behind VPN or a reverse proxy with strong authentication) so that any authenticated foothold still requires access to the management surface. Because exploitation requires authenticated access, enforcing least privilege, rotating any credentials that may have been used to reach the expression features, and reviewing audit logs for suspicious job definitions or expression edits are useful detection-side actions while the patch is being rolled out. Separately, the upstream commit can be reviewed to backport the expression-evaluation hardening into a self-maintained 1.6.0 build if an upgrade is blocked.

Affected Packages

maven com.aizuda:snail-job fix: 1.7.0-beta1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in maven

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

SnailJob is an open-source distributed task/job scheduling framework for Java. The affected code lives in the module snail-job-common, specifically snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/expression/strategy/QLExpressEngine.java, whose doEval method delegates expression evaluation to QLExpress, a Java library for evaluating dynamic expressions. Because the engine evaluates expression text that can be influenced by a user (for example in workflow decision/branch or routing configuration), and because it does not constrain the expression language or the classes/methods reachable from it, the flaw falls under CWE-74 (improper neutralization of special elements - 'injection'). In effect this is a Java expression/code injection class issue: the boundary between data (the expression string) and code (what the expression engine is allowed to execute) is not enforced. The vulnerability's practical reach is bounded by two prerequisites: the attacker must already be authenticated to the SnailJob application (CVSS 4.0 vector PR:L; independently assessed as PR:L), and the deployment must expose a feature that feeds attacker-controlled input into the expression engine. The upstream patch is delivered via the v1.7.0-beta1 release and the referenced Gitee commit, which indicates the fix tightens how expressions are evaluated by the engine rather than altering the calling code only.

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.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
vuln.today AI 6.3 MEDIUM

Network-reachable, low-complexity, requires low-privilege authentication (PR:L); aligned to vendor's Low impacts (C:L/I:L/A:L) though QLExpress injection could plausibly warrant higher if it reaches arbitrary Java execution.

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
Low
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 found in aizuda snail-job up to 1.6.0. Affected by this vulnerability is the function QLExpressEngine.doEval of the file snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/expression/strategy/QLExpressEngine.java. The manipulation results in injection. The attack can be launched remotely. Upgrading to version 1.7.0-beta1 addresses this issue. The patch is identified as 978f316c38b3d68bb74d2489b5e5f721f6675e86. The affected component should be upgraded.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Low
Niche open-source Java distributed job scheduler, popular mainly in China
Data Quality
3 sources
Confidence: Low

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 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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

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