
# CVE-2026-8069 के लिए तकनीकी विवरण और प्रूफ-ऑफ-कॉन्सेप्ट Acer NitroSense और PredatorSense सेवाओं में स्थानीय विशेषाधिकार वृद्धि (local privilege escalation) की भेद्यता, जो एक named pipe का शोषण करके SYSTEM के रूप में मनमाना कोड निष्पादित करती है।
Acer NitroSense और PredatorSense 3.x ने PSSvc नामक एक Windows सेवा स्थापित की जिसने स्थानीय उपयोगकर्ताओं के लिए एक कस्टम नेम्ड-पाइप प्रोटोकॉल उजागर किया। एक प्रोटोकॉल कमांड ने कॉलर-नियंत्रित निष्पादन योग्य पथ स्वीकार किया, winlogon.exe का टोकन डुप्लिकेट किया, और उस निष्पादन योग्य को NT AUTHORITY\SYSTEM के रूप में प्रारंभ किया।
कमजोर सेवा में पथ प्रतिबंध एक सबस्ट्रिंग परीक्षण था। एक पथ जो सेवा निर्देशिका के अंदर शुरू हुआ और फिर ..\ घटकों का उपयोग किया, परीक्षण पास कर गया लेकिन कहीं और हल हो गया। पाइप के अनुमेय एक्सेस नियंत्रण और कॉलर प्राधिकरण की अनुपस्थिति के साथ संयुक्त, इसने एक मानक स्थानीय उपयोगकर्ता को SYSTEM प्रक्रिया प्राप्त करने की अनुमति दी।
Acer ने CVE-2026-8069 निर्धारित किया, फिक्स्ड रिलीज़ प्रकाशित कीं, और अपने सुरक्षा परामर्श में Hradec Králové विश्वविद्यालय के Artem Domarev को श्रेय दिया।
यह लेख प्रक्रिया-निर्माण/LPE पथ पर केंद्रित है। Acer का परामर्श मनमाने फ़ाइल विलोपन का भी वर्णन करता है, जो इस सत्यापन के दायरे से बाहर था।
शोध दिशा का चुनाव SensePost के Leon Jacobs द्वारा प्रकाशित OEM सॉफ़्टवेयर के एक सार्वजनिक विश्लेषण से भी प्रभावित था। उस कार्य ने ASUS DriverHub, MSI Center, Acer Control Centre, और Razer Synapse 4 में कमजोरियों का दस्तावेजीकरण किया (Jacobs, 2025)। इसने इस विचार को सुदृढ़ किया कि विक्रेता-आपूर्ति हार्डवेयर उपयोगिताएँ एक सार्थक और कम-खोजा गया हमला सतह उजागर कर सकती हैं। Acer Control Centre पर दोबारा विचार करने के बजाय, मैंने जांच को एक अलग Acer उत्पाद परिवार तक बढ़ाया: NitroSense और PredatorSense।
| आइटम | परिणाम |
|---|---|
| CVE | CVE-2026-8069 |
| परीक्षण किया गया कमजोर घटक | PSSvc.exe 3.1.3052.0, Acer Incorporated द्वारा हस्ताक्षरित |
| सेवा पहचान | LocalSystem |
| IPC एंडपॉइंट | \\.\pipe\predatorsense_service_namedpipe |
| कमजोर कमांड | 0x0007 |
| आवश्यक हमलावर पहुंच | प्रमाणित स्थानीय उपयोगकर्ता जो प्रोग्राम चला सकता है |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| परिणाम | मनमाना निष्पादन योग्य NT AUTHORITY\SYSTEM के रूप में लॉन्च किया गया |
| NVD CVSS v3.1 | 7.8 उच्च — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| फिक्स्ड रिलीज़ | PredatorSense 3.00.3198; NitroSense 3.01.3056 |
शोषण श्रृंखला छोटी है:
प्रमाणित स्थानीय उपयोगकर्ता
│
▼
अनुमेय PSSvc नेम्ड पाइप
│ कस्टम कमांड 0x0007
▼
केवल-सबस्ट्रिंग पथ जांच
│ service-dir\..\..\..\Windows\System32\cmd.exe
▼
सक्रिय-सत्र winlogon.exe टोकन डुप्लिकेट करें
│
▼
CreateProcessAsUserW → NT AUTHORITY\SYSTEM
सार्वजनिक शब्दावली में एक असंगति है। Acer का पृष्ठ कहता है कि NitroSense संस्करण "3.01.3052 से पहले" प्रभावित हैं, फिर भी इस लेख के लिए परीक्षण किया गया विक्रेता-हस्ताक्षरित PSSvc.exe संस्करण 3.1.3052.0 स्पष्ट रूप से कमजोर है। वही पृष्ठ NitroSense 3.01.3056 को फिक्स्ड रिलीज़ के रूप में पहचानता है। NVD प्रयोज्यता सीमा भी 3.01.3056 तक, लेकिन इसे शामिल किए बिना, विस्तारित होती है।
PredatorSense के लिए, Acer का प्रभावित-संस्करण वाक्य 3.00.3196 से पहले रुकता है, जबकि सूचीबद्ध फिक्स्ड रिलीज़ 3.00.3198 है और NVD बाद वाले को ऊपरी सीमा के रूप में उपयोग करता है।
इसलिए रूढ़िवादी परिचालन नियम सरल है: अस्पष्ट "प्रभावित" वाक्य को पैच जांच के रूप में उपयोग न करें। कम से कम Acer द्वारा नामित फिक्स्ड संस्करणों—PredatorSense 3.00.3198 या NitroSense 3.01.3056—या नए मॉडल-संगत पैकेज में अपग्रेड करें।
समस्या मूल NitroSense पैकेज के साथ पुनरुत्पादित की गई थी।
| आर्टिफैक्ट | SHA-256 |
|---|---|
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip | 947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157 |
NitroSense.msi | 6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C |
स्थापित PSSvc.exe 3.1.3052.0 | 3BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40 |
| सत्यापन के लिए उपयोग किया गया PoC | 31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163 |
PSSvc.exe का Authenticode हस्ताक्षर सफलतापूर्वक सत्यापित हुआ और Acer Incorporated से जुड़ा। MSI ने PSSvc को LocalSystem के रूप में चलने वाली एक डिमांड-स्टार्ट, स्वयं-प्रक्रिया सेवा के रूप में स्थापित किया।
NitroSense पैकेज स्थापित करता है:
SERVICE_NAME: PSSvc
DISPLAY_NAME: Predator Service
TYPE: WIN32_OWN_PROCESS
START_TYPE: DEMAND_START
ACCOUNT: LocalSystem
एक SYSTEM सेवा स्वचालित रूप से कमजोर नहीं है। महत्वपूर्ण प्रश्न यह है कि क्या कम-विशेषाधिकार वाली प्रक्रिया उस कार्यक्षमता तक पहुँच सकती है जो इस धारणा के तहत डिज़ाइन की गई थी कि इसका कॉलर भरोसेमंद है।
स्ट्रिंग विश्लेषण ने तुरंत IPC एंडपॉइंट उजागर किया:
\\.\pipe\predatorsense_service_namedpipe
0x140014AD0 पर, सेवा पाइप का निर्माण करती है और CreateNamedPipeW को एक स्पष्ट सुरक्षा डिस्क्रिप्टर पास करती है:
D:(A;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A;OICI;GRGWGX;;;AU)(A;OICI;GA;;;BA)
यह स्पष्ट रूप से सुधारने योग्य है: कमजोर बिल्ड NULL डिस्क्रिप्टर पास नहीं करता है। यह एक अनुमेय DACL बनाता है।
| SID संक्षिप्त नाम | प्रिंसिपल | SDDL में प्रभावी अनुमति |
|---|---|---|
BG | बिल्ट-इन अतिथि | जेनेरिक ऑल |
AN | अनाम | जेनेरिक ऑल अस्वीकृत |
AU | प्रमाणित उपयोगकर्ता | जेनेरिक रीड, राइट और एक्ज़ीक्यूट |
BA | बिल्ट-इन व्यवस्थापक | जेनेरिक ऑल |
AU ACE एक सामान्य प्रमाणित उपयोगकर्ता के लिए पाइप को पढ़ने और लिखने के लिए खोलने के लिए पर्याप्त है। सर्वर फिर क्लाइंट को इम्पर्सनेट नहीं करता है और विशेषाधिकार प्राप्त कमांड भेजने से पहले प्राधिकरण निर्णय नहीं करता है।
0x14000ABB0 पर क्लाइंट थ्रेड संदेशों को 512-बाइट बफर में पढ़ता है। यह पहले तीन बाइट्स को 16-बिट कमांड नंबर और 8-बिट तर्क गणना के रूप में पार्स करता है। प्रत्येक तर्क लंबाई-उपसर्गित है:
ऑफसेट आकार अर्थ
0x00 2 कमांड ID, लिटिल-एंडियन
0x02 1 तर्कों की संख्या
0x03 4 तर्क 0 की लंबाई
0x07 n तर्क 0 के बाइट्स
... दोहराया DWORD लंबाई + मान
स्ट्रिंग तर्क UTF-16LE हैं। पूर्णांक तर्क लिटिल-एंडियन DWORD हैं। डिस्पैचर 0x23 से नीचे के कमांड ID स्वीकार करता है और उन्हें 0x140052C90 पर 35-प्रविष्टि फ़ंक्शन तालिका में सूचकांक के रूप में उपयोग करता है।
कमांड 0x0007 की प्रविष्टि 0x14000BFD0 की ओर इशारा करती है।
इसके सुरक्षा-प्रासंगिक व्यवहार तक सीमित, हैंडलर इस तरह दिखता है:
int command_07(parsed_arguments *args)
{
wchar_t service_directory[MAX_PATH];
wchar_t *requested_path = args->wide_string[0];
uint32_t mode = args->dword[1];
GetModuleFileNameW(NULL, service_directory, MAX_PATH);
PathRemoveFileSpecW(service_directory);
if (wcsstr(requested_path, service_directory) != NULL)
return launch_with_selected_token(requested_path, mode);
return 0;
}
wcsstr केवल उत्तर देता है कि क्या एक स्ट्रिंग दूसरे के अंदर होती है। यह पथ को कैनोनिकलाइज़ नहीं करता है, डॉट सेगमेंट को हल नहीं करता है, फ़ाइल नहीं खोलता है, या यह साबित नहीं करता है कि अंतिम ऑब्जेक्ट एक भरोसेमंद निर्देशिका के अंतर्गत रहता है।
मान लें कि सेवा इसमें स्थापित है:
C:\Program Files\Acer\NitroSense_Service
निम्नलिखित पथ में वह निर्देशिका ऑफसेट शून्य पर होती है, इसलिए wcsstr सफल होता है:
C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe
Windows डॉट सेगमेंट को हल करता है:
C:\WINDOWS\System32\cmd.exe
यह एक क्लासिक कैनोनिकलाइज़ेशन त्रुटि है: सत्यापन एक पाठ्य प्रतिनिधित्व पर किया जाता है, जबकि संवेदनशील ऑपरेशन इसके सामान्यीकृत अर्थ का उपभोग करता है।
0x1400091F0 पर प्रक्रिया-लॉन्च सहायक के पास एक विशेष शाखा है जब दूसरा तर्क 0x72 (दशमलव 114) होता है। यह: