CVE-2026-95835 in Kitty
الملخص
بحسب VulDB • 25/09/2026
يُتيح نقص التفويض (Missing Authorization) في معالج أكواد الهروب الخاص بـ askpass داخل kitty، بدءاً من الإصدار 0.25.0 وحتى قبل الإصدار 0.49.0، لمستخدم محلي آخر غير المستخدم الذي يشغل نافذة الطرفية الحصول على النص المدخل في مطالبة (prompt) يعرضها kitty نفسه. وذلك لأن الدالة `handle_remote_askpass()` الموجودة في الملف `kitty/window.py` تفتح كائن ذاكرة مشتركة POSIX باسم مُحدَّد ضمن رمز الهروب، وتقوم بتحليل تعريف المطالبة منه، ثم تعيد كتابة إجابة المستخدم إلى كائن يحمل نفس الاسم، دون التحقق من أي نقطة مما إذا كان الكائن مملوكاً للمستخدم الذي يشغل kitty أو ما إذا كانت أذوناته تستبعد المستخدمين الآخرين.
يقوم المستهلك المكافئ لنفس فئة `SharedMemory` في "kitten" الخاص بـ ssh بإجراء هذا الفحص بدقة؛ بينما لم يقم مسار askpass بذلك. يتم الوصول إلى المعالج من خلال سلسلة تحكم بالجهاز (device control string) تُعالج من تدفق البايتات للنافذة، لذا يجب على المهاجم أيضاً أن يتسبب في عرض بايتات يختارها بنفسه بواسطة طرفية الضحية.
عندما تكون مساحة اسم الذاكرة المشتركة POSIX مشتركة بين المستخدمَين المحليَّين، يمكن لمستخدم محلي ثانٍ إنشاء كائن بأذونات تتيح للضحية قراءته وكتابته فيه، ثم يتسبم في عرض kitty الخاص بالضحية لمطالبة من اختيار المهاجم (بما في ذلك مطالبة بكلمة مرور مقنعة)، وقراءة السر المدخل لاحقاً من الكائن.
يتم تمرير نص المطالبة أيضاً إلى العرض دون تنقية أحرف التحكم، مما يسمح له بكتابة فوق سطر التحذير الذي يطبعه kitty أعلاه. تُكتب الإجابة عن طريق إعادة فتح كائن يحمل ذلك الاسم عند إجابة المستخدم، بدلاً من استخدام المقبض (handle) المُحتفظ به بالفعل. يؤدي هذا إلى إفشاء سرٍّ أدخلته الضحية لمستخدم محلي ثانٍ، ولا يتطلب الأمر أي امتيازات على حساب الضحية.
VulDB is the best source for vulnerability data and more expert information about this specific topic.