Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-41828 — [CVE-2022-41828] Amazon AWS Redshift JDBC Driver Esecuzione di codice remoto (RCE) | Kitploit
Strumenti/GitHubGitHub/murataydemir/cve-2022-41828
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza CloudApprendimento e FormazioneSicurezza dei Database
GitHubmurataydemir/cve-2022-41828

CVE-2022-41828

[CVE-2022-41828] Amazon AWS Redshift JDBC Driver Esecuzione di codice remoto (RCE)

Vedi Repository
4273 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

[CVE-2022-41828] Amazon AWS Redshift JDBC Driver - Esecuzione di codice in remoto (RCE)


Platform Badge Ecosystem

The Amazon JDBC Driver for Redshift è un driver JDBC di tipo 4 che fornisce la connettività al database tramite le interfacce standard JDBC (Application Program Interfaces, API) disponibili in Java Platform, Enterprise Edition. Il driver fornisce l'accesso a Redshift da qualsiasi applicazione Java, server applicativo o applet abilitato per Java.

Esiste un potenziale problema di esecuzione remota di comandi in redshift-jdbc42 versioni 2.1.0.7 e precedenti. Quando si utilizzano plugin con il driver, questo istanzia istanze di plugin basate su nomi di classi Java forniti tramite le proprietà di connessione sslhostnameverifier, socketFactory, sslfactory e sslpasswordcallback. Nelle versioni vulnerabili, il driver non verifica che una classe plugin implementi l'interfaccia prevista prima dell'istanziazione. Ciò può portare al caricamento di classi Java arbitrarie, che un attaccante esperto con il controllo dell'URL JDBC può utilizzare per ottenere l'esecuzione di codice in remoto.

Patch

Questo problema è corretto in redshift-jdbc-42 versione 2.1.0.8 e successive.

Soluzioni alternative

AWS consiglia ai clienti che utilizzano plugin di aggiornare a redshift-jdbc42 versione 2.1.0.8 o successiva. Non ci sono soluzioni alternative note per questo problema.

Analisi della patch: issue GitHub e commit correlati

Per correggere questo problema, sono state apportate modifiche in 4 diverse classi Java nel commit aws/amazon-redshift-jdbc-driver@9999659. Queste classi sono le seguenti, rispettivamente.

  • 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

Riproduzione: sviluppo dell'applicazione vulnerabile e passaggi di sfruttamento

Per riprodurre la CVE-2022-41828, è stata sviluppata un'applicazione Java vulnerabile con il framework Spring che utilizza come libreria esterna il driver vulnerabile redshift-jdbc42 versione 2.1.0.7.

Scarica lo strumento