Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2022-41828 — [CVE-2022-41828] Amazon AWS Redshift JDBC Driver - Ejecución Remota de Código (RCE) | Kitploit
Herramientas/GitHubGitHub/murataydemir/cve-2022-41828
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad en la NubeAprendizaje y EducaciónSeguridad de Bases de Datos
GitHubmurataydemir/cve-2022-41828

CVE-2022-41828

[CVE-2022-41828] Amazon AWS Redshift JDBC Driver - Ejecución Remota de Código (RCE)

Ver Repositorio
427hace 3 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

[CVE-2022-41828] Controlador JDBC de Amazon AWS Redshift - Ejecución remota de código (RCE)


Platform Badge Ecosystem

El controlador JDBC de Amazon para Redshift es un controlador JDBC tipo 4 que proporciona conectividad a bases de datos a través de las interfaces de programación de aplicaciones (API) JDBC estándar disponibles en la plataforma Java, Enterprise Editions. El controlador proporciona acceso a Redshift desde cualquier aplicación Java, servidor de aplicaciones o applet habilitado para Java.

Existe un posible problema de ejecución remota de comandos en las versiones redshift-jdbc42 2.1.0.7 y anteriores. Cuando se utilizan plugins con el controlador, este crea instancias de plugin basadas en nombres de clases Java proporcionados a través de las propiedades de conexión sslhostnameverifier, socketFactory, sslfactory y sslpasswordcallback. En las versiones afectadas, el controlador no verifica si una clase de plugin implementa la interfaz esperada antes de la instanciación. Esto puede llevar a la carga de clases Java arbitrarias, que un atacante con conocimiento y control sobre la URL JDBC puede usar para lograr la ejecución remota de código.

Parches

Este problema está corregido en la versión redshift-jdbc-42 2.1.0.8 y superiores.

Soluciones alternativas

AWS recomienda a los clientes que usan plugins actualizar a la versión redshift-jdbc42 2.1.0.8 o superior. No se conocen soluciones alternativas para este problema.

Análisis del parche: problema en GitHub y confirmaciones relacionadas

Para corregir este problema, se realizaron modificaciones en 4 clases Java diferentes en la confirmación aws/amazon-redshift-jdbc-driver@9999659. Estas clases son las siguientes, respectivamente.

  • src/main/java/com/amazon/redshift/core/SocketFactoryFactory.java
@@ -38,7 +38,7 @@ public static SocketFactory getSocketFactory(Properties info) throws RedshiftExc
      return SocketFactory.getDefault();
    }
    try {
      //removed return (SocketFactory) ObjectFactory.instantiate(socketFactoryClassName, info, true, RedshiftProperty.SOCKET_FACTORY_ARG.get(info));
      return ObjectFactory.instantiate(SocketFactory.class, socketFactoryClassName, info, true, RedshiftProperty.SOCKET_FACTORY_ARG.get(info)); //added
    } catch (Exception e) {
      throw new RedshiftException(
@@ -66,7 +66,7 @@ public static SSLSocketFactory getSslSocketFactory(Properties info) throws Redsh
      if (classname.equals(RedshiftConnectionImpl.NON_VALIDATING_SSL_FACTORY))
      		classname = NonValidatingFactory.class.getName();

      //removed return (SSLSocketFactory) ObjectFactory.instantiate(classname, info, true, RedshiftProperty.SSL_FACTORY_ARG.get(info));
      return  ObjectFactory.instantiate(SSLSocketFactory.class, classname, info, true, RedshiftProperty.SSL_FACTORY_ARG.get(info)); //added
    } catch (Exception e) {
      throw new RedshiftException(

commit-1

  • src/main/java/com/amazon/redshift/ssl/LibPQFactory.java
@@ -61,7 +61,7 @@ private CallbackHandler getCallbackHandler(Properties info) throws RedshiftExcep
    String sslpasswordcallback = RedshiftProperty.SSL_PASSWORD_CALLBACK.get(info);
    if (sslpasswordcallback != null) {
      try {
        //removed cbh = (CallbackHandler) ObjectFactory.instantiate(sslpasswordcallback, info, false, null);
        cbh =  ObjectFactory.instantiate(CallbackHandler.class, sslpasswordcallback, info, false, null); //added
      } catch (Exception e) {
        throw new RedshiftException(
          GT.tr("The password callback class provided {0} could not be instantiated.",

commit-2

  • src/main/java/com/amazon/redshift/ssl/MakeSSL.java
@@ -59,7 +59,7 @@ private static void verifyPeerName(RedshiftStream stream, Properties info, SSLSo
      sslhostnameverifier = "RedshiftjdbcHostnameVerifier";
    } else {
      try {
        //removed hvn = (HostnameVerifier) instantiate(sslhostnameverifier, info, false, null);
        hvn = instantiate(HostnameVerifier.class, sslhostnameverifier, info, false, null); //added
      } catch (Exception e) {
        throw new RedshiftException(
            GT.tr("The HostnameVerifier class provided {0} could not be instantiated.",

commit-3

  • src/main/java/com/amazon/redshift/util/ObjectFactory.java
@@ -34,13 +34,13 @@ public class ObjectFactory {
   * @throws IllegalAccessException if something goes wrong
   * @throws InvocationTargetException if something goes wrong
   */
  //removed public static Object instantiate(String classname, Properties info, boolean tryString,
  public static <T> T instantiate(Class<T> expectedClass, String classname, Properties info, boolean tryString, //added
      String stringarg) throws ClassNotFoundException, SecurityException, NoSuchMethodException,
          IllegalArgumentException, InstantiationException, IllegalAccessException,
          InvocationTargetException {
    Object[] args = {info};
    Constructor<?> ctor = null; //removed
    Class<?> cls = Class.forName(classname); //removed
    Constructor<? extends T> ctor = null; //added
    Class<? extends T> cls = Class.forName(classname).asSubclass(expectedClass); //added    
    try {
      ctor = cls.getConstructor(Properties.class);
    } catch (NoSuchMethodException nsme) {

commit-4

Reproducción: Desarrollo de aplicación vulnerable y pasos de explotación

Para reproducir CVE-2022-41828, se desarrolló una aplicación Java vulnerable con Spring framework que utiliza una versión vulnerable del controlador redshift-jdbc42 2.1.0.7 como biblioteca externa.

Descargar herramienta