CVE-2026-12050

SQL injection in pgAdmin 4's named restore point endpoint (POST /browser/server/restore_point/{gid}/{sid}). The user-supplied 'value' field was interpolated directly into the SQL string with str.format() instead of being passed as a bound parameter, allowing an authenticated pgAdmin user with a connected PostgreSQL session to inject additional statements through that endpoint. The injected SQL executes under the database role the user is already authenticated as. The defect does not cross a privilege boundary -- the user already has direct SQL access to that role through the Query Tool -- so the attacker gains no capability beyond what their database role already grants them. The marginal impact accounts for the fact that the injection path is not the documented SQL-execution interface, so a deployment that gates the Query Tool at the application layer could see SQL executed through a path it did not anticipate. Fix passes the restore point name as a bound parameter and schema-qualifies the function call as pg_catalog.pg_create_restore_point so a non-default search_path on the connection cannot redirect the call to a shadow definition. A regression test asserts the value arrives as a bound parameter and not spliced into the SQL string. This issue affects pgAdmin 4: from 1.0 before 9.16.
Configurations

Configuration 1 (hide)

cpe:2.3:a:pgadmin:pgadmin_4:*:*:*:*:*:postgresql:*:*

History

25 Oct 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) Inyección SQL en el endpoint de punto de restauración con nombre de pgAdmin 4 (POST /browser/server/restore_point/{gid}/{sid}). El campo ’value’ proporcionado por el usuario fue interpolado directamente en la cadena SQL con str.format() en lugar de ser pasado como un parámetro vinculado, permitiendo a un usuario autenticado de pgAdmin con una sesión de PostgreSQL conectada inyectar sentencias adicionales a través de ese endpoint. El SQL inyectado se ejecuta bajo el rol de la base de datos con el que el usuario ya está autenticado. El defecto no cruza un límite de privilegios -- el usuario ya tiene acceso SQL directo a ese rol a través de la Herramienta de Consulta -- por lo que el atacante no obtiene ninguna capacidad más allá de lo que su rol de base de datos ya les otorga. El impacto marginal tiene en cuenta el hecho de que la ruta de inyección no es la interfaz documentada de ejecución de SQL, por lo que una implementación que restringe la Herramienta de Consulta en la capa de aplicación podría ver SQL ejecutado a través de una ruta que no anticipó. La corrección pasa el nombre del punto de restauración como un parámetro vinculado y califica la llamada a la función con el esquema como pg_catalog.pg_create_restore_point para que un search_path no predeterminado en la conexión no pueda redirigir la llamada a una definición en la sombra. Una prueba de regresión afirma que el valor llega como un parámetro vinculado y no empalmado en la cadena SQL. Este problema afecta a pgAdmin 4: desde 1.0 hasta antes de 9.16.

Information

Published : 2026-06-19 00:16

Updated : 2026-10-25 23:10


NVD link : CVE-2026-12050

Mitre link : CVE-2026-12050

CVE.ORG link : CVE-2026-12050


JSON object : View

Products Affected

pgadmin

  • pgadmin_4
CWE
CWE-89

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')