Postgresql · Postgresql Jdbc Driver · CVE-2022-31197
**Nome do software vulnerável e versões afetadas**
Versões do driver JDBC do PostgreSQL anteriores à 42.2.26
Versões do driver JDBC do PostgreSQL anteriores à 42.4.1
**Descrição**
A implementação do método `java.sql.ResultRow.refreshRow()` pelo PGJDBC não realiza o escapamento dos nomes das colunas, permitindo que um nome de coluna malicioso que contenha um terminador de instrução, por exemplo, `;`, leve a uma injeção de SQL. Isso pode resultar na execução de comandos SQL adicionais como usuário JDBC do aplicativo. Aplicativos de usuário que não invocam o método `ResultSet.refreshRow()` não são afetados. Aplicativos de usuário que invocam esse método são afetados se o banco de dados subjacente que estão consultando por meio de seu aplicativo JDBC estiver sob o controle de um invasor. O ataque requer que o invasor induza o usuário a executar SQL contra um nome de tabela cujos nomes de colunas contenham o SQL malicioso e, subsequentemente, invoque o método `refreshRow()` no ResultSet.
**Recomendações**
Para versões anteriores à 42.2.26, atualize para a versão 42.2.26 ou posterior.
Para versões anteriores à 42.4.1, atualize para a versão 42.4.1 ou posterior.
Como solução alternativa temporária, considere não usar o método `ResultSet.refreshRow()`.
Se o método `ResultSet.refreshRow()` for usado, certifique-se de que o código que executa esse método não se conecte a um banco de dados controlado por um usuário não autenticado ou mal-intencionado.