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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
LoongBleed — إثبات مفهوم يوضح تسرب بيانات دقيق المعمارية في معالجات Loongson LA464/LA664 عبر البتات العلوية غير المعرفة في سجلات متجهات LASX، على غرار ZenBleed. | Kitploit
أدوات/GitHubGitHub/jiegec/loongbleed
أمان الأنظمة المدمجةتحليل الثغرات الأمنيةالاستغلالاختراق الأجهزةأمن الأجهزةالأوراق والأبحاثالتعلم والتعليم
GitHubjiegec/loongbleed

LoongBleed

إثبات مفهوم يوضح تسرب بيانات دقيق المعمارية في معالجات Loongson LA464/LA664 عبر البتات العلوية غير المعرفة في سجلات متجهات LASX، على غرار ZenBleed.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

LoongBleed

中文

LoongBleed هو ثغرة أمنية على مستوى العتاد، تشبه من حيث المفهوم ZenBleed (CVE-2023-20593) — وهي تؤثر على معالجات Loongson LA464/LA664 التي تنفّذ كلاً من LSX (SIMD بعرض 128 بت) و LASX (SIMD بعرض 256 بت).

في LoongArch، تتشارك سجلات LSX $vr (بعرض 128 بت) في الجزء السفلي من سجلات LASX $xr (بعرض 256 بت). تُعرَّف تعليمات LSX وعمليات الفاصلة العائمة الأساسية على أنها تعمل فقط على البتات الـ 128 السفلية (أو مجموعة فرعية منها)؛ أما البتات العلوية للسجل $xr المقابل فهي غير معرّفة. ومع ذلك، ونظراً لخلل في البنية الدقيقة (microarchitectural flaw)، فإن هذه العمليات قد تسرّب البيانات عبر البتات الـ 128 العلوية من $xr، مما يكشف بيانات حساسة عبر حدود الامتيازات أو بين أشقاء SMT.

ملاحظة حول الاكتشاف المستقل — تم اكتشاف نفس الخلل العتادي الأساسي ونشره بشكل مستقل من قبل باحثين في CISPA Helmholtz Center for Information Security تحت اسم LoongLeak (https://loongleakattack.com/)، وقُدِّم في USENIX Security 2026 بعنوان "LoongLeak: Architectural Cross-Privilege-Boundary Data Leakage on LoongArch CPUs". تم تطوير عملنا بشكل مستقل عن فريق LoongLeak؛ وقد توصلت المجموعتان إلى الاستنتاج نفسه بأن معالجات Loongson LA464/LA664 تسرّب البيانات عبر البتات العلوية غير المعرّفة من سجلات LASX $xr. تجدر الإشارة إلى أن التعليمات التي نستخدمها لإحداث التسريب ليست مطابقة لتلك المذكورة في ورقة LoongLeak: يعتمد إثبات المفهوم لدينا على مجموعة مختلفة من الأدوات (vor.v، vld، fld.d، fld.s) لإعادة إنتاج نفس الخلل العتادي الأساسي. علاوة على ذلك، ولأن التسريب يمكن إحداثه بتعليمات سجل-إلى-سجل بحتة مثل vor.v (دون أي تحميل من الذاكرة)، فإن تحليلنا يشير إلى أن السبب الجذري على الأرجح هو إعادة استخدام السجلات الفيزيائية: لا يتم مسح البتات العلوية لسجل فيزيائي مُعاد استخدامه، مما يسرّب بيانات قديمة من شاغل السجل السابق. وهذا يختلف عن تحليل ورقة LoongLeak، الذي ينسب البيانات المسرّبة إلى ذاكرة L1 data cache.

الجدول الزمني

  • 2026-05-12 — الإبلاغ عن الثغرة إلى Loongson.
  • 2026-06-09 — أكدت Loongson أن هذا اكتشاف مستقل لثغرة معروفة بالفعل.
  • 2026-08-17 — نشرت Loongson رسمياً إعلاناً بخصوص ثغرة LoongLeak (الإعلان الرسمي).
  • 2026-08-18 — تم نشر هذا المستودع للعموم.

كيف يعمل

يعمل إثبات المفهوم على النحو التالي:

  1. تحميل بيانات صفرية بالكامل إلى سجل $xrN عبر xvld.
  2. تنفيذ تعليمة (LSX أو فاصلة عائمة أساسية) يُفترض ألا تمس سوى البتات الـ 128 السفلية (أو جزء منها).
  3. تخزين السجل الكامل بعرض 256 بت مرة أخرى عبر xvst.
  4. مقارنة جميع البتات الـ 256 بالقيمة الأصلية. إذا اختلفت البتات الـ 128 العلوية أو السفلية عن القيمة الصفرية المتوقعة، فقد حدث تسريب.

يشغّل إثبات المفهوم هذه الأداة بشكل متكرر عبر 16 سجل متجه معماري ($xr0–$xr15) على خيوط مثبّتة إلى أنوية فيزيائية. تشير القيم غير الصفرية التي تظهر بعد التعليمة إلى أن البنية الدقيقة قد نشرت بيانات قديمة أو من سياق آخر إلى حالة السجل المعماري.

الأدوات (Gadgets)

يدعم إثبات المفهوم تعليمات اختبار متعددة، يمكن اختيارها عبر --gadget:

على LA664، تكشف الأدوات الأربع جميعها التسريب، بحيث يسرّب 192 بت كحد أقصى لكل متجه. أما على LA464، فتسرّب vld و fld.d و fld.s (224 بت كحد أقصى لكل متجه)؛ بينما لا تسرّب الأداة الافتراضية vor.v على LA464.

الاستخدام

root@kitploit:~
Usage: ./loongbleed_poc [OPTIONS]

Options:
  -a, --all                Launch one thread pinned to each physical core.
                           By default only thread on CPU 0 is launched.
  -g, --gadget [vor|vld|fld.d|fld.s]
                           Use different instructions for testing.
  -h, --help               Show this help and exit.

أمثلة

root@kitploit:~
# Single-thread mode on CPU 0
./run.sh

# Single-thread mode with vld gadget (required for LA464)
./run.sh --gadget vld

# All physical cores, default gadget
./run.sh -a

# All cores with fld.d gadget
./run.sh --all --gadget fld.d

سيناريوهات الهجوم

LA664 (مثل Loongson 3C6000/D)

يعالج خيط الضحية بيانات حساسة على وحدة معالجة منطقية واحدة بينما يفحص إثبات المفهوم السجلات على شقيقه في SMT. يمكن لخيط التنصت ملاحظة أجزاء من بيانات الضحية في البتات العلوية المسرّبة.

root@kitploit:~
# Terminal 1 — start LoongBleed on CPU 0
./run.sh

# Terminal 2 — victim workload on the SMT sibling (CPU 1)
while true; do numactl -C 1 sort < /etc/shadow > /dev/null; done

لإعداد آلي، استخدم السكربت المرفق:

root@kitploit:~
./poc_la664.sh

يقوم هذا بتشغيل حمل عمل sort على CPU 1 (شقيق SMT لـ CPU 0) وتشغيل LoongBleed على CPU 0 بالأداة الافتراضية.

LA464

يعالج خيط الضحية بيانات حساسة على وحدة معالجة بينما يفحص إثبات المفهوم السجلات على النواة نفسها. يتطلب --gadget vld لأن الأداة الافتراضية vor.v لا تسرّب على LA464.

root@kitploit:~
# Terminal 1 — start LoongBleed on CPU 0
./run.sh --gadget vld

# Terminal 2 — victim workload on the same core
while true; do numactl -C 0 sort < /etc/shadow > /dev/null; done

لإعداد آلي:

root@kitploit:~
./poc_la464.sh

يقوم هذا بتشغيل حمل عمل sort على CPU 0 وتشغيل LoongBleed مع --gadget vld.

البناء

إثبات المفهوم هو برنامج C++ بملف واحد دون أي تبعيات خارجية.

root@kitploit:~
g++ -std=c++11 -O2 -march=native -pthread -o loongbleed_poc loongbleed_poc.cpp

أو استخدم السكربت المرفق:

root@kitploit:~
./run.sh
# or, on LA464:
./run.sh --gadget vld

تفسير المخرجات

عند اكتشاف تسريب وتحتوي البايتات المسرّبة على سلسلة من 8 أحرف ASCII قابلة للطباعة متجاورة على الأقل (0x20–0x7e)، يطبع إثبات المفهوم:

root@kitploit:~
[cpu   0] LEAK chunk=14 data=0x7461646e756f4620_6572617774666f53_0000000000000000_0000000000000000 ascii=............Software Foundat
  • cpu — وحدة المعالجة المنطقية التي تم تثبيت خيط الاكتشاف عليها
  • chunk — أي من فتحات سجلات المتجه الـ 16 ($xr0–$xr15) تسبّبت في ذلك
  • data — القيمة الكاملة بعرض 256 بت المقروءة من $xrN بعد التعليمة، معروضة بصيغة data3_data2_data1_data0 حيث:
    • data0 = البتات [63:0] (أدنى 64 بت من النتيجة)
    • data1 = البتات [127:64] (أعلى 64 بت من النصف السفلي بعرض 128 بت)
    • data2 = البتات [191:128] (أدنى 64 بت من النصف العلوي بعرض 128 بت)
    • data3 = البتات [255:192] (أعلى 64 بت من النصف العلوي بعرض 128 بت)
  • ascii — التفسير القابل للطباعة للنافذة المسرّبة بحجم 28 بايت (البايتات 4–31 من النتيجة، أي البتات الـ 224 العلوية ناقص أدنى 32 بت). تُعرض البايتات غير القابلة للطباعة كـ ..

أي قيمة غير صفرية في البتات الـ 128 العلوية (data2 أو data3) تشير إلى تسريب بيانات على مستوى البنية الدقيقة.

كيف تم اكتشافها

تم اكتشاف الثغرة أثناء قراءة مقال Chips and Cheese بعنوان "Loongson's LSX and LASX Vector Extensions". أشار المقال إلى أن تعليمات المتجهات قد تترك وراءها بعض بقايا البيانات العشوائية. قادنا هذا إلى افتراض أن إعادة تسمية السجلات قد لا تمسح السجلات — وهي آلية مشابهة لـ ZenBleed — مما قد يسمح نظرياً بتسريب بيانات مساحة النواة. ثم أجرينا تجارب للتحقق من هذه الفرضية؛ وقد حدث التسريب فعلاً وتكرّر على كل من Loongson 3A5000 و 3A6000.

إخلاء المسؤولية

يُقدَّم هذا المشروع لأغراض تعليمية وبحثية أمنية فقط.

تنزيل الأداة
GadgetInstructionDescriptionLeaks on LA664Leaks on LA464
vorvor.v $vrN, $vrN, $vrNBitwise OR of $vrN with itselfYesNo
vldvld $vrN, …128-bit load from memory into $vrNYesYes
fld.dfld.d $fN, …64-bit floating-point load into $fN (alias of $vrN low 64 bits)YesYes
fld.sfld.s $fN, …32-bit floating-point load into $fN (alias of $vrN low 32 bits)YesYes