Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/george0papasotiriou/cve-2026-4444-jwt-algorithm-confusion-via-kid-injection
Authentification et AutorisationExploitationExploitation d'Applications WebCryptographieApprentissage et ÉducationSécurité des APILabs et Pratique
GitHubgeorge0papasotiriou/cve-2026-4444-jwt-algorithm-confusion-via-kid-injection

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-4444-JWT-Algorithm-Confusion-via-kid-Injection

POC pour CVE-2026-4444 démontrant une confusion d'algorithme JWT via l'injection d'un kid non fiable, incluant un serveur Node.js vulnérable et un exploit Python pour la falsification de jetons et l'escalade de privilèges.

Voir le dépôt
il y a 18 joursPas encore vérifié

CVE-2026-4444 – Confusion d'algorithme JWT via injection de kid

Code du programme (serveur Node.js + exploit Python)

root@kitploit:~
// jwt_server.js - Vulnerable JWT verification server
const express = require('express');
const jwt = require('jsonwebtoken');
const jwksClient = require('jwks-rsa');
const axios = require('axios');

const app = express();
app.use(express.json());

// Normally fetches public key from a JWKS endpoint, but vulnerable kid handling
async function getPublicKey(kid) {
    // Attacker can inject a kid that points to their own URL
    if (kid.startsWith('http://') || kid.startsWith('https://')) {
        // Fetch the key from attacker-controlled URL (INSECURE!)
        const response = await axios.get(kid);
        return response.data.publicKey; // expects PEM
    }
    // Otherwise use local JWKS (simulated)
    return `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1SU1LfVLPHCYZM5rPY4
...
-----END PUBLIC KEY-----`;
}

app.post('/api/verify', async (req, res) => {
    const token = req.body.token;
    const decoded = jwt.decode(token, { complete: true });
    const kid = decoded.header.kid;
    try {
        const publicKey = await getPublicKey(kid);
        const payload = jwt.verify(token, publicKey, { algorithms: ['RS256','HS256'] });
        res.json({ status: 'authenticated', user: payload.sub });
    } catch (e) {
        res.status(401).json({ error: e.message });
    }
});

app.listen(3000, () => console.log('JWT server on :3000'));

CVE-2026-4444 – Confusion d'algorithme JWT via injection de kid

Severity: Critical

Vue d'ensemble

Un service de vérification JWT fait aveuglément confiance à l'en-tête kid pour localiser la clé publique, ce qui permet à un attaquant de fournir une URL pointant vers sa propre clé. Cela conduit à une falsification complète de jeton et à une élévation de privilèges.

Détails de la vulnérabilité

  • Type : Confusion d'algorithme JWT / SSRF
  • Impact : Accès non autorisé, usurpation de l'identité d'un administrateur.
  • Cause racine : Le serveur récupère une clé publique depuis une URI kid contrôlée par l'utilisateur sans vérifier qu'elle appartient à une origine de confiance.

Démonstration de l'exploit

  1. Démarrez le serveur vulnérable :
    root@kitploit:~
    node jwt_server.js
    
  2. Exécutez l'exploit (qui lance également un faux serveur de clés) :
    root@kitploit:~
    python exploit_jwt_kid.py
    
Télécharger l’outil