CVE-2022-31197

SQL Injection in ResultSet.refreshRow() with malicious column names in pgjdbc

HIGH
8
CVSS Score
Published: August 3, 2022 at 12:00 AM UTC
Updated: June 17, 2026 at 04:45 AM UTC
4 products affected across 4 vendorsDebian LinuxFedoraPostgreSQL Jdbc Driver

Using pgjdbc by pgjdbc?

Get instant alerts when new vulnerabilities affect pgjdbc - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH8
Exploit prediction
EPSS 2%
SSVC
PoC

Description

PostgreSQL JDBC Driver (PgJDBC for short) allows Java programs to connect to a PostgreSQL database using standard, database independent Java code. The PGJDBC implementation of the `java.sql.ResultRow.refreshRow()` method is not performing escaping of column names so a malicious column name that contains a statement terminator, e.g. `;`, could lead to SQL injection. This could lead to executing additional SQL commands as the application's JDBC user. User applications that do not invoke the `ResultSet.refreshRow()` method are not impacted. User application that do invoke that method are impacted if the underlying database that they are querying via their JDBC application may be under the control of an attacker. The attack requires the attacker to trick the user into executing SQL against a table name who's column names would contain the malicious SQL and subsequently invoke the `refreshRow()` method on the ResultSet. Note that the application's JDBC user and the schema owner need not be the same. A JDBC application that executes as a privileged user querying database schemas owned by potentially malicious less-privileged users would be vulnerable. In that situation it may be possible for the malicious user to craft a schema that causes the application to execute commands as the privileged user. Patched versions will be released as `42.2.26` and `42.4.1`. Users are advised to upgrade. There are no known workarounds for this issue.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v < 42.2.2642.3.0 ≤ v < 42.3.742.4.042.4.0 rc142.4.1 rc1
Affected range stops below 42.2.26, so it looks safe — our inference, not a vendor statement
Affected range stops below 42.3.7, so it looks safe — our inference, not a vendor statement
v < 42.2.26v < 42.4.1
Affected range stops below 42.2.26, so it looks safe — our inference, not a vendor statement
Affected range stops below 42.4.1, so it looks safe — our inference, not a vendor statement

SSVC — Action Prioritization

SSVCPoCNot automatableTotal impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
NETWORK
Complexity
LOW
Privileges
LOW
User Interaction
REQUIRED
Scope
UNCHANGED
Confidentiality
HIGH
Integrity
HIGH
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-89

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card