
إثبات مفهوم استخراج كلمة المرور الرئيسية من KeePass لنظام Linux
شكرًا لـ vdohney على اكتشاف هذه الثغرة والإبلاغ عنها بمسؤولية، ودومينيك ريتشل على البرمجيات مفتوحة المصدر الرائعة والاعتراف السريع بالمشكلة وإصلاحها.
على الأرجح لا. يتطلب هذا الاستغلال الوصول إلى نظام الملفات الافتراضي /proc. تحديدًا، proc/[pid]/mem. وفقًا لملف دليل proc، يتم تنظيم الوصول إلى هذا الملف بواسطة وضع وصول ptrace، PTRACE_MODE_ATTACH_FSCREDS، المقتصر على المستخدم الجذر في معظم الأنظمة. إذا كان لدى مهاجم خبيث بالفعل إمكانية الوصول إلى هذه الملفات، فلديك مخاوف أكبر.
يرجى التحديث إلى KeePass 2.54 بمجرد إصداره (حوالي يوليو 2023)، لأنه سيخفف من هذه المشكلة إلى حد ما. (المنتدى)
أولاً، يبدأ بتفريغ ذاكرة عملية Keepass. السلوك الافتراضي هو فحص جميع ملفات /proc/<pid>/cmdline وتخزين pid لتلك التي تحتوي على الكلمة المفتاحية KeePass في وسيط سطر الأوامر الخاص بها. ثم يحصل على عناوين خرائط الذاكرة في /proc/<pid>/maps غير المرتبطة مباشرة بمكتبة، أي أن مسار ملفها فارغ. ثم يخزن ذاكرة كل تلك الخرائط في مخزن مؤقت عن طريق الاستفادة من /proc/<pid>/mem. سيكون هذا سلوكًا بدائيًا لتفريغ ذاكرة أي عملية على لينكس. سيقوم بتحليل الذاكرة لمحاولة العثور على سلاسل متبقية من وقت كتابة المستخدم لكلمة المرور الرئيسية، وهي سلاسل تبدو مثل •a, ••s, •••s، بالتسلسل. سيكون الحرف الأول مفقودًا. يمكنك العثور على وظائف أخرى من خلال النظر في الكود. gcc dump_pwd.c -o dump وأنت جاهز للانطلاق.
