
OliveTin एक सेल्फ-होस्टेड वेब UI है जो अंतिम उपयोगकर्ताओं के लिए पूर्व-परिभाषित शेल कमांड उपलब्ध कराता है। इस रिपॉजिटरी में एक प्रूफ-ऑफ-कॉन्सेप्ट शामिल है जो OliveTin के शेल मोड निष्पादन पथ में दो स्वतंत्र OS कमांड इंजेक्शन वैक्टर प्रदर्शित करता है, जिनमें से दोनों एप्लिकेशन की इच्छित शेल-आर्गुमेंट सुरक्षा जाँचों को बायपास करते हैं।
| CVE ID | CVE-2026-27626 |
| घटक | OliveTin |
| भेद्यता वर्ग | CWE-78: OS कमांड में विशेष तत्वों का अनुचित निराकरण |
| CVSS 3.1 | 9.9–10.0 (गंभीर) — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| प्रभावित संस्करण | 3000.10.0 तक के सभी संस्करण (0.0.0-20260222101908-4bbd2eab1532 से पहले के कमिट) |
| स्थिर संस्करण | 0.0.0-20260222101908-4bbd2eab1532 या बाद का |
| परामर्श | GHSA-49gm-hh7w-wfvf |
| प्रकटीकरण | 2026-02-22 (परामर्श), 2026-02-25 (NVD) |
OliveTin एक स्व-होस्टेड वेब UI है जो अंतिम उपयोगकर्ताओं को पूर्वनिर्धारित शेल कमांड का उपयोग करने की अनुमति देता है। इस रिपॉजिटरी में OliveTin के Shell मोड निष्पादन पथ में दो स्वतंत्र OS कमांड इंजेक्शन वैक्टर का प्रमाण-अवधारणा शामिल है, जो दोनों एप्लिकेशन के इच्छित शेल-आर्गुमेंट सुरक्षा जांचों को बायपास करते हैं।
OliveTin एक व्यवस्थापक को Actions परिभाषित करने देता है — पैरामीटरीकृत तर्कों के साथ शेल कमांड — जिन्हें प्रमाणित (या, कॉन्फ़िग के आधार पर, अनाम) उपयोगकर्ता वेब UI या वेबहुक के माध्यम से ट्रिगर कर सकते हैं। उपयोगकर्ताओं को तर्क मानों के माध्यम से इच्छित कमांड से बाहर निकलने से रोकने के लिए, OliveTin प्रत्येक उपयोगकर्ता-आपूर्ति किए गए तर्क को checkShellArgumentSafety() से गुज़रता है, फिर उसे कमांड स्ट्रिंग में टेम्पलेट करके sh -c को सौंपता है।
यह सुरक्षा सीमा है जिसे भेद्यता तोड़ती है। OliveTin स्पष्ट रूप से "व्यवस्थापक कमांड को परिभाषित करता है" और "उपयोगकर्ता मान प्रदान करता है" के बीच अंतर करता है — सुरक्षा जांच विशेष रूप से इसलिए मौजूद है ताकि उपयोगकर्ता किसी तर्क मान को मनमानी कमांड चलाने के तरीके में न बदल सके।
password तर्क प्रकार की जाँच नहीं की गईcheckShellArgumentSafety() केवल तर्क प्रकारों की एक निश्चित अनुमति-सूची को स्वच्छ करता है:
func checkShellArgumentSafety(argType string, value string) bool {
dangerousTypes := []string{"string", "int", "bool", "choice"}
for _, dt := range dangerousTypes {
if argType == dt {
return sanitizeInput(value)
}
}
// BUG: "password" type not checked
return true // Assumes safe
}
password संवेदनशील उपयोगकर्ता इनपुट स्वीकार करने के लिए एक दस्तावेजी, इच्छित तर्क प्रकार है — लेकिन यह dangerousTypes में नहीं है, इसलिए यह बिना स्वच्छ किए return true तक गिर जाता है। कोई भी उपयोगकर्ता जो Shell-मोड Action पर password-प्रकार के तर्क को भर सकता है, शेल मेटाकैरेक्टर (;, |, `, $(), आदि) इंजेक्ट कर सकता है जो OliveTin प्रक्रिया उपयोगकर्ता के रूप में मनमानी कमांड निष्पादित करता है।
यहाँ शोषण क्षमता OliveTin के डिफ़ॉल्ट द्वारा प्रवर्धित है: स्व-पंजीकरण सक्षम है और authType: none डिफ़ॉल्ट रूप से, इसलिए कई वास्तविक तैनातियों में "प्रमाणित उपयोगकर्ता" के लिए कोई वास्तविक बाधा नहीं होती है।
वेक्टर 1 से स्वतंत्र, OliveTin का वेबहुक हैंडलर इनबाउंड वेबहुक के JSON बॉडी से मनमाने key/value जोड़े निकालता है और उन्हें सीधे ExecutionRequest.Arguments (service/internal/executor/handler.go:153-157) में इंजेक्ट करता है।
चूँकि इन वेबहुक-व्युत्पन्न कुंजियों के लिए एक्शन के कॉन्फ़िग में कोई संगत ActionArgument परिभाषित नहीं है, parseActionArguments() (arguments.go) कोई तर्क प्रकार नहीं ढूँढता है जिसे जाँचा जा सके और यह checkShellArgumentSafety() को पूरी तरह से छोड़ देता है — न केवल password के लिए, बल्कि हर प्रकार के लिए। कच्चा मान शेल कमांड में टेम्पलेट किया जाता है और बिना किसी सत्यापन के sh -c को भेज दिया जाता है।
चूँकि बाहरी/अविश्वसनीय स्रोतों से इनबाउंड वेबहुक प्राप्त करना OliveTin के प्रमुख समर्थित उपयोग मामलों में से एक है, इस वेक्टर के लिए बिल्कुल प्रमाणीकरण की आवश्यकता नहीं है।
Shell मोड में चलने वाला OliveTin इंस्टेंस जिसमें कोई भी वेबहुक-ट्रिगर Action है, अप्रमाणित रिमोट कोड निष्पादन के लिए असुरक्षित है, जिसमें OliveTin प्रक्रिया के विशेषाधिकार हैं — संभावित रूप से पूर्ण होस्ट समझौता, यह इस बात पर निर्भर करता है कि OliveTin को कैसे तैनात किया गया है (बेयर मेटल बनाम कंटेनर, दी गई क्षमताएँ, आदि)।
आप शायद असुरक्षित हैं यदि आपका OliveTin इंस्टेंस:
password-प्रकार का तर्क है जो अविश्वसनीय/निम्न-विशेषाधिकार वाले उपयोगकर्ताओं के लिए सुलभ है (वेक्टर 1), याpython3 CVE-2026-27626.py -u <TARGET> [OPTIONS]
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
-u, --url | लक्ष्य होस्ट/IP | आवश्यक |
-p, --port | OliveTin पोर्ट | 1337 |
-x, --cmd | निष्पादित करने का आदेश | id |
0.0.0-20260222101908-4bbd2eab1532 या उसके बाद के संस्करण पर जैसे ही यह आपके अपडेट चैनल में उपलब्ध हो।password-प्रकार के तर्क को हटाएँ या उससे बचें जो अविश्वसनीय उपयोगकर्ताओं के लिए सुलभ हो।authType को none के अलावा कुछ और सेट करें)।| तिथि | घटना |
|---|---|
| 2026-02-20 | CVE आरक्षित |
| 2026-02-22 | GitHub सुरक्षा परामर्श प्रकाशित |
| 2026-02-25 | NVD प्रकाशन |
| 2026-02-27 | परामर्श अद्यतन |
यह PoC केवल रक्षात्मक अनुसंधान, डिटेक्शन-इंजीनियरिंग और अधिकृत पेनिट्रेशन परीक्षण उद्देश्यों के लिए प्रकाशित किया गया है। इसे उन सिस्टमों के विरुद्ध न चलाएँ जिनके आप स्वामी नहीं हैं या जिनके लिए आपके पास स्पष्ट लिखित प्राधिकरण नहीं है। तृतीय-पक्ष सिस्टमों के विरुद्ध इस कोड का दुरुपयोग कंप्यूटर अपराध कानूनों (जैसे, अमेरिका में CFAA, यूके में कंप्यूटर मिसयूज़ एक्ट, और अन्यत्र समकक्ष क़ानून) का उल्लंघन कर सकता है और इसका पूर्ण दायित्व इसे निष्पादित करने वाले व्यक्ति पर है।
Md Saikat (0xh7ml)