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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2020-25637-libvirt-double-free — تحرير مزدوج | Kitploit
أدوات/GitHubGitHub/brahmiboudjema/cve-2020-25637-libvirt-double-free
تحليل الثغرات الأمنيةالاستغلالمصممي الأخطاءالتعلم والتعليماستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubbrahmiboudjema/cve-2020-25637-libvirt-double-free

CVE-2020-25637-libvirt-double-free

تحرير مزدوج

عرض المستودع
17منذ 5 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

 CVE-2020-25637 
                                    

*** الوصف ***

حدثت مشكلة تحرير مزدوج للذاكرة في واجهة برمجة تطبيقات libvirt، في الإصدارات السابقة للإصدار 6.8.0، المسؤولة عن طلب معلومات حول واجهات الشبكة لنطاق QEMU قيد التشغيل. تؤثر هذه الثغرة على برنامج تشغيل التحكم في الوصول polkit. وبشكل أكثر تحديدًا، يمكن للعملاء المتصلين بالمقبس (socket) في وضع القراءة-الكتابة مع صلاحيات ACL محدودة استخدام هذه الثغرة لتعطيل خادم libvirt، مما يؤدي إلى رفض الخدمة، أو ربما زيادة صلاحياتهم على النظام. التهديد الأكبر لهذه الثغرة يتعلق بسرية وسلامة البيانات وكذلك توفر النظام.

أهم تهديد لهذه الثغرة يتعلق بـ:

  • السرية
  • سلامة البيانات
  • توفر النظام.

درجات الثغرة:

  • ثغرة متوسطة حسب RedHat بمتوسط 6.4

    • المتجه = محلي
    • التعقيد = منخفض
    • المصادقة = لا شيء
  • ثغرة متوسطة حسب NVD بمتوسط 6.7

    • المتجه = محلي
    • التعقيد = مرتفع
    • المصادقة = لا شيء

*** أدوات ومتطلبات أساسية مختلفة يجب تجهيزها لاستغلال هذه الثغرة ***
    

  1. تثبيت qemu-kvm و libvirt:

قبل كل شيء، من الضروري التحقق من توافق نظام التشغيل لدينا، يكفي تشغيل هذا الأمر:

 grep -E -c "vmx|svm" /proc/cpuinfo

إذا استجاب الأمر بنجاح (ok) يمكنك المتابعة إلى التثبيت:

sudo apt-get -y install qemu-kvm libvirt-bin virt-top outils-libguestfs virtinst bridge-utils

2) تثبيت vagrant:

لتثبيت vagrant يكفي تشغيل هذا الأمر:

sudo apt -y install vagrant

بمجرد تثبيت Vagrant وKVM، يجب أن تكون جاهزًا لتثبيت إضافة libvirt لتتمكن من بدء إدارة الأجهزة الافتراضية KVM باستخدام Vagrant.

vagrant plugin install vagrant-libvirt

يمكنك تأكيد تثبيت الإضافة:

vagrant plugin list

3) صندوق فاجرانت (box vagrant):

من الممكن استخدام قالب جاهز مباشرة عبر vagrant، وفي حالتنا سنستخدم صورة ubuntu 20.04.

لإضافة صورتنا إلى صندوق فاجرانت يكفي تشغيل هذا الأمر:

vagrant box add generic / ubuntu1804 --provider = libvirt

لعرض قائمة الصناديق الموجودة محليًا:

vagrant box list

4) التصحيح

هناك إمكانيتان للتصحيح:

  • GDB، إذا لم تكن الأداة متوفرة في نظام التشغيل لديك، قم بتشغيل هذا الأمر:

    sudo apt-get install gdb
    
  • Valgrind، إذا لم تكن الأداة متوفرة في نظام التشغيل لديك، قم بتشغيل هذا الأمر:

    sudo apt-get install valgrind
    

*** تنفيذ الكود ***

تشغيل جهاز افتراضي عبر vagrant:

vagrant up

قبل كل شيء، قم بتثبيت المكتبة:

sudo apt-get install -y libvirt-dev

الترجمة:

gcc -g -Wall info1.c -o info1 -lvirt

تنفيذ الكود:

./info1 qemu:///system vagrant-vms_ubuntu-01

التنفيذ مع التصحيح:

valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-out.txt ./info1 qemu:///system vagrant-vms_ubuntu-01

*** تفعيل الثغرة ***

قبل تفعيل الثغرة، من الضروري معرفة آلية عمل الدالة التي تسبب المشكلة في libvirt.

لنفترض أن المهاجم يمكنه التسبب في استخدام منطقة ذاكرة محررة عبر الدالة qemuAgentGetInterfaces () من libvirt، وتحديدًا في منطقة ذاكرة المتغير ifname، من أجل التسبب في رفض الخدمة، وربما تنفيذ كود.

  • تعالج هذه الدالة قائمة واجهات نطاق قيد التشغيل مع عناوين IP وMAC الخاصة بها.
  • ثم تُرجع عدد الواجهات في حالة النجاح، أو -1 في حالة حدوث خطأ.

لقد حانت اللحظة المنتظرة

بمجرد تشغيل ملف vagrant، يجب تشغيل الكود info1.c داخل جهاز افتراضي يتم تشغيله بدوره بواسطة Qemu/KVM. أي إنشاء أجهزة افتراضية داخل جهاز افتراضي، بمعنى آخر تنفيذ الكود داخل الجهاز الافتراضي الذي أنشأه vagrant.


*** إصلاح هذه الثغرة ***

يكفي تعيين المتغير ifname إلى null في الدالة qemuAgentGetInterfaces () من libvirt، أي يجب تحرير المتغير ifname لكل واجهة.


*** العرض التوضيحي ***

ستجد عرضًا توضيحيًا بسيطًا لمشكلة ( double free ) في ملف PowerPoint.


*** مهم ***

لم يكتمل المشروع حتى النهاية لأسباب تتعلق بتعقيد الثغرة والعتاد، وكذلك ضيق الوقت.

تنزيل الأداة