
Element Desktop v1.12.29 - उच्च - स्थानीय - फ़ाइल - वेक्टर: प्रोटोकॉल Windows फ़ाइलों को asar जेल के बाहर पढ़ता है
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · element-vector-drive-letter
राइट-अप: https://abraxaslabs.tech/research/element-vector-drive-letter
Element Desktop v1.12.29 - Element Creations Ltd
वर्ग: फ़ाइल पढ़ना पहुँच: स्थानीय
apps/desktop/src/electron-main.ts vector: को एक विशेषाधिकार प्राप्त फ़ाइल प्रोटोकॉल के रूप में पंजीकृत करता है। जेल केवल path.normalize(path.join(...pathname.split("/").slice(2))) के बाद relTarget.startsWith("..") है। Windows पर C:, Windows, win.ini का जोड़ पहले से ही C:\Windows\win.ini है। निरपेक्ष पथ .. से शुरू नहीं होते, इसलिए जाँच उन्हें पार होने देती है। Electron का अपना कस्टम-प्रोटोकॉल नोट भी path.isAbsolute को अस्वीकार करता है। POSIX path.join C: को निरपेक्ष नहीं मानता, इसलिए Linux और macOS इस अवशेष से प्रभावित नहीं हैं। will-navigate vector: को पार होने देता है।
Renderer XSS, DevTools, या कोई अन्य स्थानीय प्रक्रिया fetch("vector://vector/webapp/C:/Windows/win.ini") कर सकती है और वे फ़ाइलें पढ़ सकती है जिन्हें Element प्रक्रिया खोल सकती है।
| ID | अभी तक कोई CVE नहीं |
| CWE | CWE-22 / CWE-73 |
| CVSS | उच्च: 8.3 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N |
| उत्पाद | element-web Desktop (apps/desktop) |
| प्रभावित | v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e)। केवल Windows। |
| प्रमाणीकरण | स्थानीय renderer (DevTools / XSS) |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
Renderer XSS, DevTools, या कोई अन्य स्थानीय प्रक्रिया जो vector: तक पहुँच सकती है। मूल Windows Element Desktop नहीं चलाया गया। गैजेट पिन के URL पार्सर की नकल करता है और Node path.win32 का उपयोग करता है।
| विशेषाधिकार | विधि / सिंक | रेकॉन / अखंडता / उपलब्धता | लैब-प्रमाणित या अनुमानित |
|---|---|---|---|
| Element प्रक्रिया जो फ़ाइल खोल सकती है उसे पढ़ना | fetch("vector://vector/webapp/C:/Windows/win.ini")। जेल केवल relTarget.startsWith("..") है। ड्राइव-लेटर जोड़ निरपेक्ष है, इसलिए जाँच पास हो जाती है। path.win32.resolve(asar, relTarget) C:\Windows\win.ini है | रेकॉन | URL-पार्सर गैजेट पर लैब-प्रमाणित। बॉडी ELEMENT-VECTOR-DRIVE-LETTER-WITNESS है। मूल Desktop नहीं चलाया गया |
उसी ACL पर electron-config, प्रोफ़ाइल, अन्य उपयोगकर्ताओं की फ़ाइलों का वही पठन | वही vector://vector/webapp/C:/... fetch | रेकॉन | अनुमानित। लैब ने win.ini रखा, लाइव रहस्य नहीं |
| Matrix ATO यदि मुख्य फ़्रेम पहले से डिस्क पर मौजूद हमलावर HTML लोड करता है | will-navigate vector: को पार होने देता है। vector://vector पर शत्रुतापूर्ण HTML को preload / window.electron (टोकन, Seshat, clearStorage) मिलता है | अखंडता | webcontents-handler.ts और preload से अनुमानित। लैब ने BrowserWindow को नेविगेट नहीं किया |
asar ट्री का ../ ट्रैवर्सल | vector://vector/webapp/../ | लागू नहीं | यहाँ बंद। WHATWG URL इसे संकुचित करता है; हैंडलर FILE_NOT_FOUND (-6) लौटाता है |
| POSIX / macOS / Linux ड्राइव-लेटर fetch | path.posix.join C:/Windows/win.ini को asar के अंतर्गत छोड़ देता है | लागू नहीं | यहाँ बंद। गैजेट posix 404, कोई witness नहीं |
| OS RCE / LPE | nodeIntegration: false, app.enableSandbox() | लागू नहीं | बंद। यह अवशेष नहीं |
वही पिन अवशेष: fragment guest wipe, Univention ICS javascript: href।
22 सितम्बर 2026 की GitHub रिलीज़ के बाद मैंने element-hq/element-web v1.12.29 को पिन किया। Timeline XSS, HTML-export XSS (GHSA-wqmv), homepage HTML (GHSA-wrcp), widget media token (GHSA-3jm3), और Element Call keys (GHSA-69q3) इस टैग पर बंद हैं। Desktop custom protocol अभी भी केवल startsWith("..") जाँचता है।
new URL("vector://vector/webapp/C:/Windows/win.ini") C: को एक path segment के रूप में रखता है। path.win32.join("C:", "Windows", "win.ini") का परिणाम C:\Windows\win.ini होता है। Node path.win32.join(asar, abs) जोड़ता है; path.win32.resolve asar रूट को हटा देता है।
पहले से दर्ज गलत रास्ते: ../ को अवशेष मानना (WHATWG इसे समेट देता है, handler 404 देता है); POSIX C: को वही बग कहना (posix join asar के अंतर्गत ही रहता है); file read को OS RCE तक बढ़ा-चढ़ाकर बताना (sandbox और nodeIntegration: false चालू रहते हैं)। एक reverse shell। नाटक।
URL parser का गैजेट। Node path.win32 बनाम path.posix। कोई Windows Element Desktop प्रोसेस नहीं। रखा गया /lab/oracle/win.ini C:\Windows\win.ini का प्रतिनिधित्व करता है। /lab/asar/index.html asar जेल है।
python3 element-vector-drive-letter-Abraxas-Labs.py
या
cd lab
./run.sh
केवल http://127.0.0.1:19610 को लक्षित करें। प्रोजेक्ट element-vector-drive-letter को कंपोज़ करें। रन के बाद स्टैक टियर डाउन हो जाता है।
SUCCESS element-vector-drive-letter how=gadget win32-drive-letter=200 posix-drive-letter=404 control-dotdot=404 patched-isabs=404 ELEMENT-VECTOR-DRIVE-LETTER-WITNESS
normalize के बाद, path.isAbsolute(relTarget) को अस्वीकार करें और आवश्यकता रखें कि path.resolve(baseDir, relTarget) path.resolve(baseDir) के अंतर्गत ही रहे (path.relative, .. को अस्वीकार करें)।
electron-main.ts (registerFileProtocol)webcontents-handler.ts (will-navigate)GNU Affero GPL v3.0. देखें LICENSE. केवल लूपबैक लैब। कोई वारंटी नहीं।