
Pack de divulgation et PoC Python pour CVE-2026-5430, une faille de confusion d'algorithme JWT dans WSO2 API Manager 4.5.0 permettant une prise de contrôle de compte administrateur sans authentification.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-5430
WSO2 API Manager 4.5.0 — WSO2
Le mécanisme d'authentification JWT accepte des jetons signés avec des algorithmes autres que ceux explicitement configurés ou pris en charge. Cela permet à un attaquant de forger un JWT avec un algorithme non pris en charge, qui est ensuite validé de manière incorrecte, entraînant un accès non autorisé.
| CVE | CVE-2026-5430 · CVE.org |
| CWE | CWE-347 |
| CVSS | Critique : 10.0 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Produit | WSO2 API Manager |
| Affecté | toutes les versions jusqu'à 4.5.0 (incluse) |
| Corrigé | 4.5.0 update 57 (communauté : carbon-apimgt PR 13752) et versions ultérieures |
| Auth | non authentifié (voir la cartographie des sources) |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 uniquement · pack de divulgation fournisseur/client, pas un scanner |
carbon-apimgt JWTUtil.verifyTokenSignature et OAuthAuthenticationInterceptor. Le correctif PR 13752 lève OAuthAuthenticationInterceptorException. Le test fournisseur product-apim PR 14167 forge un JWT admin HS256.
GET/api/am/admin/v4/tenant-configGET /api/am/admin/v4/tenant-config Authorization Bearer HS256 JWT (no kid)OAuthAuthenticationInterceptor extracts JWT (token contains '.')OAuthJwtAuthenticatorImpl.validateJWTToken -> JWTValidatorImpl.validateSignatureJWTUtil.verifyTokenSignature(jwt, alias) throws APIManagementException for HS256pre-patch interceptor catch logs and returns; request proceeds as claimed admin200 JSON non authentifié depuis /api/am/admin/v4/tenant-config avec un Bearer HS256 forgé. Le contrôle GET sans jeton renvoie 401.
À faire en premier : Mettez à jour WSO2 API Manager vers 4.5.0 update 57 (communauté : carbon-apimgt PR 13752) ou une version plus récente.
Vérifier après la mise à niveau
CVE-2026-5430-Abraxas-Labs.py contre la version corrigée : le témoin cartographié ne doit pas apparaître.Si vous ne pouvez pas mettre à jour immédiatement
Ciblez uniquement http://127.0.0.1:8088 (ou le loopback que vous avez lié). Ne pointez pas ce script vers Internet.
python3 CVE-2026-5430-Abraxas-Labs.py
Le succès correspond au témoin ci-dessus dans le corps de la réponse. Un 200 HTML générique ne l'est pas.
Pile loopback utilisée pour la reproduction. Images officielles sauf si un Dockerfile dans ce dossier compile depuis les sources.
cd lab
docker compose up --force-recreate
Liez l'arborescence du produit vulnérable à côté de Compose si le YAML monte un répertoire local (zip de plugin / tag source issu du tableau des versions). Ne publiez rien d'autre que 127.0.0.1.
# CVE-2026-5430 / WSO2-2026-5328
CWE: CWE-347
CVSS: Critical 10.0 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H (vendor). Single-tenant 9.8. CISA KEV 2026-09-24.
## Description
The JWT authentication mechanism accepts tokens signed with algorithms other than those explicitly configured or supported. An HS256 token with no kid makes `JWTUtil.verifyTokenSignature` throw; pre-patch `OAuthAuthenticationInterceptor` swallows `APIManagementException` and continues, so the Admin/Publisher REST call runs with the token claims (including `sub=admin`).
## Product
WSO2 API Manager 4.5.0 GA Docker Hub image (no Updates). Same carbon-apimgt on API Control Plane 4.5.0/4.6.0, API Manager 4.1.0-4.6.0, Traffic Manager 4.5.0/4.6.0, Universal Gateway 4.5.0/4.6.0.
Ce pack de divulgation est sous licence GNU Affero General Public License v3.0. Voir LICENSE.
Ce pack est destiné au fournisseur, au propriétaire du site et aux labs autorisés. Le script communique avec 127.0.0.1. Son utilisation contre des systèmes que vous ne possédez pas n'est pas autorisée par Abraxas Labs. Aucune garantie.