
CVE-2026-59358 の概念実証ラボおよびエクスプロイトクライアント。Cloud Foundry UAA がユーザーの PKCE トークンを client_credentials の Bearer として再利用し、特権クライアントトークンを発行できることを実証します。
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-59358
クラス: 権限の残留 到達範囲: リモート
Cloud Foundry UAA v79.6.0 - VMware by Broadcom / Cloud Foundry Foundation
私は @abraxas_null です。ループバックラボです。クライアントは CVE-2026-59358-Abraxas-Labs.py です。
公開 PKCE ユーザーアクセストークンが、同じデュアルグラントクライアントに対する grant_type=client_credentials 上の Bearer クライアント認証として受け入れられます。UAA は、そのクライアントの権限(このラボでは clients.write)を持つクライアント専用トークンを発行します。ユーザートークン自体は POST /oauth/clients で 403 になります。この残留トークンが新しい OAuth クライアントを作成します。公開された CVE の独立したラボです。クレジット: Minseong Kim (mak3bread)。
| CVE | CVE-2026-59358 · CVE.org |
| クラス | 権限の残留(ユーザートークンが client_credentials Bearer として再利用される。RCE ではない) |
| 到達範囲 | リモート(攻撃者自身のユーザーアクセストークン) |
| CWE | CWE-287 |
| CVSS | High: 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 |
| 製品 | Cloud Foundry UAA |
| 影響を受けるバージョン | UAA v3.7.0 から v79.6.0; cf-deployment v60.4.0 まで |
| 修正済み | UAA v79.7.0; cf-deployment v60.5.0 |
| 認証 | 認証済み(攻撃者自身のユーザー PKCE トークン) |
| ライセンス | GNU Affero GPL v3.0 |
| ラボ | 127.0.0.1 のみ |
client_credentials も列挙している公開 OAuth クライアントを通じてログインします。そのユーザー JWT を POST /oauth/token に対して grant_type=client_credentials とともに Authorization: Bearer としてリプレイします。UAA は、そのクライアントの権限を持つクライアント専用トークンを返します。それらに clients.write が含まれていれば、攻撃者が選んだ権限を持つ新しい OAuth クライアントを作成できます。クライアントシークレットは不要です。
ユーザートークン単独ではクライアントを管理できません。残留とは、トークンエンドポイントのチェックが、client_id が一致する任意の有効なアクセストークンをクライアント認証として扱うことです。
影響はそのクライアントの権限に応じて拡大します。この組み合わせ(公開ユーザーフローと同一 client_id 上の client_credentials)はデフォルトではありません。
Cloud Foundry は 2026年10月5日に CVE-2026-59358 を公開しました。私は最後の影響を受けるバージョン cfidentity/uaa:v79.6.0 を固定し、専用のデュアルグラント公開クライアント labpub を立ち上げ、標準ユーザー marissa として PKCE を実行しました。ネガティブコントロール: POST /oauth/clients 上のユーザートークンは 403 です。攻撃: client_credentials 上の同じ Bearer は 200、続いて labwit-CVE-2026-59358-WITNESS を作成して 201 です。
すでに記録済みの回り道: v79.7.0(修正済み)の固定; /uaa コンテキストパスなしで /oauth/token にアクセス; issuer と redirect で localhost と 127.0.0.1 を混在; 標準の login クライアントの使用(clients.write なし); PKCE の代わりに password grant; Basic client_id:secret とユーザー Bearer の併送(これは正当なクライアント認証です)。
ループバック上の HTTP 18258。イメージ docker.io/cfidentity/uaa:v79.6.0(linux/amd64)。Compose プロジェクト cve-2026-59358。./run.sh。
対象は 127.0.0.1:18258 のみ(またはバインドしたループバック)。
python3 CVE-2026-59358-Abraxas-Labs.py
これは lab/ に chdir して run.sh を実行します(compose up、/uaa/info を待機、その後 poc.py)。
ウィットネス: 発行された client_credentials JWT は clients.write を持ち、POST /oauth/clients は labwit-CVE-2026-59358-WITNESS に対して 201 を返します。同じエンドポイント上のユーザートークンは 403 です。
SUCCESS CVE-2026-59358 grant=client_credentials clients.write create-http=201 id=labwit-CVE-2026-59358-WITNESS CVE-2026-59358-WITNESS
何も学ばずに失う方法:
v79.7.0 以降UAA を v79.7.0 以降に、または cf-deployment を v60.5.0 にアップグレードしてください。それまでは、公開ユーザー向けグラントと client_credentials を同じ client_id に置かず、clients.write は専用の非公開クライアントに保持してください。
修正済みビルドに対して CVE-2026-59358-Abraxas-Labs.py を再実行してください: client_credentials 上のユーザー Bearer は非 200 のままでなければなりません。
hub.docker.com/r/cfidentity/uaa タグ v79.6.0
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected]
GNU Affero GPL v3.0。LICENSE を参照してください。
クライアントはループバックと通信します。所有していないシステムに対して使用することは Abraxas Labs によって許可されていません。保証はありません。
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected]