Actualización de seguridad para PostgreSQL JDBC 42.3.2/42.2.25
Se ha creado un aviso de seguridad para el controlador JDBC de PostgreSQL. El controlador permite instanciar instancias de plugins a partir de nombres de clase proporcionados a través de las propiedades de conexión authenticationPluginClassName, sslhostnameverifier, socketFactory, sslfactory y sslpasswordcallback.
Anteriormente, el controlador no verificaba si la clase implementaba la interfaz deseada antes de instanciar la clase.
Esta corrección, que permite asegurar que la clase implemente la interfaz deseada, ha sido incluida en las versiones 42.2.25 y 42.3.2. A continuación figuran también otros cambios introducidos en la versión 42.3.2. El registro de cambios completo puede consultarse aquí.
Cambios
- rendimiento: lectura del GUC de in_hot_standby durante la conexión PR #2334
- corrección: se solicitará al servidor si soporta el cifrado GSS, en el caso se prefiera o se requiera gssEncryption. PR #2396 Se elimina la necesidad de disponer de un ticket en la caché antes de solicitar al servidor si soporta los cifrados gss.
- corrección: arroja una SQLException para #getBoolean BIT(>1) PR #2386 Arroja una SQLException en lugar de una ClassCastException al invocar CallableStatement#getBoolean(int) en BIT(>1).
- Se añade a chooseClientAlias la comprobación del tipo de clave de certificado PR #2417
Nuevas características
- característica: Se añade la opción authenticationPluginClassName que proporciona contraseñas durante la ejecución. Se añade la propiedad de conexión authenticationPluginClassName que permite a los usuarios finales especificar una clase que proporcione contraseñas de conexión durante la ejecución. Los usuarios que implementen esa interfaz deben asegurarse de que cada invocación del método proporcione un nuevo array char[], ya que el controlador llenará el contenido con ceros después de su uso. Han sido actualizados los sitios de llamada dentro del controlador para utilizar el char[] de forma directa, siempre que sea posible. Esto incluye el uso directo en las rutas de código de autenticación GSS, que internamente ya estaban convirtiendo la contraseña String en un char[] para uso interno. Esto permite configurar una conexión cuya contraseña debe generarse sobre la marcha o cambiarse de forma periódica. PR #2369 problema original Problema #2102
- característica: se añade la opción tcpNoDelay PR #2341 Corrige el problema #2324
- característica: Soporte para pg_service.conf y .pgpass (jdbc:postgresql://?service=my-service) PR #2260 Corrige el problema #2278
Correcciones
- Uso del TimestampUtil local en PgStatement y PgResultset para la seguridad de los procesos PR #2291. Corrige el problema #921 sincroniza las modificaciones del calendario compartido
- corrección: PgObject isNull() informaba lo contrario. Corrige el problema #2411 PR #2414
- corrección: el nombre del archivo por defecto en Windows es «.pg_service.conf» (no «pg_service.conf») PR #2398 Corrige el problema #2278
- corrección: refcursor no se cerraba tras la lectura si había sido establecido fetchsize. Corrige el problema #2227 PR #2371
- corrección: reelaboración del sistema de autenticación gss para utilizar el nombre principal a fin de obtener las credenciales. Corrige el problema #2235 PR #2352
- corrección: devuelve las columnas de metadatos de getIndexInfo en mayúsculas PR #2368
- corrección: Fuga de conexión en ConnectionFactoryImpl#tryConnect PR #2350 problema #2351
- corrección: Corrección para el indicador IS_AUTOGENERATED PR #2348
- corrección: análisis de pruebas de archivos de servicio para windows PR #2347
- corrección: Según las especificaciones, invocar close() en una conexión cerrada es un no-op. PR #2345. Corrige el problema #2300
- corrección: se añade precisión en microsegundos a la función getTimestamp() invocada en el sql TIME(6). Hasta ahora, «cuando se obtenía un valor de tipo TIME(6) a través de resultSet.getTimestamp(), sólo se conservaba la precisión en milisegundos, perdiéndose los dígitos fraccionarios de los microsegundos». Con este cambio, al invocar .getTimestamp() con TIME(6) se conservará la precisión en microsegundos. PR #2181. Cierra el problema #1537
- prueba: privilegios de vista materializada PR #2209 añade y elimina una vista materializada. Se añaden a TestUtil y también a DatabaseMetaData funciones de configuración y eliminación. Corrige el problema #2060
- corrección: error tipográfico en connect.md PR #2338
OutOfMemoryException
=>OutOfMemoryError
- corrección: Uso del TimestampUtil local en PgStatement y PgResultset para la seguridad de los procesos. TimestampUtil no es seguro para los procesos. Produce excepciones cuando varios procesos utilizan los ResultSets de una conexión. PR #2291. Corrige el problema #921. Si PgStatement y PgResultSet utilizan su propio TimestampUtil no es necesaria la sincronización.
- corrección: error tipográfico en CONTRIBUTING.md PR #2332 seccion => section
El equipo JDBC de PostgreSQL desea agradecer a todos los que han participado en la realización de esta versión.
El equipo de JDBC