CVE-2026-111440 (GCVE-0-2026-111440)
Vulnerability from cvelistv5
Published
2026-10-19 03:55
Modified
2026-10-19 17:39
Severity ?
VLAI Severity ?
EPSS score ?
CWE
- CWE-470 - Use of Externally-Controlled input to select classes or code ('unsafe reflection')
Summary
在 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。
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| openGauss-server | openGauss-connector-jdbc |
Version: 1.0.0, 1.0.1, 1.1.0 Version: 2.0.0, 2.1.0 Version: 3.0.0-3.0.5 Version: 3.1.0-3.1.1 Version: 5.0.0-5.0.3 Version: 5.1.0 Version: 5.0.0-RC1 Version: 6.0.0-RC1 Version: 6.0.0-6.0.6 Version: 7.0.0-RC1, 7.0.0-RC2, 7.0.0-RC3 |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-111440",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-19T17:39:30.858779Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T17:39:59.272Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://opengauss.org/zh/download/archive/?version=7.0.0-RC3",
"defaultStatus": "unaffected",
"platforms": [
"openEuler",
"Centos"
],
"product": "openGauss-connector-jdbc",
"vendor": "openGauss-server",
"versions": [
{
"status": "unaffected",
"version": "7.0.0-LTS"
},
{
"status": "affected",
"version": "1.0.0, 1.0.1, 1.1.0"
},
{
"status": "affected",
"version": "2.0.0, 2.1.0"
},
{
"status": "affected",
"version": "3.0.0-3.0.5"
},
{
"status": "affected",
"version": "3.1.0-3.1.1"
},
{
"status": "affected",
"version": "5.0.0-5.0.3"
},
{
"status": "affected",
"version": "5.1.0"
},
{
"status": "affected",
"version": "5.0.0-RC1"
},
{
"status": "affected",
"version": "6.0.0-RC1"
},
{
"status": "affected",
"version": "6.0.0-6.0.6"
},
{
"status": "affected",
"version": "7.0.0-RC1, 7.0.0-RC2, 7.0.0-RC3"
}
]
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u5728 openGauss-connector-jdbc \u7684 pgjdbc/src/main/java/org/postgresql/log/LogFactory.java \u4e2d\uff0cLogFactory \u6839\u636e JDBC \u8fde\u63a5\u53c2\u6570\u4e2d\u7684 logger \u7c7b\u540d\u8c03\u7528 Class.forName \u52a0\u8f7d\u7c7b\u540e\uff0c\u76f4\u63a5\u53cd\u5c04\u8c03\u7528\u4ee5 String \u4e3a\u53c2\u6570\u7684\u6784\u9020\u51fd\u6570\uff0c\u518d\u8f6c\u6362\u4e3a Log\u3002\u7f3a\u5c11 asSubclass(Log.class) \u6821\u9a8c\uff0c\u975e Log \u5b9e\u73b0\u7c7b\u4e5f\u4f1a\u5728\u7c7b\u578b\u68c0\u67e5\u524d\u88ab\u5b9e\u4f8b\u5316\u3002\u56e0\u6b64\uff0c\u5f53\u653b\u51fb\u8005\u53ef\u63a7\u5236 JDBC URL \u6216\u8fde\u63a5\u5c5e\u6027\u4e2d\u7684 logger \u7c7b\u540d\uff0c\u4e14\u5ba2\u6237\u7aef classpath \u4e2d\u5b58\u5728\u53ef\u88ab\u52a0\u8f7d\u7684\u7c7b\u65f6\uff0c\u53ef\u80fd\u5728\u5ba2\u6237\u7aef\u89e6\u53d1\u975e\u9884\u671f\u7684\u7c7b\u52a0\u8f7d\u4e0e\u6784\u9020\u526f\u4f5c\u7528\u3002\u003cbr\u003e\u003cbr\u003e\u6b64\u6f0f\u6d1e\u81ea JDBC 1.1.0\u5f15\u5165\uff0c\u5f71\u54cd 1.1.0 \u53ca\u4e4b\u540e\u7684 2.x\u30013.x\u30015.x\u30016.x \u5404\u7248\u672c\u53ca\u8865\u4e01\uff08\u542b 6.0.0 \u5206\u652f\u6700\u65b0 6.0.6\uff09\uff0c\u4ee5\u53ca 7.0.0-RC1\u30017.0.0-RC2\u30017.0.0-RC3\uff0c\u5e76\u5728 7.0.0-LTS \u7248\u672c\u4fee\u590d\u3002\u4fee\u590d\u5728 Class.forName \u4e4b\u540e\u5148\u6267\u884c asSubclass(Log.class)\uff0c\u4ec5\u5141\u8bb8 Log \u5b50\u7c7b\u8fdb\u5165\u6784\u9020\u3002\u4fee\u590dpr\u89c1https://gitcode.com/opengauss/openGauss-connector-jdbc/pull/423\u3002"
}
],
"value": "\u5728 openGauss-connector-jdbc \u7684 pgjdbc/src/main/java/org/postgresql/log/LogFactory.java \u4e2d\uff0cLogFactory \u6839\u636e JDBC \u8fde\u63a5\u53c2\u6570\u4e2d\u7684 logger \u7c7b\u540d\u8c03\u7528 Class.forName \u52a0\u8f7d\u7c7b\u540e\uff0c\u76f4\u63a5\u53cd\u5c04\u8c03\u7528\u4ee5 String \u4e3a\u53c2\u6570\u7684\u6784\u9020\u51fd\u6570\uff0c\u518d\u8f6c\u6362\u4e3a Log\u3002\u7f3a\u5c11 asSubclass(Log.class) \u6821\u9a8c\uff0c\u975e Log \u5b9e\u73b0\u7c7b\u4e5f\u4f1a\u5728\u7c7b\u578b\u68c0\u67e5\u524d\u88ab\u5b9e\u4f8b\u5316\u3002\u56e0\u6b64\uff0c\u5f53\u653b\u51fb\u8005\u53ef\u63a7\u5236 JDBC URL \u6216\u8fde\u63a5\u5c5e\u6027\u4e2d\u7684 logger \u7c7b\u540d\uff0c\u4e14\u5ba2\u6237\u7aef classpath \u4e2d\u5b58\u5728\u53ef\u88ab\u52a0\u8f7d\u7684\u7c7b\u65f6\uff0c\u53ef\u80fd\u5728\u5ba2\u6237\u7aef\u89e6\u53d1\u975e\u9884\u671f\u7684\u7c7b\u52a0\u8f7d\u4e0e\u6784\u9020\u526f\u4f5c\u7528\u3002\n\n\u6b64\u6f0f\u6d1e\u81ea JDBC 1.1.0\u5f15\u5165\uff0c\u5f71\u54cd 1.1.0 \u53ca\u4e4b\u540e\u7684 2.x\u30013.x\u30015.x\u30016.x \u5404\u7248\u672c\u53ca\u8865\u4e01\uff08\u542b 6.0.0 \u5206\u652f\u6700\u65b0 6.0.6\uff09\uff0c\u4ee5\u53ca 7.0.0-RC1\u30017.0.0-RC2\u30017.0.0-RC3\uff0c\u5e76\u5728 7.0.0-LTS \u7248\u672c\u4fee\u590d\u3002\u4fee\u590d\u5728 Class.forName \u4e4b\u540e\u5148\u6267\u884c asSubclass(Log.class)\uff0c\u4ec5\u5141\u8bb8 Log \u5b50\u7c7b\u8fdb\u5165\u6784\u9020\u3002\u4fee\u590dpr\u89c1https://gitcode.com/opengauss/openGauss-connector-jdbc/pull/423\u3002"
}
],
"impacts": [
{
"capecId": "CAPEC-138",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-138 Reflection Injection"
}
]
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "LOCAL",
"availabilityImpact": "HIGH",
"baseScore": 7,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-470",
"description": "CWE-470 Use of Externally-Controlled input to select classes or code (\u0027unsafe reflection\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T08:12:17.254Z",
"orgId": "a1a479f7-907b-4ae8-a999-9148cadc9224",
"shortName": "openGauss"
},
"references": [
{
"url": "https://gitcode.com/opengauss/openGauss-connector-jdbc/pull/423"
}
],
"source": {
"discovery": "EXTERNAL"
},
"title": "JDBC LogFactory \u4efb\u610f\u7c7b\u52a0\u8f7d/\u6784\u9020\u5bfc\u81f4\u6f5c\u5728 RCE",
"x_generator": {
"engine": "Vulnogram 1.0.5"
}
}
},
"cveMetadata": {
"assignerOrgId": "a1a479f7-907b-4ae8-a999-9148cadc9224",
"assignerShortName": "openGauss",
"cveId": "CVE-2026-111440",
"datePublished": "2026-10-19T03:55:19.107Z",
"dateReserved": "2026-10-16T03:04:57.224Z",
"dateUpdated": "2026-10-19T17:39:59.272Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"cna\": {\"providerMetadata\": {\"orgId\": \"a1a479f7-907b-4ae8-a999-9148cadc9224\", \"shortName\": \"openGauss\", \"dateUpdated\": \"2026-10-19T08:12:17.254Z\"}, \"title\": \"JDBC LogFactory \\u4efb\\u610f\\u7c7b\\u52a0\\u8f7d/\\u6784\\u9020\\u5bfc\\u81f4\\u6f5c\\u5728 RCE\", \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"cweId\": \"CWE-470\", \"description\": \"CWE-470 Use of Externally-Controlled input to select classes or code (\u0027unsafe reflection\u0027)\", \"type\": \"CWE\"}]}], \"impacts\": [{\"capecId\": \"CAPEC-138\", \"descriptions\": [{\"lang\": \"en\", \"value\": \"CAPEC-138 Reflection Injection\"}]}], \"affected\": [{\"vendor\": \"openGauss-server\", \"product\": \"openGauss-connector-jdbc\", \"platforms\": [\"openEuler\", \"Centos\"], \"collectionURL\": \"https://opengauss.org/zh/download/archive/?version=7.0.0-RC3\", \"versions\": [{\"status\": \"unaffected\", \"version\": \"7.0.0-LTS\"}, {\"status\": \"affected\", \"version\": \"1.0.0, 1.0.1, 1.1.0\"}, {\"status\": \"affected\", \"version\": \"2.0.0, 2.1.0\"}, {\"status\": \"affected\", \"version\": \"3.0.0-3.0.5\"}, {\"status\": \"affected\", \"version\": \"3.1.0-3.1.1\"}, {\"status\": \"affected\", \"version\": \"5.0.0-5.0.3\"}, {\"status\": \"affected\", \"version\": \"5.1.0\"}, {\"status\": \"affected\", \"version\": \"5.0.0-RC1\"}, {\"status\": \"affected\", \"version\": \"6.0.0-RC1\"}, {\"status\": \"affected\", \"version\": \"6.0.0-6.0.6\"}, {\"status\": \"affected\", \"version\": \"7.0.0-RC1, 7.0.0-RC2, 7.0.0-RC3\"}], \"defaultStatus\": \"unaffected\"}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"\\u5728 openGauss-connector-jdbc \\u7684 pgjdbc/src/main/java/org/postgresql/log/LogFactory.java \\u4e2d\\uff0cLogFactory \\u6839\\u636e JDBC \\u8fde\\u63a5\\u53c2\\u6570\\u4e2d\\u7684 logger \\u7c7b\\u540d\\u8c03\\u7528 Class.forName \\u52a0\\u8f7d\\u7c7b\\u540e\\uff0c\\u76f4\\u63a5\\u53cd\\u5c04\\u8c03\\u7528\\u4ee5 String \\u4e3a\\u53c2\\u6570\\u7684\\u6784\\u9020\\u51fd\\u6570\\uff0c\\u518d\\u8f6c\\u6362\\u4e3a Log\\u3002\\u7f3a\\u5c11 asSubclass(Log.class) \\u6821\\u9a8c\\uff0c\\u975e Log \\u5b9e\\u73b0\\u7c7b\\u4e5f\\u4f1a\\u5728\\u7c7b\\u578b\\u68c0\\u67e5\\u524d\\u88ab\\u5b9e\\u4f8b\\u5316\\u3002\\u56e0\\u6b64\\uff0c\\u5f53\\u653b\\u51fb\\u8005\\u53ef\\u63a7\\u5236 JDBC URL \\u6216\\u8fde\\u63a5\\u5c5e\\u6027\\u4e2d\\u7684 logger \\u7c7b\\u540d\\uff0c\\u4e14\\u5ba2\\u6237\\u7aef classpath \\u4e2d\\u5b58\\u5728\\u53ef\\u88ab\\u52a0\\u8f7d\\u7684\\u7c7b\\u65f6\\uff0c\\u53ef\\u80fd\\u5728\\u5ba2\\u6237\\u7aef\\u89e6\\u53d1\\u975e\\u9884\\u671f\\u7684\\u7c7b\\u52a0\\u8f7d\\u4e0e\\u6784\\u9020\\u526f\\u4f5c\\u7528\\u3002\\n\\n\\u6b64\\u6f0f\\u6d1e\\u81ea JDBC 1.1.0\\u5f15\\u5165\\uff0c\\u5f71\\u54cd 1.1.0 \\u53ca\\u4e4b\\u540e\\u7684 2.x\\u30013.x\\u30015.x\\u30016.x \\u5404\\u7248\\u672c\\u53ca\\u8865\\u4e01\\uff08\\u542b 6.0.0 \\u5206\\u652f\\u6700\\u65b0 6.0.6\\uff09\\uff0c\\u4ee5\\u53ca 7.0.0-RC1\\u30017.0.0-RC2\\u30017.0.0-RC3\\uff0c\\u5e76\\u5728 7.0.0-LTS \\u7248\\u672c\\u4fee\\u590d\\u3002\\u4fee\\u590d\\u5728 Class.forName \\u4e4b\\u540e\\u5148\\u6267\\u884c asSubclass(Log.class)\\uff0c\\u4ec5\\u5141\\u8bb8 Log \\u5b50\\u7c7b\\u8fdb\\u5165\\u6784\\u9020\\u3002\\u4fee\\u590dpr\\u89c1https://gitcode.com/opengauss/openGauss-connector-jdbc/pull/423\\u3002\", \"supportingMedia\": [{\"type\": \"text/html\", \"base64\": false, \"value\": \"\\u5728 openGauss-connector-jdbc \\u7684 pgjdbc/src/main/java/org/postgresql/log/LogFactory.java \\u4e2d\\uff0cLogFactory \\u6839\\u636e JDBC \\u8fde\\u63a5\\u53c2\\u6570\\u4e2d\\u7684 logger \\u7c7b\\u540d\\u8c03\\u7528 Class.forName \\u52a0\\u8f7d\\u7c7b\\u540e\\uff0c\\u76f4\\u63a5\\u53cd\\u5c04\\u8c03\\u7528\\u4ee5 String \\u4e3a\\u53c2\\u6570\\u7684\\u6784\\u9020\\u51fd\\u6570\\uff0c\\u518d\\u8f6c\\u6362\\u4e3a Log\\u3002\\u7f3a\\u5c11 asSubclass(Log.class) \\u6821\\u9a8c\\uff0c\\u975e Log \\u5b9e\\u73b0\\u7c7b\\u4e5f\\u4f1a\\u5728\\u7c7b\\u578b\\u68c0\\u67e5\\u524d\\u88ab\\u5b9e\\u4f8b\\u5316\\u3002\\u56e0\\u6b64\\uff0c\\u5f53\\u653b\\u51fb\\u8005\\u53ef\\u63a7\\u5236 JDBC URL \\u6216\\u8fde\\u63a5\\u5c5e\\u6027\\u4e2d\\u7684 logger \\u7c7b\\u540d\\uff0c\\u4e14\\u5ba2\\u6237\\u7aef classpath \\u4e2d\\u5b58\\u5728\\u53ef\\u88ab\\u52a0\\u8f7d\\u7684\\u7c7b\\u65f6\\uff0c\\u53ef\\u80fd\\u5728\\u5ba2\\u6237\\u7aef\\u89e6\\u53d1\\u975e\\u9884\\u671f\\u7684\\u7c7b\\u52a0\\u8f7d\\u4e0e\\u6784\\u9020\\u526f\\u4f5c\\u7528\\u3002\u003cbr\u003e\u003cbr\u003e\\u6b64\\u6f0f\\u6d1e\\u81ea JDBC 1.1.0\\u5f15\\u5165\\uff0c\\u5f71\\u54cd 1.1.0 \\u53ca\\u4e4b\\u540e\\u7684 2.x\\u30013.x\\u30015.x\\u30016.x \\u5404\\u7248\\u672c\\u53ca\\u8865\\u4e01\\uff08\\u542b 6.0.0 \\u5206\\u652f\\u6700\\u65b0 6.0.6\\uff09\\uff0c\\u4ee5\\u53ca 7.0.0-RC1\\u30017.0.0-RC2\\u30017.0.0-RC3\\uff0c\\u5e76\\u5728 7.0.0-LTS \\u7248\\u672c\\u4fee\\u590d\\u3002\\u4fee\\u590d\\u5728 Class.forName \\u4e4b\\u540e\\u5148\\u6267\\u884c asSubclass(Log.class)\\uff0c\\u4ec5\\u5141\\u8bb8 Log \\u5b50\\u7c7b\\u8fdb\\u5165\\u6784\\u9020\\u3002\\u4fee\\u590dpr\\u89c1https://gitcode.com/opengauss/openGauss-connector-jdbc/pull/423\\u3002\"}]}], \"references\": [{\"url\": \"https://gitcode.com/opengauss/openGauss-connector-jdbc/pull/423\"}], \"metrics\": [{\"format\": \"CVSS\", \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}], \"cvssV3_1\": {\"version\": \"3.1\", \"attackVector\": \"LOCAL\", \"attackComplexity\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"userInteraction\": \"NONE\", \"scope\": \"UNCHANGED\", \"confidentialityImpact\": \"HIGH\", \"integrityImpact\": \"HIGH\", \"availabilityImpact\": \"HIGH\", \"baseSeverity\": \"HIGH\", \"baseScore\": 7, \"vectorString\": \"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H\"}}], \"source\": {\"discovery\": \"EXTERNAL\"}, \"x_generator\": {\"engine\": \"Vulnogram 1.0.5\"}}, \"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-111440\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-10-19T17:39:30.858779Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-10-19T17:39:55.098Z\"}}]}",
"cveMetadata": "{\"cveId\": \"CVE-2026-111440\", \"assignerOrgId\": \"a1a479f7-907b-4ae8-a999-9148cadc9224\", \"state\": \"PUBLISHED\", \"assignerShortName\": \"openGauss\", \"dateReserved\": \"2026-10-16T03:04:57.224Z\", \"datePublished\": \"2026-10-19T03:55:19.107Z\", \"dateUpdated\": \"2026-10-19T17:39:59.272Z\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…