
Proof-of-concept d'exploit pour CVE-2026-13447, un contournement d'authentification critique dans le plugin WordPress MStore API via des jetons JWT Firebase falsifiés, avec une reproduction en laboratoire local.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-13447
WordPress — MStore API 4.18.4 — inspireui
Le plugin Mstore Api pour WordPress est vulnérable à un contournement d'authentification par falsification de JWT dans les versions jusqu'à 4.20.0 incluse. Cela est dû à l'absence de vérification de signature cryptographique dans la fonction FirebasePhoneAuthHelper::verify_id_token(), qui décode et valide les revendications du jeton d'ID Firebase (alg, kid, aud, iss) mais n'appelle jamais openssl_verify() ni aucun équivalent pour valider la signature JWT par rapport aux certificats de clé publique réels de Google. Cela permet à des attaquants non authentifiés de falsifier un JWT Firebase Phone Auth signé avec une paire de clés RSA auto-générée et d'usurper n'importe quel numéro de téléphone, entraînant un accès non autorisé à des comptes WordPress existants ou la création de nouveaux comptes arbitraires.
| CVE | CVE-2026-13447 · CVE.org |
| CWE | CWE-287 |
| CVSS | Critique : 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Produit | WordPress — MStore API |
| Affecté | toutes les versions jusqu'à 4.20.0 (labo 4.18.4 ; pas de zip 4.20.0) |
| Corrigé | 4.21.1 et versions ultérieures |
| Auth | aucune (voir la cartographie source) |
| Licence | GNU Affero GPL v3.0 |
| Labo | 127.0.0.1 uniquement · pack de divulgation fournisseur/client, pas un scanner |
verify_id_token est le point de convergence. HTTP est POST firebase_sms_v2 avec un id_token JSON, et non un paramètre de requête nommé verify_id_token.
POST/wp-json/api/flutter_user/firebase_sms_v2GET Google x509 metadata, pick a kidBuild unsigned-verify JWT RS256 kid=that, aud=poc13447, iss=https://securetoken.google.com/poc13447, phone_number=+15551213447POST /wp-json/api/flutter_user/firebase_sms_v2 {id_token}verify_id_token skips openssl_verify, returns +15551213447firebase_sms_login_v2 get_users registered_phone_number=that phone -> user 1JSON cookie + displayname POCWitness13447Le corps JSON du POST contient POCWitness13447 (displayname de l'admin) et le cookie. Un 200 générique sans cette chaîne n'est pas le bon résultat.
À faire en premier : mettre à jour MStore API vers 4.21.1 ou une version ultérieure.
Vérifier après la mise à niveau
CVE-2026-13447-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 la boucle locale que vous avez liée). Ne pointez pas ce script vers Internet.
python3 CVE-2026-13447-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 n'est pas le bon résultat.
Pile en boucle locale utilisée pour la reproduction. Images officielles sauf si un Dockerfile dans ce dossier est construit 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 du plugin / tag source issu du tableau des versions). Ne publiez rien d'autre que 127.0.0.1.
plugins.trac.wordpress.org/browser/mstore-api/tags/4.18.4/controllers/flutter-user.php#L829
plugins.trac.wordpress.org/browser/mstore-api/tags/4.18.4/controllers/flutter-user.php#L940
plugins.trac.wordpress.org/browser/mstore-api/trunk/controllers/flutter-user.php#L829
plugins.trac.wordpress.org/browser/mstore-api/trunk/controllers/flutter-user.php#L940
www.wordfence.com/threat-intel/vulnerabilities/id/4a1127af-74f6-4748-9aee-5a8c6c2766a4?source=cve
Répertoire de plugins : mstore-api
Navigateur Trac : plugins.trac.wordpress.org/mstore-api
Tags SVN : plugins.svn.wordpress.org/mstore-api
Abraxas Labs : abraxaslabs.tech · github.com/abraxas · @abraxas_null
# CVE-2026-13447 (structured records)
- input: `https://nvd.nist.gov/vuln/detail/CVE-2026-13447`
- CWE: CWE-287
- published: 2026-09-05T06:17:09.403
## NVD description
The Mstore Api plugin for WordPress is vulnerable to Authentication Bypass via JWT Forgery in versions up to, and including, 4.20.0 This is due to missing cryptographic signature verification in the FirebasePhoneAuthHelper::verify_id_token() function, which decodes and validates Firebase ID token claims (alg, kid, aud, iss) but never calls openssl_verify() or any equivalent to validate the JWT signature against Google's actual public key certificates. This makes it possible for unauthenticated attackers to forge a Firebase Phone Auth JWT signed with a self-generated RSA key pair and impersonate any phone number, resulting in unauthorized access to existing WordPress accounts or creation of new arbitrary accounts.
## MITRE description
The Mstore Api plugin for WordPress is vulnerable to Authentication Bypass via JWT Forgery in versions up to, and including, 4.20.0 This is due to missing cryptographic signature verification in the FirebasePhoneAuthHelper::verify_id_token() function, which decodes and validates Firebase ID token claims (alg, kid, aud, iss) but never calls openssl_verify() or any equivalent to validate the JWT signature against Google's actual public key certificates. This makes it possible for unauthenticated attackers to forge a Firebase Phone Auth JWT signed with a self-generated RSA key pair and impersonate any phone number, resulting in unauthorized access to existing WordPress accounts or creation of new arbitrary accounts.
## Affected
- inspireui MStore API – Create Native Android & iOS Apps On The Cloud 0 affected
## References (JSON sources only)
- https://plugins.trac.wordpress.org/browser/mstore-api/tags/4.18.4/controllers/flutter-user.php#L829
- https://plugins.trac.wordpress.org/browser/mstore-api/tags/4.18.4/controllers/flutter-user.php#L940
- https://plugins.trac.wordpress.org/browser/mstore-api/tags/4.18.4/controllers/helpers/firebase-phone-auth-helper.php#L5
- https://plugins.trac.wordpress.org/browser/mstore-api/trunk/controllers/flutter-user.php#L829
- https://plugins.trac.wordpress.org/browser/mstore-api/trunk/controllers/flutter-user.php#L940
- https://plugins.trac.wordpress.org/browser/mstore-api/trunk/controllers/helpers/firebase-phone-auth-helper.php#L5
- https://www.wordfence.com/threat-intel/vulnerabilities/id/4a1127af-74f6-4748-9aee-5a8c6c2766a4?source=cve
- https://github.com/advisories/GHSA-6wfp-pwm3-667v
- https://nvd.nist.gov/vuln/detail/CVE-2026-13447
## GitHub advisory
The Mstore Api plugin for WordPress is vulnerable to Authentication Bypass via JWT Forgery in...
The Mstore Api plugin for WordPress is vulnerable to Authentication Bypass via JWT Forgery in versions up to, and including, 4.20.0 This is due to missing cryptographic signature verification in the FirebasePhoneAuthHelper::verify_id_token() function, which decodes and validates Firebase ID token claims (alg, kid, aud, iss) but never calls openssl_verify() or any equivalent to validate the JWT signature against Google's actual public key certificates. This makes it possible for unauthenticated attackers to forge a Firebase Phone Auth JWT signed with a self-generated RSA key pair and impersonate any phone number, resulting in unauthorized access to existing WordPress accounts or creation of new arbitrary accounts.
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 labos autorisés. Le script communique avec 127.0.0.1. L'utiliser contre des systèmes que vous ne possédez pas n'est pas autorisé par Abraxas Labs. Aucune garantie.