MoyenneCVE-2026-116684
Model Context Protocol Python SDK : l'authentification par jeton serveur accepte les jetons émis pour un serveur de ressources différent
Exploitable dans des cas précis ou avec un impact limité : à corriger à la prochaine mise à jour.
- Sévérité
- Moyenne6.8 / 10
- Publiée le
- 2026(e)ko urriaren 27(a)
- Mise à jour
- 2026(e)ko urriaren 27(a)
L'avis
Traduction automatique de l'avis officiel. En cas de doute, l'avis d'origine, plus bas, fait foi.
Résumé
Dans les versions affectées, l'authentification par jeton côté serveur du SDK n'avait aucun moyen de vérifier qu'un jeton avait été émis pour votre serveur (son public). Lorsqu'un serveur d'autorisation émet des jetons pour plusieurs services, un jeton valide pour un autre service était également accepté par votre serveur MCP.
Suis-je concerné ?
Oui, si votre serveur HTTP utilise l'authentification par jeton du SDK (auth=AuthSettings(...) avec token_verifier=), que son serveur d'autorisation émet également des jetons pour d'autres services, et que votre TokenVerifier ne vérifie pas le public (aud) du jeton lui-même.
Versions affectées :
mcp1.10.0 à 1.29.1mcp2.0.0 à 2.1.1
Correction
Mettez à jour vers :
- 1.x :
mcp1.30.0 ou version ultérieure - 2.x :
mcp2.2.0 ou version ultérieure
La mise à jour seule ne change rien. Les versions corrigées ajoutent un paramètre validate_token_resource qui est désactivé sauf à le définir. Pour activer la vérification, apportez ces deux changements ensemble :
- Définissez
validate_token_resource=TruedansAuthSettings, avecresource_server_urldéfini sur le public que votre serveur d'autorisation place dans les jetons pour votre serveur. - Retournez le public du jeton depuis
verify_token()en tant queAccessToken.resource.
Un jeton pour un autre service reçoit alors un 401. Avec seulement le premier changement, chaque demande reçoit un 401.
Si votre TokenVerifier vérifie déjà le public, définissez validate_token_resource=False pour supprimer l'avertissement de dépréciation. Le paramètre sera activé par défaut dans la version 3.0.
Si vous ne pouvez pas encore mettre à jour, rejetez tout jeton dont le aud ne contient pas votre serveur à l'intérieur de verify_token(). Cela corrige le problème sur toutes les versions.
Composants touchés
| Composant | Versions touchées | Corrigé en |
|---|---|---|
| mcpPython (pip) | >= 2.0.0, < 2.2.0 | 2.2.0 |
| mcpPython (pip) | >= 1.10.0, < 1.30.0 | 1.30.0 |
Vous utilisez une version touchée ? Passez à la version corrigée, puis redéployez.