SnailJob CVE-2025-14674
MEDIUMAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to snail-job console/API (PR:L)
-
DeliverySubmit crafted expression to job/trigger field
-
ExploitInput reaches QLExpressEngine.doEval
-
ExecutionEngine evaluates attacker expression
-
ImpactInjected 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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.
Primary rating from Vendor (vuldb).
CVSS VectorVendor: vuldb
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
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
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
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
NVD
CVE.org
EPSS
VulDB
GitHub PoC
Exploit-DB