
CVE-2026-61500 के लिए Python PoC और Docker लैब: admin session cookie को forge करने और server_code के माध्यम से RCE प्राप्त करने के लिए Rejetto HFS V8 PRNG state को recover करता है।
CVE-2026-61500, Rejetto HFS 3.0.0 से 3.2.0 तक में एक अनधिकृत सत्र-जालसाजी (session-forgery) भेद्यता है। HFS ने अपनी Koa सत्र-कुकी हस्ताक्षर कुंजी को JavaScript Math.random() से उत्पन्न किया था और अनधिकृत SRP लॉगिन हैंडशेक में उसी V8 PRNG के आउटपुट उजागर किए थे। एक हमलावर PRNG स्थिति का पुनर्निर्माण कर सकता है, हस्ताक्षर कुंजी पुनर्प्राप्त कर सकता है, प्रशासक सत्र जाली बना सकता है, और प्रलेखित server_code कॉन्फ़िगरेशन सुविधा का उपयोग करके सर्वर-साइड JavaScript निष्पादित कर सकता है।
इस रिपॉज़िटरी में एक Python प्रूफ़ ऑफ़ कॉन्सेप्ट और आधिकारिक HFS 3.2.0 तथा 3.2.1 इमेज का उपयोग करने वाला एक डिस्पोज़ेबल Docker तुलना शामिल है। प्रकाशन बिल्ड को जानबूझकर लोकल लूपबैक इंटरफ़ेस पर HTTP लक्ष्यों तक सीमित रखा गया है।
| कथन | स्थिति |
|---|---|
| अनधिकृत लॉगिन प्रतिक्रियाओं से V8 xorshift128+ स्थिति पुनर्प्राप्त करना | पुष्ट |
| सक्रिय HFS कुकी-हस्ताक्षर कुंजी पुनर्प्राप्त करना | पुष्ट |
| HFS प्रशासक के रूप में स्वीकृत सत्र जाली बनाना | पुष्ट |
आधिकारिक HFS 3.2.0 में एक सौम्य server_code मार्कर निष्पादित करना | पुष्ट |
| पृथक Compose नेटवर्क के भीतर रूट रिवर्स शेल प्राप्त करना | पुष्ट |
| आधिकारिक HFS 3.2.1 पर सत्र जालसाजी से पहले रुकना | पुष्ट |
| इंटरनेट-व्यापी लक्ष्यीकरण या दृढ़ता | प्रदान या दावा नहीं किया गया |
admin खाते के लिए छह अनधिकृत loginSrp1 API अनुरोध भेजें। प्रत्येक भेद्य प्रतिक्रिया एक संख्यात्मक loggingIn.sid और उसका हस्ताक्षरित सत्र कुकी Set-Cookie हेडर में रखती है।randomId(30) द्वारा उपयोग किए जाने वाले तीन base-36 खंडों को पुनरुत्पादित करें। PoC V8 की shortest-string राउंडिंग को ध्यान में रखता है और उम्मीदवारों को एक देखे गए hfs_http.sig HMAC के विरुद्ध जाँचता है, जो स्टार्टअप ऑफ़सेट की भी पहचान करता है।username: admin युक्त एक कृत्रिम सत्र पर हस्ताक्षर करें, फिर यह सिद्ध करने के लिए get_config कॉल करें कि जाली कुकी के पास प्रशासक पहुँच है।server_code मॉड्यूल के साथ set_config कॉल करें। डिफ़ॉल्ट पेलोड /data में एक सौम्य मार्कर लिखता है; केवल लूपबैक Docker लैब के लिए उपलब्ध है।यह एक ब्लैक-बॉक्स HTTP श्रृंखला है: PoC लक्ष्य से फ़ाइलें, मेमोरी, पर्यावरण चर, या प्रक्रिया स्थिति नहीं पढ़ता। स्रोत ज्ञान का उपयोग भेद्य एल्गोरिद्म को मॉडल करने के लिए किया जाता है।
59472e534bf7e056d708382d02935c2eaf956927।फ़िक्स हस्ताक्षर कुंजी को Node.js randomBytes() से 32 बाइट्स से बदल देता है और उजागर संख्यात्मक लॉगिन पहचानकर्ता को randomUUID() से बदल देता है। एक स्पष्ट मज़बूत COOKIE_SIGN_KEYS मान प्रदान करना हस्ताक्षर-कुंजी पूर्वानुमान को कम करता है, लेकिन अपग्रेड करना ही अनुशंसित उपचार बना हुआ है।
rejetto/hfs:v3.2.0, डाइजेस्ट
sha256:d6765e93b68de222583be7788afad699695fd08aa2f56377337f5139779e0746।rejetto/hfs:v3.2.1, डाइजेस्ट
sha256:61db4da1f494df254aa7f48889c676b424b413e45b7b92cf4276f4b8e632aaec।python:3.13-alpine, डाइजेस्ट
sha256:1a63a53928ce53d2b0baf08092a703f4840ac5dfbd61fd48802dbf48e08c801e।दोनों HFS सेवाएँ केवल होस्ट लूपबैक से बाइंड होती हैं; कॉलबैक कोई पोर्ट प्रकाशित नहीं करता। लैब एक कृत्रिम प्रशासक बनाती है क्योंकि loginSrp1 को किसी मौजूदा उपयोगकर्ता नाम के लिए आमंत्रित किया जाना चाहिए; पासवर्ड न तो ज्ञात है और न ही शोषण द्वारा उपयोग किया जाता है।
आवश्यकताएँ हैं Compose के साथ Docker, Python 3.10 या नया, और curl।
./verify.sh
सत्यापनकर्ता केवल lab/runtime/vulnerable और lab/runtime/fixed को हटाता है, दोनों डाइजेस्ट-पिन्ड इमेज शुरू करता है, सकारात्मक और नकारात्मक नियंत्रण चलाता है, और डिफ़ॉल्ट रूप से कंटेनर बंद कर देता है। निरीक्षण के लिए लैब चालू रखने हेतु KEEP_LAB=1 ./verify.sh का उपयोग करें।
लैब बनाए रखने पर, सीधा सौम्य-मार्कर आह्वान यह है:
python3 cve-2026-61500-poc.py \
--target http://127.0.0.1:28182 \
--marker cve-2026-61500-rce-marker.txt
स्वामित्व वाले लैब कंटेनर के भीतर कमांड निष्पादन प्रदर्शित करने के लिए:
python3 cve-2026-61500-poc.py \
--target http://127.0.0.1:28182 \
--command 'id > /data/cve-command-output.txt'
कोई भी गैर-लूपबैक होस्टनाम, HTTPS लक्ष्य, या रिमोट IP आर्ग्युमेंट सत्यापन द्वारा अस्वीकार कर दिया जाता है। शोषण HFS server_code को संशोधित करता है; केवल डिस्पोज़ेबल लैब या ऐसे सिस्टम का उपयोग करें जिसके लिए आपके पास स्पष्ट प्राधिकरण हो।
रिकॉर्ड किया गया डेमो एक कदम आगे जाता है: demo.sh Compose नेटवर्क पर अनएक्सपोज़्ड callback सेवा शुरू करता है और उससे Bash रिवर्स शेल कनेक्ट करने के लिए --command का उपयोग करता है। कॉलबैक केवल id, uname -a, pwd, और exit भेजता है, ट्रांसक्रिप्ट को अनदेखे lab/runtime/ के अंतर्गत रिकॉर्ड करता है, और बंद हो जाता है। होस्ट पर कोई कॉलबैक पोर्ट बाइंड नहीं होता।
वास्तविक 2026-09-26 रन ने एक PRNG स्थिति और उसकी हस्ताक्षर कुंजी पुनर्प्राप्त की, एक जाली प्रशासनिक get_config के लिए HTTP 200 प्राप्त किया, मार्कर पेलोड स्थापित किया, और भेद्य कंटेनर में CVE_2026_61500_RCE_CONFIRMED देखा। एक अलग --command 'id > /data/cve-command-output.txt' नियंत्रण ने उस आधिकारिक कंटेनर के भीतर uid=0(root) gid=0(root) groups=0(root) उत्पन्न किया। रिकॉर्ड किए गए केवल-Docker रिवर्स शेल ने स्वतंत्र रूप से वही रूट पहचान और /data कार्यशील निर्देशिका लौटाई। 3.2.1 के विरुद्ध, पहली लॉगिन प्रतिक्रिया में एक अपारदर्शी UUID था और PoC सत्र जालसाजी का प्रयास करने से पहले स्टेटस 3 के साथ बाहर निकल गया। देखें
docs/example-output.txt और
docs/e2e-results.json।
2026-09-26 को, सटीक CVE और exploit/PoC खोजें SearchSploit (स्थानीय Exploit-DB इंडेक्स), GitHub-इंडेक्स्ड वेब परिणाम, Packet Storm, Exploit-DB, और सामान्य वेब के विरुद्ध चलाई गईं। उस समय कोई कार्यशील सार्वजनिक शोषण की पहचान नहीं हुई; परिणामों में केवल CVE/advisory मेटाडेटा और exploit-tracking पृष्ठ मिले। यह एक दिनांकित, सर्वोत्तम-प्रयास परिणाम है, यह दावा नहीं कि कोई शोषण कहीं और मौजूद नहीं हो सकता या बाद में प्रकट नहीं हो सकता।
<[email protected]>
(Twitter: @aramosf)।केवल अधिकृत सुरक्षा अनुसंधान, रक्षात्मक सत्यापन, और शिक्षा के लिए। अनुमति प्राप्त करना और लागू कानून का पालन करना आपकी ज़िम्मेदारी है।
--command