CVE-2026-86863 in pgAdmininformación

Resumen

por VulDB • 2026-09-17

La fuente de autenticación del servidor web de pgAdmin 4 está diseñada para aceptar una identidad afirmada por el servidor web o proxy inverso situado delante de pgAdmin, entregada a través del entorno WSGI/CGI. WebserverAuthentication.get_user() leía config.WEBSERVER_REMOTE_USER desde request.environ y, cuando esto no devolvía nada, recurría a leer el mismo nombre directamente desde las cabeceras HTTP entrantes mediante request.headers.get(). Una cabecera HTTP entrante es escrita por quien envía la solicitud, por lo que cualquier cliente capaz de alcanzar pgAdmin podría suministrar esa cabecera él mismo y ser autenticado como cualquier nombre de usuario, incluido un Administrador existente, sin presentar una contraseña ni ninguna otra credencial. La búsqueda en el entorno también podría satisfacerse mediante una cabecera suministrada por el cliente siempre que WEBSERVER_REMOTE_USER estuviera configurado con un nombre prefijado con HTTP_ o con guiones, como HTTP_X_FORWARDED_USER o X-Forwarded-User, ya que los servidores WSGI colocan las cabeceras entrantes en el entorno bajo exactamente esos nombres. Los despliegues se ven afectados únicamente cuando 'webserver' está habilitado en AUTHENTICATION_SOURCES.

La corrección distingue una variable CGI/WSGI genuina de una derivada de una cabecera y confía implícitamente solo en la primera. Una identidad afirmada mediante cabecera ahora se acepta solo cuando el operador opta explícitamente por ello a través de WEBSERVER_REMOTE_USER_FROM_HEADER, la solicitud llega desde un par listado en WEBSERVER_TRUSTED_PROXIES y, si está configurado, un secreto compartido suministrado en WEBSERVER_SHARED_SECRET_HEADER coincide con WEBSERVER_SHARED_SECRET mediante una comparación constante-tiempo. La comprobación del par de confianza lee deliberadamente la dirección real del peer del socket en lugar de request.remote_addr, porque ProxyFix reescribe esta última a partir de la cabecera X-Forwarded-For controlada por el cliente y permitiría de otro modo que un atacante afirmara ser el proxy de confianza. Como defensa en profundidad, login() ahora rechaza cualquier cuenta cuya auth_source no sea 'webserver', por lo que una puerta de confianza mal configurada no puede utilizarse para asumir una cuenta interna o LDAP.

Este problema afecta a pgAdmin 4: desde la versión 6.2 hasta antes de 9.18.

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

PostgreSQL

Reservar

2026-09-08

Divulgación

2026-09-17

Moderación

aceptado

Artículo

VDB-406519

CPE

listo

EPSS

0.00000

KEV

no

Actividades

bajo

Fuentes

Do you need the next level of professionalism?

Upgrade your account now!