
Laboratorio de prueba de concepto y cliente de exploit para CVE-2026-59358, que demuestra la reutilización en Cloud Foundry UAA de un token PKCE de usuario como Bearer de client_credentials para acuñar tokens de cliente privilegiados.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-59358
Clase: Privilegio residual Alcance: Remoto
Cloud Foundry UAA v79.6.0 - VMware by Broadcom / Cloud Foundry Foundation
Soy @abraxas_null. Laboratorio en loopback. El cliente es CVE-2026-59358-Abraxas-Labs.py.
Un token de acceso de usuario PKCE público es aceptado como autenticación de cliente Bearer en grant_type=client_credentials para el mismo cliente de doble concesión. UAA emite un token solo de cliente con las autoridades de ese cliente (clients.write en este laboratorio). El token de usuario por sí mismo devuelve 403 en POST /oauth/clients. El token residual crea un nuevo cliente OAuth. Laboratorio independiente del CVE publicado. Crédito: Minseong Kim (mak3bread).
| CVE | CVE-2026-59358 · CVE.org |
| Clase | Privilegio residual (token de usuario reutilizado como Bearer de client_credentials; no es RCE) |
| Alcance | Remoto (token de acceso de usuario propio del atacante) |
| CWE | CWE-287 |
| CVSS | Alto: 7.6 CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N |
| Producto | Cloud Foundry UAA |
| Afectado | UAA v3.7.0 hasta v79.6.0; cf-deployment hasta v60.4.0 |
| Parcheado | UAA v79.7.0; cf-deployment v60.5.0 |
| Autenticación | autenticado (token PKCE de usuario propio del atacante) |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1 |
Iniciar sesión a través de un cliente OAuth público que también liste client_credentials. Reutilizar ese JWT de usuario como Authorization: Bearer en POST /oauth/token con grant_type=client_credentials. UAA devuelve un token solo de cliente con las autoridades del cliente. Si esas incluyen clients.write, crear nuevos clientes OAuth con autoridades elegidas por el atacante. No se requiere el secreto del cliente.
El token de usuario no puede administrar clientes por sí mismo. Lo residual es la comprobación del endpoint de token que trata cualquier token de acceso válido cuyo client_id coincida como autenticación de cliente.
El impacto escala con las autoridades de ese cliente. La combinación (flujo de usuario público más client_credentials en un mismo client_id) no es la configuración por defecto.
Cloud Foundry publicó CVE-2026-59358 el 5 de octubre de 2026. Fijé la última versión afectada cfidentity/uaa:v79.6.0, levanté un cliente público de doble concesión dedicado labpub, y recorrí PKCE como el usuario estándar marissa. Control negativo: el token de usuario en POST /oauth/clients es 403. Ataque: el mismo Bearer en client_credentials es 200, luego 201 creando labwit-CVE-2026-59358-WITNESS.
Errores ya registrados: fijar v79.7.0 (parcheado); llamar a /oauth/token sin la ruta de contexto /uaa; mezclar localhost y 127.0.0.1 en el emisor y la redirección; usar el cliente estándar login (sin clients.write); concesión de contraseña en lugar de PKCE; enviar Basic client_id:secret más el Bearer de usuario (eso es autenticación de cliente legítima).
HTTP 18258 en loopback. Imagen docker.io/cfidentity/uaa:v79.6.0 (linux/amd64). Proyecto de Compose cve-2026-59358. ./run.sh.
Objetivo solo 127.0.0.1:18258 (o el loopback que hayas vinculado).
python3 CVE-2026-59358-Abraxas-Labs.py
Eso hace chdir a lab/ y ejecuta run.sh (compose up, espera a /uaa/info, luego poc.py).
Testigo: el JWT de client_credentials emitido lleva clients.write y POST /oauth/clients devuelve 201 para labwit-CVE-2026-59358-WITNESS. El token de usuario en el mismo endpoint es 403.
SUCCESS CVE-2026-59358 grant=client_credentials clients.write create-http=201 id=labwit-CVE-2026-59358-WITNESS CVE-2026-59358-WITNESS
Formas de perder sin aprender nada:
v79.7.0 o posteriorActualizar UAA a v79.7.0 o superior, o cf-deployment a v60.5.0. Hasta entonces, no pongas una concesión pública orientada al usuario y client_credentials en el mismo client_id, y mantén clients.write en clientes dedicados no públicos.
Vuelve a ejecutar CVE-2026-59358-Abraxas-Labs.py contra la compilación parcheada: el Bearer de usuario en client_credentials debe permanecer como no-200.
hub.docker.com/r/cfidentity/uaa etiqueta v79.6.0
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected]
GNU Affero GPL v3.0. Ver LICENSE.
El cliente se comunica con loopback. Usarlo contra sistemas que no posees no está autorizado por Abraxas Labs. Sin garantía.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected]