Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain control of JDBC connection string
-
ExploitSet 'logger' to a classpath-resident class
-
ExecutionLogFactory reflectively instantiates via String constructor
-
ImpactTrigger constructor side effects on client
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V15 - Secure Coding and Architecture Reflection safety, class allowlisting
|
| Exploitation Conditions | The attacker must control the JDBC 'logger' connection parameter - supplied either in the JDBC URL or in connection properties - which names the logger class that LogFactory loads. Exploitation additionally requires that a class with a String-argument constructor and exploitable construction side effects already exists on the client's classpath, since the driver instantiates the named class before the (missing) Log subtype check. Limiting factors: this is NOT remote-unauthenticated against a default configuration - it requires the ability to influence connection configuration (local/config-level access, PR:L) and the presence of a suitable gadget class, which makes the attack high-complexity (AC:H). Affected versions are JDBC 1.1.0 and later 2.x/3.x/5.x/6.x (through 6.0.6) and 7.0.0-RC1/RC2/RC3; fixed in 7.0.0-LTS. |
| Impact | The provided CVSS 3.1 vector (AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H, base 7.0 High) describes a constrained, precondition-heavy flaw rather than a mass-exploitable one. AV:L and PR:L together mean the attacker must already be able to influence the application's JDBC connection configuration (URL or connection properties), and AC:H reflects the dependency on a suitable loadable 'gadget' class with an exploitable String-argument constructor being present on the client classpath. No EPSS score, no CISA KEV listing, and no PoC were supplied, so exploitation status is 'no public exploit identified at time of analysis' - this is an unsafe-reflection (CWE-470) hardening gap, not an actively exploited bug. The C:H/I:H/A:H impact is largely theoretical/gadget-dependent: by itself the defect only instantiates an attacker-named class via its String constructor before the asSubclass type check, so actual confidentiality/integrity/availability impact hinges entirely on what is already on the classpath. The 'Information Disclosure' tag understates the broader class-loading/construction-side-effect nature of the issue. Net assessment: lower real-world priority than the 7.0 implies for most deployments - prioritize patching where connection strings are attacker-influenceable (multi-tenant apps, config-injection exposure). One signal to verify: AV:L assumes connection parameters are set via local/config control; if an application accepts JDBC connection parameters from untrusted network input, the effective attack vector could be closer to network - verify against the actual deployment. |
| Exploit ScenarioDerived | An attacker who can influence an application's JDBC connection URL or properties (e.g., via config injection or an application that builds the connection string from untrusted input) sets the 'logger' parameter to the name of a class already present on the client classpath. When the driver connects, LogFactory loads and reflectively instantiates that class through its String constructor before any type validation, triggering unintended class loading and constructor side effects on the client host. No public PoC exists; realized impact depends on a suitable gadget class being available, consistent with the AC:H rating. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Unsafe reflective class loading in openGauss-connector-jdbc's LogFactory lets an attacker who controls the JDBC 'logger' connection parameter (URL or connection properties) force the driver to instantiate an arbitrary class present on the client classpath via its String-argument constructor before any Log subtype check occurs, enabling unintended class-loading and constructor side effects. Affected builds run from JDBC 1.1.0 through the 2.x/3.x/5.x/6.x lines (including 6.0.6) and 7.0.0-RC1/RC2/RC3; the flaw is fixed in 7.0.0-LTS. Exploitation is precondition-heavy - local/config-level influence over connection settings (CVSS 7.0, AV:L/AC:H/PR:L) plus a suitable gadget class on the classpath - and no public exploit has been identified at time of analysis.
RemediationAI
Upgrade to openGauss-connector-jdbc 7.0.0-LTS, which applies asSubclass(Log.class) immediately after Class.forName so only Log subclasses are constructed; the change is visible in PR https://gitcode.com/opengauss/openGauss-connector-jdbc/pull/423. Where upgrading is not yet possible, treat the 'logger' connection parameter as a security-sensitive setting: never derive it from untrusted input (user-supplied URLs, tenant configuration, environment variables controlled by lower-privileged parties), and enforce a strict allowlist of expected logger class names (for example the built-in JDBC/SLF4J logger implementations) at the configuration layer - the trade-off is that legitimate custom logger integrations must be registered explicitly. Additionally reduce the client classpath to only required libraries to shrink the pool of String-constructor gadget classes an attacker could reach, and restrict who can modify JDBC URL/connection properties in applications that accept them from external sources.
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
The flaw is CWE-470 (Use of Externally-Controlled Input to Select Classes or Code / unsafe reflection) in pgjdbc/src/main/java/org/postgresql/log/LogFactory.java. LogFactory reads a logger class name from the JDBC connection parameters, loads it with Class.forName, then immediately reflectively invokes the String-argument constructor and casts the result to Log. Because asSubclass(Log.class) is applied only after instantiation (or not enforced before construction), any class on the client classpath - not just Log implementations - is constructed first and only then rejected by the type check, so constructors with side effects execute. The driver's classpath is the trust boundary: Java reflection plus classpath gadget classes make this a client-side class-loading/influence issue rather than a database-side one. The fix reorders the logic to call asSubclass(Log.class) right after Class.forName, so only Log subclasses can reach the constructor.
Know when Opengauss 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:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Attacker must control connection configuration (AV:L, PR:L) and rely on a classpath gadget with a usable String constructor (AC:H); impact is gadget-dependent but can reach full C/I/A.
Primary rating from Vendor (a1a479f7-907b-4ae8-a999-9148cadc9224).
CVSS VectorVendor: a1a479f7-907b-4ae8-a999-9148cadc9224
DescriptionCVE.org
在 openGauss-connector-jdbc 的 pgjdbc/src/main/java/org/postgresql/log/LogFactory.java 中,LogFactory 根据 JDBC 连接参数中的 logger 类名调用 Class.forName 加载类后,直接反射调用以 String 为参数的构造函数,再转换为 Log。缺少 asSubclass(Log.class) 校验,非 Log 实现类也会在类型检查前被实例化。因此,当攻击者可控制 JDBC URL 或连接属性中的 logger 类名,且客户端 classpath 中存在可被加载的类时,可能在客户端触发非预期的类加载与构造副作用。
此漏洞自 JDBC 1.1.0引入,影响 1.1.0 及之后的 2.x、3.x、5.x、6.x 各版本及补丁(含 6.0.0 分支最新 6.0.6),以及 7.0.0-RC1、7.0.0-RC2、7.0.0-RC3,并在 7.0.0-LTS 版本修复。修复在 Class.forName 之后先执行 asSubclass(Log.class),仅允许 Log 子类进入构造。修复pr见https://gitcode.com/opengauss/openGauss-connector-jdbc/pull/423。
Executive ViewAI
A high-severity flaw in the openGauss JDBC driver (versions 1.1.0 through 6.0.6, plus 7.0.0-RC1/RC2/RC3) allows anyone who can influence the driver's 'logger' connection setting to force the loading of an arbitrary class on the client's classpath, potentially triggering attacker-chosen code before any validation occurs. The exposure is limited to systems where configuration or connection strings are not fully trusted and where a suitable class already sits on the application server, but the consequence - code execution inside the JVM of a database-connected service - is significant. Engineering and platform owners should care because the driver is embedded in application code rather than patched centrally, so remediation depends on rebuilding and redeploying dependent services.
Apply vendor patch (upgrade to 7.0.0-LTS). For estates that cannot upgrade immediately, block the JDBC 'logger' connection parameter from untrusted or externally supplied configuration, restrict write access to application connection settings, and remove unnecessary gadget-capable classes from the client classpath.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
An issue in Huawei Technologies opengauss (openGauss 5.0.0 build) v.7.3.0 allows a local attacker to cause a denial of s
Missing authorization in openGauss Server 3.0.0 through 6.0.0 lets any authenticated low-privilege database user read ra
EUVD-2026-104058
GHSA-4fmq-r5rm-vvmw
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB