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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
qemu-colo-l4-oob — QEMU 11.1.2 - High - Local/Remote - OOB - تجاوز سعة الكومة في IPv4 L4 القصير في COLO filter-rewriter | Kitploit
أدوات/GitHubGitHub/abraxas/qemu-colo-l4-oob
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيالأوراق والأبحاثاستغلال الملفات الثنائية
GitHubabraxas/qemu-colo-l4-oob

qemu-colo-l4-oob

QEMU 11.1.2 - High - Local/Remote - OOB - تجاوز سعة الكومة في IPv4 L4 القصير في COLO filter-rewriter

عرض المستودع
2منذ 2 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - qemu-colo-l4-oob

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  qemu-colo-l4-oob

qemu-colo-l4-oob

QEMU v11.1.2 (4fc49f46dc95d4a27de2509e7fceb2931e91faeb) - مرشح COLO filter-rewriter

الفئة: OOB (تجاوز سعة المخزن المؤقت في الكومة قراءة/كتابة). الوصول: محلي (ضيف) / عن بُعد (نظير COLO).

parse_packet_early يقبل IPv4 بمجرد أن يتسع L2 مع ip_hl*4. لا يشترط أبدًا حدًا أدنى لترويسة L4. بعد ذلك يقرأ fill_connection_key أربعة بايتات عند transport_header دون التحقق من الطول المتبقي. ينسخ filter-rewriter الإطار باستخدام g_malloc0(size)، وبعد أن ينقل SYN الاتصال إلى TCPS_SYN_RECEIVED، فإن ACK مع conn->offset != 0 يكتب th_ack / th_seq بعد تلك الكتلة عندما ينتهي الطول الملتقط عند ترويسة النقل.

COLO ليس افتراضيًا. يتم تفعيله عند تكوين -object filter-rewriter (و colo-compare). إرسال/استقبال الضيف على ذلك المرشح يقع ضمن نموذج أمان المحاكاة الافتراضية. نظير COLO على primary_in / secondary_in هو بروتوكول شبكة، وهو أيضًا غير موثوق.

إطار IPv4/TCP بحجم 34 بايت كافٍ لقراءة ASan heap-buffer-overflow في filter-rewriter.

المعرّفلا يوجد CVE بعد
CWECWE-125 / CWE-787
CVSSمرتفع: 8.2 CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
المنتجQEMU
المتأثرv11.1.2 (4fc49f46)، مع تفعيل COLO rewriter/compare
المصادقةضيف على netdev لـ COLO rewriter، أو نظير COLO compare
الترخيصGNU Affero GPL v3.0
المختبرمآخذ loopback 127.0.0.1:18770 / 18771

ما يمكن للمهاجم فعله

من: ضيف غير موثوق على NIC مفعّل عليه COLO، أو نظير COLO compare معادٍ. من الضيف إلى المضيف / من النظير إلى المضيف. كومة مساحة مستخدم QEMU.

السلامة / الاستطلاع (مُثبت مختبريًا)

الطريقةالموقعالامتياز
ACK قصير IPv4/TCP بعد SYN بترويسة كاملة (إطار 34 بايت، ينتهي الطول عند ترويسة النقل)filter-rewriter handle_primary_tcp_pkt / fill_connection_keyASan heap-buffer-overflow READ في filter-rewriter. التحكم في TCP بترويسة كاملة يبقي QEMU حيًا.
نفس الحد الأدنى المفقود لـ L4parse_packet_early net/colo.c:43-98تُصنَّف الحزمة كـ TCP دون ترويسة L4 داخل المخزن المؤقت.

السلامة (مُستنتجة، نفس الحد المفقود)

بعد SYN، conn->offset != 0، يخزّن المرشح th_ack / th_seq عند net/filter-rewriter.c:112-114 و:216-218. خيارات IP (ip_hl > 5) تنقل تلك الكتابة إلى كتلة الكومة التالية. كتابة في كومة المضيف يمكن للضيف إثارتها.

fill_pkt_tcp_info في colo-compare يضبط header_size من th_off<<2 دون التحقق مقابل pkt->size. يحدث underflow في payload_size. يقوم colo_compare_packet_payload بـ memcmp لعشرات الكيلوبايتات بعد تخصيصي الحزمتين. انهيار مع قراءة في كومة المضيف.

التوافر (مُثبت مختبريًا)

إجهاض QEMU تحت ASan عند قراءة المرشح. بدون ASan، هذا OOB حي في الكومة داخل عملية hypervisor.

سطح مجاور يبقى مغلقًا

  • مسارات الطول TAP / socket / bridge / l2tpv3 / stream / dgram على هذا الإصدار بدت محدودة (net_fill_rstate يرفض packet_len > NET_BUFSIZE).
  • تسرب جدول اتصالات COLO غير المحدود عند إعادة تعيين hashtable هو تقوية للتخصيص، وليس هذه البقايا.
  • Kernel PwnEscape / Vghost: خارج QEMU.
  • QEMU الافتراضي بدون COLO: المرشح غير مفعّل. هذه البقايا تتطلب تكوين COLO.

لا يُظهر المختبر التحكم في RIP أو صدفة من الضيف إلى المضيف. الفئة هي OOB في كومة عملية QEMU على netdev مفعّل عليه COLO.

كيف وجدته

قرأت net/colo.c باحثًا عن حد أدنى للطول يتضمن L4. الحد الأدنى هو Ethernet بالإضافة إلى VLAN بالإضافة إلى vnet_hdr. يُؤخذ ip_hl من ذيل قصير. ثم تثق fill_connection_key بـ transport_header. يقوم filter-rewriter دائمًا بتحميل th_flags عند الإزاحة 13 من struct tcp_hdr.

مسارات خاطئة: التعامل مع طول TAP كحد COLO (مسار مختلف)؛ إرسال الفائض كأول حزمة (يحتاج rewriter إلى SYN أولًا حتى يكون conn->offset نشطًا)؛ اعتبار underflow الخاص بـ th_off في colo-compare كدليل أساسي (أطلق قراءة rewriter أولًا).

المختبر

cd lab
./run.sh

يستهدف فقط مقابس loopback 127.0.0.1:18770 (filter-rewriter netdev) و18771 (colo-compare). يتم استنساخ Pin من github.com/qemu/QEMU وسم v11.1.2 / 4fc49f46. ASan. تم تمكين COLO proxy وقت الإعداد. Witness-only.

SUCCESS qemu-colo-l4-oob asan=heap-buffer-overflow access=READ sink=filter-rewriter control=alive QEMU-COLO-L4-OOB-WITNESS

إعادة التشغيل: python3 qemu-colo-l4-oob-Abraxas-Labs.py.

الإصلاح

يجب أن يشترط parse_packet_early وجود رأس L4 كامل (TCP 20، UDP 8، SCTP 12، AH 8) بعد رأس IP، وأن يرفض عندما ينتهي size عند transport_header أو قبله. ويجب أن تتحقق fill_connection_key ومخازن th_* في المُعيد الكتابة من الطول المتبقي. ويجب أن يرفض colo-compare قيمة th_off<<2 التي لا تتسع داخل pkt->size قبل حساب payload_size.

المراجع

  • github.com/qemu/QEMU وسم v11.1.2 commit 4fc49f46dc95d4a27de2509e7fceb2931e91faeb
  • parse_packet_early · filter-rewriter
  • نفس التثبيت: qemu-xhci-complete-uaf · qemu-nvme-sgl-bar
  • السلسلة: QEMU 11.1.2 leftovers
  • CWE-125 · CWE-787

الترخيص

GNU Affero GPL v3.0. راجع LICENSE. مختبر loopback فقط. دون أي ضمان.

تنزيل الأداة