CVE-2026-111440
Publiée le 2026-10-19 · Dernière modification le 2026-10-19
openGauss-connector-jdbc (versions 1.1.0 à 6.0.6 et 7.0.0-RC1 à RC3) est un pilote utilisé par les applications Java pour se connecter aux bases de données openGauss. La faille existe car l'usine de journalisation (logging factory) du pilote charge une classe spécifiée dans les paramètres de connexion JDBC et l'instancie sans vérifier au préalable que la classe est bien un journaliseur légitime. Cela permet d'initialiser n'importe quelle classe disponible dans le classpath de l'application si son nom est transmis dans la chaîne de connexion.
Un attaquant capable de contrôler l'URL JDBC ou les propriétés de connexion peut déclencher l'exécution de code arbitraire au sein de l'application cliente, compromettant potentiellement la confidentialité, l'intégrité et la disponibilité du système. Cette attaque est difficile à exécuter car elle nécessite un accès local au système ainsi que la présence d'une classe « gadget » spécifique dans le classpath pour obtenir un impact significatif. Aucune interaction directe de l'utilisateur n'est requise, mais l'attaquant doit déjà posséder des privilèges de bas niveau sur la machine pour modifier les paramètres de connexion.
DÉTAIL DU VECTEUR CVSS
RÉFÉRENCES
Description officielle du NVD (en anglais)
在 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。