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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/if-forget/cve-2026-52134-libiec61850
تحليل الثغرات الأمنيةأمن SCADA/ICSأمن الشبكاتالتعلم والتعليمموارد منسقةمختبرات وتدريب عملي
GitHubif-forget/cve-2026-52134-libiec61850

CVE-2026-52134-libiec61850

إشعار فني عام وأدلة إعادة إنتاج لثغرة CVE-2026-52134 التي تؤثر على معالجة إعادة إرسال GOOSE في libiec61850 الإصدار v1.6.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-52134: معالجة إعادة تشغيل GOOSE وحداثة الرسائل في libiec61850 الإصدار 1.6

الحالة

تم تعيين CVE-2026-52134. نشر سجل CVE المقابل قيد الانتظار.

المنتج المتأثر

  • البائع: MZ Automation GmbH
  • المنتج: libiec61850
  • الإصدار المختبر: 1.6
  • حالة الإصدارات الأخرى: غير مؤكدة
  • الملف المتأثر: src/goose/goose_receiver.c
  • الدالة المتأثرة: parseGoosePayload()

الملخص

لا يرفض مسار استقبال مشترك GOOSE في libiec61850 الإصدار 1.6 بشكل كافٍ بعض رسائل GOOSE المعاد تشغيلها أو القديمة قبل تحديث الحالة المرئية للمشترك واستدعاء دالة الاستدعاء المسجلة.

أظهرت تجربتان مضبوطتان سلوكًا مترابطًا في نفس مسار الاستقبال:

  1. التراجع إلى stNum أقل: بعد أن عالج المشترك stNum=2، تسببت إعادة تشغيل إطار الملتقط سابقًا في قيام دالة الاستدعاء بالإبلاغ عن الحالة والبيانات الأقدم مرة أخرى.
stNum=1
  • إعادة تشغيل sqNum غير متزايد: عند إعادة تشغيل إطار ملتقط سابقًا بنفس stNum ولكن sqNum أقدم، تم تمييز الإطار على أنه غير صالح، لكن استدعاءات دالة الاستدعاء ما زالت تحدث وبقيت البيانات المعاد تشغيلها مرئية.
  • تُعرض هذه كملاحظتين مترابطتين لمشكلة واحدة في معالجة إعادة التشغيل/حداثة الرسائل، وليس كـ CVE منفصلين.

    متطلبات الهجوم

    يجب أن يكون المهاجم قادرًا على:

    • الوصول إلى نطاق البث أو VLAN الخاص بطبقة IEEE 802.3 Layer-2 ذات الصلة
    • التقاط إطارات GOOSE Ethernet المشروعة
    • حقن إطارات Ethernet باستخدام EtherType 0x88B8

    هذا ليس هجومًا عن بُعد عشوائيًا عبر الإنترنت.

    الأساس التقني

    يتحقق منطق الاستقبال ذو الصلة من sqNum عندما يتساوى stNum المستلم مع stNum المخزن. مسار الكود المختبر لا يرفض stNum أقل قبل تحديث حالة المشترك واستدعاء دالة الاستدعاء.

    لم يتم تعديل ملف المكتبة المختبر. كانت النسخة الأصلية ونسخة العمل من src/goose/goose_receiver.c بنفس قيمة SHA-256:

    root@kitploit:~
    c42f2aec80f605c458d0bca524ccb09f2e35f9b83a02f854f95d9444616c075b
    

    فحص سلامة المصدر

    بيئة الاختبار

    • Ubuntu 20.04.6 LTS
    • libiec61850 v1.6
    • زوج Ethernet افتراضي معزول veth0 / veth1 في Linux
    • tcpdump
    • TShark
    • Python 3 و Scapy
    • ناشر ومشترك مثالين معدّلين يُستخدمان فقط كأداة اختبار

    أنتجت أداة الاختبار انتقالات حالة مضبوطة وطبعت قيم stNum و sqNum والصحة والبيانات المرئية لدالة الاستدعاء. لم يتم تعديل ملف المكتبة القابل للاستغلال نفسه.

    التجربة أ: التراجع إلى stNum أقل

    خط الأساس

    أرسل الناشر المتحكم فيه حالتين:

    root@kitploit:~
    State A: stNum=1, sqNum=0, data=1111
    State B: stNum=2, sqNum=0, data=2222
    

    احتوى التقاط الحزمة الأساسي على إطارَي GOOSE بهذا الترتيب:

    root@kitploit:~
    Frame 1: stNum=1, sqNum=0
    Frame 2: stNum=2, sqNum=0
    

    حقول خط الأساس واستدعاءاته

    احتوى إخراج المشترك أيضًا على استدعاء مساعد لـ stNum=1, sqNum=0 مُعلّم بأنه valid=false قبل الحالة B. يُحتفظ بهذا الاستدعاء المساعد في الأدلة ولكن لا يُستخدم كأساس لاستنتاج التراجع. الحالة الحاسمة قبل إعادة التشغيل كانت الاستدعاء اللاحق الذي يحتوي على stNum=2 وقيمة البيانات 2222.

    إعادة تشغيل واحدة

    حمّل سكربت إعادة التشغيل التقاط الأساس ذا الإطارين، وحدد الإطار 1، وأرسله مرة واحدة عبر veth0.

    مباشرة قبل إعادة التشغيل، أبلغت دالة الاستدعاء:

    root@kitploit:~
    stNum=2, sqNum=0, valid=true, allData={2222}
    

    بعد إعادة تشغيل الإطار القديم مرة واحدة، أبلغت دالة الاستدعاء:

    root@kitploit:~
    stNum=1, sqNum=0, valid=true, allData={1111}
    

    إعادة تشغيل واحدة والتراجع إلى stNum

    يوضح هذا تراجعًا مرصودًا في حالة المشترك من stNum=2 إلى stNum=1 بعد إعادة تشغيل إطار ملتقط سابقًا بقيمة stNum أقل.

    عمليات إعادة تشغيل إضافية مطابقة

    تم إرسال أربع نسخ إضافية من نفس الإطار القديم. احتوت جميعها على stNum=1, sqNum=0.

    تم الإبلاغ عن النسخ اللاحقة على أنها valid=false، لكن أرقام الاستدعاءات استمرت في الزيادة وبقيت البيانات المعاد تشغيلها مرئية:

    إعادة التشغيل المكررة تسبب استدعاءات أيضًا

    تُظهر هذه الملاحظة الثانوية أن تمييز إطار مكرر على أنه غير صالح لم يمنع تسليمه إلى دالة الاستدعاء في مسار الاستقبال المختبر.

    التجربة ب: إعادة تشغيل sqNum غير متزايد

    استخدم إعادة إنتاج سابقة الناشر والمشترك المثالين الرسميين. أنتج الناشر تسلسلًا طبيعيًا باستخدام:

    root@kitploit:~
    stNum=1
    sqNum=0, 1, 2, 3
    

    تمت إعادة تشغيل أول إطار ملتقط (stNum=1, sqNum=0) بعد أن كان المشترك قد عالج بالفعل القيمة اللاحقة للتسلسل.

    خط الأساس الأصلي لـ sqNum

    تم الإبلاغ عن النسخ المعاد تشغيلها على أنها غير صالحة لأن sqNum=0 المستلم لم يكن أحدث من قيمة التسلسل المخزنة. ومع ذلك، استمر المشترك في طباعة أحداث دالة الاستدعاء التي تحتوي على البيانات المعاد تشغيلها:

    استدعاءات إعادة تشغيل sqNum الأصلية

    تدعم هذه التجربة ملاحظة أضيق ولكنها مرتبطة:

    • تم اكتشاف إعادة تشغيل نفس الحالة عبر علامة الصلاحية.
    • لم يمنع الاكتشاف تسليم دالة الاستدعاء للرسالة المعاد تشغيلها في المثال المختبر.

    لقطات الشاشة الأولية الخام لإعادة التشغيل محفوظة كمواد داعمة:

    • 12-original-sqnum-replay-command-raw.png
    • 13-original-sqnum-replay-terminal-raw.png

    تحتوي تلك الصور الخام على تحذيرات استيراد وحدات اختيارية غير ذات صلة من Scapy. لم تمنع التحذيرات السكربت من الإبلاغ عن إطارات GOOSE الملتقطة وإكمال الإرسال، لكن لقطات الشاشة الأنظف أعلاه مفضلة لمراجعة النتيجة التقنية.

    العلاقة بين التجربتين

    توضح التجربتان فرعين مختلفين لنفس مشكلة إعادة تشغيل/حداثة رسائل GOOSE:

    الملاحظةالرسالة المستلمةالنتيجة المرصودة
    إعادة تشغيل stNum أقلمخزّن stNum=2؛ استُلم stNum=1 قديمتم تسليم الحالة والبيانات القديمة إلى دالة الاستدعاء والإبلاغ عنها على أنها صالحة في التشغيل المختبر
    إعادة تشغيل sqNum غير متزايدنفس stNum؛ استُلم sqNum أقدم أو مكررتم الإبلاغ عن الرسالة على أنها غير صالحة، لكن استدعاءات دالة الاستدعاء وتسليم البيانات المعاد تشغيلها استمرت

    الملاحظة الأولى هي النتيجة الأساسية لـ CVE لأنها توضح تراجعًا من حالة أحدث إلى حالة أقدم. الملاحظة الثانية هي دليل داعم حول كيفية استمرار عمليات إعادة التشغيل غير الصالحة لنفس الحالة عبر مسار دالة الاستدعاء.

    التأثير المرصود

    التأثير المرصود على مستوى البرمجيات هو:

    • يمكن تسليم حالة GOOSE مقبولة سابقًا إلى دالة الاستدعاء بعد معالجة حالة أحدث بالفعل.
    • يمكن أن تنتقل الحالة المرئية للمشترك من stNum أحدث إلى stNum أقدم.
    • يمكن للإطارات القديمة المتكررة أن تستمر في التسبب بنشاط دالة الاستدعاء حتى عندما يتم الإبلاغ عن النسخ اللاحقة على أنها غير صالحة.

    قد تعالج التطبيقات التي تستهلك بيانات دالة الاستدعاء دون فرض حداثة مستقل قيمًا قديمة أو معاد تشغيلها.

    يعتمد التأثير النهائي على تطبيق المشترك والتكوين ومنطق التعشيق ومنطق الحماية.

    لم يتم اختبار أو تشغيل أي مرحل حماية فيزيائي أو دائرة فصل أو قاطع دائرة أو شبكة محطة فرعية إنتاجية في هذه التجارب.

    الاتجاه المقترح للمعالجة

    قبل تحديث حالة المشترك أو استدعاء دالة الاستدعاء:

    1. ارفض stNum مستلمًا أقدم من آخر stNum مقبول.
    2. عندما يكون stNum دون تغيير، ارفض sqNum غير متزايد.
    3. تأكد من أن الإطار المصنف على أنه غير صالح لا يمكنه استبدال آخر حالة مقبولة أو تسليم بيانات قديمة عبر مسار دالة الاستدعاء العادي.
    4. ضع في الاعتبار سلوك إعادة التشغيل وإعادة المزامنة ومعالجة العدادات المشروعة في التنفيذ النهائي.

    تقليل المخاطر المؤقت

    • قيّد الوصول إلى مقاطع Ethernet الخاصة بـ GOOSE وVLANs.
    • امنع الأجهزة غير المصرح بها من حقن إطارات الطبقة الثانية.
    • راقب تراجع stNum غير المتوقع وقيم sqNum المتكررة.
    • تحقق من حداثة بيانات المشترك قبل استخدام قيم دالة الاستدعاء في المنطق الحرج.
    • اختبر التغييرات في بيئة مختبرية معزولة قبل النشر في الإنتاج.

    الأدلة الداعمة

    توفر الصور التالية معلومات حول مصدر الأدلة والبيئة. تدعم إعادة الإنتاج ولكنها ليست مطلوبة بشكل فردي لفهم النتيجة الرئيسية.

    فحص أداة الاختبار

    فحص أداة الاختبار

    بناء ناجح

    بناء ناجح

    شبكة veth معزولة

    شبكة veth معزولة

    ملخص التقاط خط الأساس

    ملخص التقاط خط الأساس

    مجاميع اختبار القطع الأثرية

    مجاميع اختبار القطع الأثرية

    التصنيف المقترح

    • الضعف: ضعف التحقق من إعادة التشغيل وحداثة الرسائل
    • CWE المقترح: CWE-294، تجاوز المصادقة عبر إعادة تشغيل الالتقاط

    النتيجة الموضحة هي قبول إعادة التشغيل وتسليم حالة قديمة. لا تعتمد على إثبات تمكين المصادقة التشفيرية في النشر المختبر.

    المراجع

    • مستودع libiec61850 الرسمي
    • ملف المصدر المتأثر في شجرة الإصدار v1.6
    • CVE-2026-52134 على CVE.org

    الاعتمادات

    أبلغ عن:

    • Wang Jing
    • Li Chen Yu
    • Guo Lu Lu
    • Guo Jia Xin
    • Zhang Jia Tu
    تنزيل الأداة