
यह सुरक्षित रूप से पता लगाएं कि क्या UniFi OS Server CVE-2026-34908 के लिए असुरक्षित है।
UniFi OS Server ≤ 5.0.6 में बिना प्रमाणीकरण के रिमोट कोड निष्पादन श्रृंखला के लिए एक सुरक्षित डिटेक्टर, Ubiquiti सुरक्षा सलाह बुलेटिन 064 में प्रकट किया गया:
| CVE | श्रेणी | श्रृंखला में भूमिका |
|---|---|---|
| CVE-2026-34908 / CVE-2026-34909 | अनुचित पहुंच नियंत्रण / पथ ट्रैवर्सल | प्रमाणीकरण-गेटवे बाईपास (पैर जमाने का बिंदु) |
| CVE-2026-34910 | अनुचित इनपुट सत्यापन → कमांड इंजेक्शन | बाईपास के माध्यम से बिना प्रमाणीकरण के RCE तक पहुँचा गया |
UniFi OS Server 5.0.8 में ठीक किया गया।
हाँ। डिटेक्टर उत्पादन और मूल्यांकन उपयोग के लिए डिज़ाइन किया गया है:
GET है।VULNERABLE निर्णय के लिए आवश्यक है कि प्रमाणीकरण-बाईपास कमजोर हैंडलर तक पहुँचे और एक आधारभूत अनुरोध (समान एंडपॉइंट, बिना बाईपास) को सही ढंग से 401 के साथ अस्वीकार किया गया हो।UniFi OS अपनी सेवाओं को nginx के साथ सामने रखता है, जो एक उप-अनुरोध के माध्यम से प्रमाणीकरण लागू करता है। वह प्रमाणीकरण जाँच किसी भी अनुरोध को जिसका कच्चा URI /api/auth/validate-sso/ से शुरू होता है, सार्वजनिक मानती है, लेकिन nginx सामान्यीकृत URI का उपयोग करके बैकएंड पर रूट करता है (यह %2f→/ को प्रतिशत-डिकोड करता है और ../ को संकुचित करता है)। एक अनुरोध जैसे:
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package
इसलिए इसे सार्वजनिक (कच्चा उपसर्ग) माना जाता है, फिर भी प्रमाणित आंतरिक पैकेज-अपडेट एंडपॉइंट (सामान्यीकृत पथ) पर रूट किया जाता है। बिना pkg_name के, वह एंडपॉइंट query param pkg_name required का उत्तर देता है — यह साबित करता है कि बाईपास काम करता है और कमजोर हैंडलर तक पहुँचा जा सकता है।
डिटेक्टर बाईपास के बिना समान एंडपॉइंट पर एक आधारभूत अनुरोध भी भेजता है और किसी होस्ट को कमजोर घोषित करने से पहले उसे 401 लौटाने की आवश्यकता होती है। जाँच सीधे कमजोर व्यवहार का परीक्षण करती है — VULNERABLE निर्णय का अर्थ है कि बाईपास वास्तव में सिंक तक पहुँच गया।
जब भी प्रोब सकारात्मक रूप से VULNERABLE या PATCHED की पुष्टि नहीं करता, डिटेक्टर रूट पेज प्राप्त करता है और UniFi OS प्रबंधन-पोर्टल फिंगरप्रिंट ( <title>UniFi OS</title>, window.UNIFI_OS_MANIFEST,id="portal-root", id="site-manager_portal-container") की तलाश करता है। यह 401 पर भी लागू होता है: एक UniFi OS होस्ट जो बाईपास पर प्रमाणीकरण लागू करता है वह INCONCLUSIVE है, लेकिन एक गैर-UniFi प्रॉक्सी जो बस सब कुछ 401 करता है, उसमें कोई फिंगरप्रिंट नहीं होता और इसे UNAFFECTED रिपोर्ट किया जाता है। इसलिए प्रत्येक "कमजोर नहीं" परिणाम फिंगरप्रिंट पर आधारित होता है: मार्कर मौजूद → INCONCLUSIVE; मार्कर अनुपस्थित → UNAFFECTED (CVE लागू नहीं होता)।
# single host (default port 11443)
./cve_2026_34908_check.py 192.168.1.10
# explicit port / URL forms
./cve_2026_34908_check.py host-a:11443 https://host-b
# scan a list, one target per line ('#' comments allowed), compact output
./cve_2026_34908_check.py -f targets.txt --brief
# machine-readable output for pipelines
./cve_2026_34908_check.py -f targets.txt --json > results.json
एक कमजोर कंसोल (विस्तृत, डिफ़ॉल्ट)। दूसरी पंक्ति निर्णय का विवरण है; [!] मार्कर और VULNERABLE TTY पर लाल रंग में दिखाई देते हैं:
$ ./cve_2026_34908_check.py 192.168.1.10
[!] 192.168.1.10:11443: VULNERABLE
auth bypass reached the vulnerable handler (no command executed); baseline correctly 401
एक पैच किया गया कंसोल (5.0.8+):
$ ./cve_2026_34908_check.py 192.168.1.11
[+] 192.168.1.11:11443: PATCHED
nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior
एक पुष्टि किया गया UniFi OS होस्ट जिसे प्रोब वर्गीकृत नहीं कर सका → INCONCLUSIVE। विवरण पंक्ति दो मामलों (प्रमाणीकरण लागू बनाम अप्रत्याशित प्रतिक्रिया) के बीच अंतर करती है:
$ ./cve_2026_34908_check.py 192.168.1.12 192.168.1.13
[?] 192.168.1.12:11443: INCONCLUSIVE
bypass blocked / auth enforced (HTTP 401) on a confirmed UniFi OS host — not confirmed vulnerable
[?] 192.168.1.13:11443: INCONCLUSIVE
UniFi OS detected, but probe returned an unexpected response: HTTP 302 text/html
एक होस्ट जो बिल्कुल UniFi OS नहीं है → UNAFFECTED (सलाह लागू नहीं होती):
$ ./cve_2026_34908_check.py 203.0.113.9:443
[-] 203.0.113.9:443: UNAFFECTED
no UniFi OS web fingerprint on / (probe HTTP 404) — target is not a UniFi OS Server
एक सूची स्कैन करें, प्रति होस्ट एक संरेखित पंक्ति (--brief)। यदि कोई होस्ट VULNERABLE है तो निकास स्थिति 1 है, अन्यथा 0 — स्क्रिप्ट में उपयोगी:
$ ./cve_2026_34908_check.py -f targets.txt --brief; echo "exit: $?"
VULNERABLE 192.168.1.10:11443
PATCHED 192.168.1.11:11443
INCONCLUSIVE 192.168.1.12:11443
UNAFFECTED 203.0.113.9:443
ERROR 10.0.0.1:11443 timeout
exit: 1
पाइपलाइनों के लिए मशीन-पठनीय आउटपुट (--json)। प्रत्येक परिणाम में verdict और उसके पीछे bypass.state/bypass.detail होता है; ERROR परिणामों में bypass के बजाय error फ़ील्ड होता है:
$ ./cve_2026_34908_check.py 192.168.1.10 192.168.1.11 10.0.0.1 --json
[
{
"target": "192.168.1.10:11443",
"bypass": {
"state": "vulnerable",
"detail": "auth bypass reached the vulnerable handler (no command executed); baseline correctly 401"
},
"verdict": "VULNERABLE"
},
{
"target": "192.168.1.11:11443",
"bypass": {
"state": "patched",
"detail": "nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior"
},
"verdict": "PATCHED"
},
{
"target": "10.0.0.1:11443",
"verdict": "ERROR",
"error": "timeout"
}
]
| कोड | अर्थ |
|---|---|
0 | कोई लक्ष्य VULNERABLE नहीं लौटा |
1 | कम से कम एक लक्ष्य VULNERABLE है |
2 |
INCONCLUSIVE सुरक्षा की गारंटी नहीं है — यह UniFi OS होस्ट की पुष्टि करता है लेकिन इसे वर्गीकृत नहीं कर सका (बाईपास पर प्रमाणीकरण लागू, या अप्रत्याशित प्रतिक्रिया)। एक होस्ट जो भारी रूप से फ़िल्टर किया गया है या अप्रत्याशित प्रॉक्सी के सामने है, वह अकेले नेटवर्क से वर्गीकृत नहीं हो सकता। जहाँ संभव हो, चल रहे संस्करण की पुष्टि करें।UNAFFECTED का अर्थ है कि रूट पेज पर कोई UniFi OS पोर्टल फिंगरप्रिंट नहीं था (उन होस्ट्स सहित जो इसके बिना 401 लौटाते हैं)। एक रिवर्स प्रॉक्सी के पीछे छिपा UniFi OS कंसोल जो पोर्टल HTML को हटाता या पुनर्लिखित करता है, गलत रिपोर्ट किया जा सकता है; यदि लक्ष्य UniFi OS होने की उम्मीद है तो सीधे पुष्टि करें।UniFi OS Server को संस्करण 5.0.8 या बाद में अपडेट करें। फिक्स एक nginx कच्चा-बनाम-सामान्यीकृत URI तुलना (प्रमाणीकरण बाईपास को बंद करना) और पैकेज-अपडेट पथ में इनपुट सत्यापन (कमांड इंजेक्शन को बंद करना) जोड़ता है।
यह कोड MIT लाइसेंस के तहत वितरित किया गया है।
बिना पूर्व पारस्परिक सहमति के लक्ष्यों पर हमला करने के लिए इस उपकरण का उपयोग अवैध है। सभी लागू स्थानीय, राज्य और संघीय कानूनों का पालन करना अंतिम उपयोगकर्ता की जिम्मेदारी है। डेवलपर्स कोई देयता नहीं मानते हैं और इस प्रोग्राम के कारण हुए किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं हैं।
| प्रोब प्रतिक्रिया | निर्णय |
|---|
200 + हैंडलर त्रुटि मार्कर | VULNERABLE |
400 (nginx विचलन को अस्वीकार करता है) | PATCHED (5.0.8+) |
401, UniFi OS फिंगरप्रिंट मौजूद | INCONCLUSIVE (प्रमाणीकरण लागू / बाईपास अवरुद्ध) |
401, कोई UniFi OS फिंगरप्रिंट नहीं | UNAFFECTED (UniFi OS सर्वर नहीं) |
| कुछ और, कोई UniFi OS फिंगरप्रिंट नहीं | UNAFFECTED (UniFi OS सर्वर नहीं) |
| कुछ और, UniFi OS फिंगरप्रिंट मौजूद | INCONCLUSIVE (अप्रत्याशित प्रतिक्रिया) |
| फ़्लैग | विवरण |
|---|
targets | एक या अधिक host, host:port, या https://host:port |
-f, --targets-file FILE | एक फ़ाइल से लक्ष्य पढ़ें (प्रति पंक्ति एक; # टिप्पणियाँ) |
--brief | प्रति लक्ष्य एक संरेखित पंक्ति — कई होस्ट स्कैन करने के लिए आदर्श |
--json | संरचित JSON परिणाम उत्पन्न करें |
--timeout SECS | प्रति-अनुरोध समयबाह्य (डिफ़ॉल्ट: 10) |
--no-color | रंगीन आउटपुट अक्षम करें (NO_COLOR और गैर-TTY का भी सम्मान करता है) |
| निर्णय | अर्थ |
|---|
VULNERABLE | प्रमाणीकरण बाईपास बिना प्रमाणीकरण के कमजोर हैंडलर तक पहुँच गया। 5.0.8+ पर पैच करें। |
PATCHED | nginx ने सामान्यीकृत-पथ विचलन को अस्वीकार किया (5.0.8+ व्यवहार)। |
UNAFFECTED | रूट पेज पर कोई UniFi OS पोर्टल फिंगरप्रिंट नहीं — लक्ष्य UniFi OS सर्वर नहीं है, इसलिए सलाह लागू नहीं होती। उन होस्ट्स को शामिल करता है जो फिंगरप्रिंट के बिना 401 लौटाते हैं (जैसे, एक असंबंधित प्रॉक्सी जो सब कुछ अस्वीकार करता है)। |
INCONCLUSIVE | पुष्टि किया गया UniFi OS होस्ट जिसे वर्गीकृत नहीं किया जा सका — मैन्युअल रूप से संस्करण सत्यापित करें। निर्णय की विवरण पंक्ति बताती है कि कौन सा मामला है: (a) बाईपास अवरुद्ध था / प्रमाणीकरण लागू (401), या (b) प्रोब ने अप्रत्याशित प्रतिक्रिया लौटाई। |
ERROR | कनेक्शन/समयबाह्य/TLS विफलता। |
| उपयोग त्रुटि (खराब तर्क / अपठनीय लक्ष्य फ़ाइल) |