{"id":"CVE-2026-111440","kind":"vulnerability","aliases":["CVE-2026-111440"],"related":[],"title":"openGauss JDBC driver: logger class name loads arbitrary classes on client","description":"在 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 中存在可被加载的类时，可能在客户端触发非预期的类加载与构造副作用。\n\n此漏洞自 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。","summary":"The openGauss JDBC driver's LogFactory loads a class named in the JDBC URL or connection properties and calls its String constructor before checking it implements Log. An attacker who controls the JDBC URL or a connection property can trigger unintended class loading and constructor side effects on the client.","severity":"high","cvss":7.0,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["java","jdbc","opengauss","package","self-hosted"],"not_affected_if":["no-user-controlled-jdbc-url","static-connection-strings"],"how_to_check":"- Check the openGauss JDBC driver version in the project dependencies; affected versions are 1.1.0 and later 2.x, 3.x, 5.x, 6.x (including 6.0.6) and 7.0.0-RC1 through 7.0.0-RC3.\n- Search application code and configuration for JDBC URLs or connection properties that set a logger class name, where user input can reach them.","fix":"- Upgrade openGauss-connector-jdbc to the 7.0.0-LTS release, which applies the asSubclass(Log.class) check before construction.\n- Until upgraded, do not pass user-controlled values into JDBC URL or connection properties.","status":"open","published_at":"2026-10-19T04:17:03+00:00","first_seen_at":"2026-10-23T21:57:17+00:00","triaged_at":"2026-10-25T03:38:24+00:00","updated_at":"2026-10-25T03:38:24+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T03:38:24Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade openGauss-connector-jdbc to the 7.0.0-LTS release, which applies the asSubclass(Log.class) check before construction.\n- Until upgraded, do not pass user-controlled values into JDBC URL or connection properties.","reach":"unknown","title":"openGauss JDBC driver: logger class name loads arbitrary classes on client","impact":"medium","summary":"The openGauss JDBC driver's LogFactory loads a class named in the JDBC URL or connection properties and calls its String constructor before checking it implements Log. An attacker who controls the JDBC URL or a connection property can trigger unintended class loading and constructor side effects on the client.","category":"package","nicknames":[],"who_cares":["java","jdbc","opengauss","self-hosted"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Unintended class loading and constructor side effects run on the client","analyst_note":"Confirm from the NVD entry or the PR at gitcode.com/opengauss/openGauss-connector-jdbc/pull/423 whether the logger property is reachable from an unauthenticated source and what the constructor side effects are.","how_to_check":"- Check the openGauss JDBC driver version in the project dependencies; affected versions are 1.1.0 and later 2.x, 3.x, 5.x, 6.x (including 6.0.6) and 7.0.0-RC1 through 7.0.0-RC3.\n- Search application code and configuration for JDBC URLs or connection properties that set a logger class name, where user input can reach them.","needs_analyst":true,"not_affected_if":["static-connection-strings","no-user-controlled-jdbc-url"],"who_is_affected":"Applications that use the openGauss JDBC driver with a JDBC URL or connection properties that can be influenced by an attacker, such as user-supplied connection strings. Systems where the connection string is fully controlled by the operator are lower risk. The sources do not say which default or configuration exposes the logger property.","user_interaction":"unknown","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000732,"input_tokens":3690,"output_tokens":726,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-111440':14A,17A '-2026':13A,16A '/gitcode.com/opengauss/opengauss-connector-jdbc/pull/423':154C '1.1.0':116C,119C '2':121C '3':123C '5':125C '6':127C '6.0.0':131C '6.0.6':133C '7.0.0':135C,137C,139C,142C 'arbitrari':8A 'assubclass':97C,148C 'attack':53B 'call':43B 'check':48B 'class':5A,9A,33B,66B 'class.forname':89C,146C 'classpath':111C 'client':11A,74B 'connect':40B,61B 'connector':78C 'constructor':46B,69B 'control':55B 'cve':12A,15A 'driver':3A,28B 'effect':71B 'host':24B 'implement':50B 'java':18B 'jdbc':2A,19B,27B,37B,57B,79C,85C,105C,115C 'load':7A,31B,67B 'log':51B,95C,101C,151C 'log.class':98C,149C 'logfactori':30B,83C 'logger':4A,87C,108C 'lts':143C 'name':6A,34B 'opengauss':1A,20B,26B,77C 'opengauss-connector-jdbc':76C 'packag':21B 'pgjdbc/src/main/java/org/postgresql/log/logfactory.java':81C 'properti':41B,62B 'rc1':136C 'rc2':138C 'rc3':140C 'self':23B 'self-host':22B 'side':70B 'string':45B,92C 'trigger':64B 'unintend':65B 'url':38B,58B,106C 'x':122C,124C,126C,128C '且客户端':110C '中':82C '中存在可被加载的类时':112C '为参数的构造函数':93C '之后先执行':147C '仅允许':150C '以及':134C '修复pr见https':153C '修复在':145C '再转换为':94C '分支最新':132C '加载类后':90C '及之后的':120C '可能在客户端触发非预期的类加载与构造副作用':113C '各版本及补丁':129C '含':130C '因此':103C '在':75C '子类进入构造':152C '实现类也会在类型检查前被实例化':102C '并在':141C '引入':117C '当攻击者可控制':104C '影响':118C '或连接属性中的':107C '校验':99C '根据':84C '此漏洞自':114C '版本修复':144C '的':80C '直接反射调用以':91C '类名':109C '类名调用':88C '缺少':96C '连接参数中的':86C '非':100C","nicknames":[],"mitigations":[],"who_affected":"Applications that use the openGauss JDBC driver with a JDBC URL or connection properties that can be influenced by an attacker, such as user-supplied connection strings. Systems where the connection string is fully controlled by the operator are lower risk. The sources do not say which default or configuration exposes the logger property.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-19T04:17:03+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H","cvss_by":"a1a479f7-907b-4ae8-a999-9148cadc9224","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-111440","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111440","severity":null,"published_at":"2026-10-19T04:17:03+00:00","modified_at":"2026-10-19T20:56:36+00:00","first_seen_at":"2026-10-23T21:57:17+00:00","fetched_at":"2026-10-23T22:28:56+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}