
CVE-2026-49757 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट जो AshAuthentication में ईमेल-आधारित उपयोगकर्ता मिलान के माध्यम से OAuth2/OIDC अकाउंट टेकओवर को प्रदर्शित करता है, जिसमें कमजोर और फिक्स्ड हैंडलर सिमुलेशन शामिल हैं।
CVE-2026-49757 के लिए प्रूफ ऑफ कॉन्सेप्ट — AshAuthentication में एक गंभीर कमजोरी जहां OAuth2/OIDC कॉलबैक (strategy, sub) पहचान जोड़ी के बजाय ईमेल पते द्वारा स्थानीय उपयोगकर्ता खातों को हल करते थे, जिससे अप्रमाणित खाता अधिग्रहण संभव हो पाता था।
| क्षेत्र | मान |
|---|---|
| CVE | CVE-2026-49757 |
| CVSS 4.0 | 9.2 (गंभीर) |
| CWE | CWE-290 (स्पूफिंग द्वारा प्रमाणीकरण बायपास) |
| GHSA | GHSA-777c-2fxx-qr28 |
| प्रभावित | ash_authentication >= 0.1.0, < 4.14.0 and >= 5.0.0-rc.0, < 5.0.0-rc.10 |
| पैच किया गया | 4.14.0, 5.0.0-rc.10 |
पीड़ित के क्रेडेंशियल की आवश्यकता नहीं है। हमलावर को केवल पीड़ित के ईमेल पते और लक्ष्य द्वारा स्वीकार किए जाने वाले किसी भी OAuth प्रदाता पर एक खाते की आवश्यकता है।
# Interactive mode (recommended)
python3 exploit.py
# Non-interactive mode (piped input)
echo | python3 exploit.py
AshAuthentication के IdentityChange.change/3 का अनुकरण करता है जिसमें upsert_identity: :unique_email है:
[email protected] (भूमिका: admin) से पंजीकरण करता हैgoogle-victim-real-12345)[email protected] (email_verified: false) से पंजीकरण करता है:reject नीति (डिफ़ॉल्ट)पैच किए गए UserResolver का अनुकरण करता है जो (strategy, sub) लुकअप का उपयोग करता है:
keycloak-attacker-fake-789) user_identities में नहीं मिलताon_untrusted_email_match: :reject लॉगिन को अवरुद्ध करता है:confirm नीतिtrust_email_verified? = trueemail_verified: true के साथ Google के माध्यम से साइन इन करता है → स्वत: लिंकिंग सफल होती हैemail_verified: false के साथ Keycloak के माध्यम से साइन इन करता है → अवरुद्ध| फ़ाइल | विवरण |
|---|---|
exploit.py | मुख्य PoC स्क्रिप्ट — सभी 4 चरण चलाती है |
vulnerable_handler.py | सिम्युलेटेड OAuth कॉलबैक हैंडलर (कमजोर + फिक्स्ड) |
UserResolver मॉड्यूल — ईमेल के बजाय (strategy, sub) पहचान द्वारा उपयोगकर्ताओं को हल करता हैon_untrusted_email_match विकल्प — अज्ञात subs के लिए :reject (डिफ़ॉल्ट), :confirm, या :warntrust_email_verified? विकल्प — प्रति-प्रदाता फ्लैग, GitHub/Google/Auth0/Slack/Apple के लिए डिफ़ॉल्ट true(strategy, uid, user_id) से (strategy, uid) में बदल दी गईuser_id कभी अपडेट नहीं होताidentity_resource नहीं हैयह PoC केवल शैक्षिक और रक्षात्मक परीक्षण उद्देश्यों के लिए है। केवल उन सिस्टमों पर परीक्षण करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति है।