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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-33317 — إثبات المفهوم لـ CVE-2026-33317، وهو كتابة خارج الحدود في OP-TEE PKCS#11 TA، يوضح تلف كومة الذاكرة في العالم الآمن عبر قالب سمات غير صالح. | Kitploit
أدوات/GitHubGitHub/0xbbdd/cve-2026-33317
أمان الأنظمة المدمجةتحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيأمان الأجهزة وإنترنت الأشياءاستغلال الملفات الثنائية
GitHub0xbbdd/cve-2026-33317

CVE-2026-33317

إثبات المفهوم لـ CVE-2026-33317، وهو كتابة خارج الحدود في OP-TEE PKCS#11 TA، يوضح تلف كومة الذاكرة في العالم الآمن عبر قالب سمات غير صالح.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-33317 OP-TEE PKCS#11 PoC

يحتوي هذا المستودع على إثبات المفهوم الخاص بالعالم العادي (Normal World)، وملاحظات إعادة الإنتاج، وسجلات ملتقطة لـ CVE-2026-33317 / GHSA-8cqw-mg7v-c9p9.

يصف النشرة الأمنية الرسمية لـ OP-TEE التحقق المفقود في entry_get_attribute_value() لـ PKCS11_CMD_GET_ATTRIBUTE_VALUE. يمكن أن تسبب هذه الثغرة قراءات خارج الحدود من كومة PKCS#11 TA، ومع قالب سمات مشوّه، كتابات تتجاوز المخزن المؤقت المؤقت للقالب. يستهدف إثبات المفهوم هذا حالة الكتابة خارج الحدود ويوضح تلف كومة العالم الآمن (Secure World) في PKCS#11 TA.

  • النشرة الأمنية: https://github.com/OP-TEE/optee_os/security/advisories/GHSA-8cqw-mg7v-c9p9
  • CVE: CVE-2026-33317
  • الحزمة المتأثرة: OP-TEE PKCS#11 TA
  • الإصدارات المتأثرة في النشرة الأمنية: >= 3.13.0
  • الإصدارات المصححة في النشرة الأمنية: 4.11 وما بعده
  • CVSS v3.1 في النشرة الأمنية: 8.7 عالية
  • نقاط الضعف في النشرة الأمنية: CWE-125, CWE-787

استخدم هذا فقط في مختبر محلي أو بيئة أخرى حيث لديك إذن لاختبار OP-TEE.

ما يوجد في هذا المجلد

كانت النسخة المحلية العاملة التي أُعدّ منها هذا README مساحة عمل OP-TEE QEMUv8 مسطّحة. تمت إزالة دليل .repo وجميع ملفات/أدلة بيانات .git الوصفية، بحيث لم يعد الأرشيف المحلي قابلاً للاستخدام مع repo sync أو أوامر سجل git العادية.

يستبعد مستودع GitHub عمداً أشجار المصدر الضخمة لـ OP-TEE/QEMU، وسلاسل الأدوات، ومخرجات البناء. أعد إنشاءها من qemu-v8-setup.md، أو انسخ ملفات إثبات المفهوم إلى جذر بناء qemu_v8 الموجود لـ OP-TEE، قبل تشغيل إعادة إنتاج QEMU الآلية من استنساخ جديد.

ملفات المستوى الأعلى المهمة:

كان الأرشيف المحلي المُعدّ يحتوي أيضاً على أدلة المصدر/البناء مثل optee_os، وoptee_client، وqemu، وlinux، وtrusted-firmware-a، وu-boot، وbuildroot، وout-br، وtoolchains؛ هذه الأدلة مُتجاهلة للنشر.

ملخص الثغرة

في شجرة optee_os المعرضة للخطر، يتكرر ta/pkcs11/src/object.c عبر قالب سمات متسلسل مقدَّم من العميل:

root@kitploit:~
cur = (char *)template + sizeof(struct pkcs11_object_head);
end = cur + template->attrs_size;
...
data_ptr = cli_head.size ? cli_ref->data : NULL;
rc = get_attribute(obj->attributes, cli_head.id, data_ptr, &cli_head.size);

لا تُثبت الحلقة أن كل رأس سمة ومنطقة بياناتها موجودان بالكامل داخل القالب المخصص. يرسل إثبات المفهوم:

  • attrs_size = 8، رأس pkcs11_attribute_head واحد بالضبط ولا توجد بايتات بيانات.
  • attrs_count = 1.
  • cli_head.id = CKA_LABEL.
  • cli_head.size = 16، مطابقاً لتسمية الكائن المُنشأ البالغة 16 بايت.

يُنشئ ذلك تخصيص قالب بحجم 16 بايت:

root@kitploit:~
sizeof(pkcs11_object_head) + attrs_size = 8 + 8 = 16

ثم يشير cli_ref->data إلى template + 16، أي بايت واحد بالضبط بعد نهاية التخصيص. ترى get_attribute() في ta/pkcs11/src/attributes.c أن الحجم المقدم من المتصل كبير بما يكفي وتنسخ التسمية ذات الـ 16 بايت إلى ذلك المؤشر خارج الحدود، مما يُتلف كومة PKCS#11 TA.

بدء سريع

المتطلبات الأساسية المستخدمة بواسطة مساحة عمل QEMUv8 المُعدّة:

  • مضيف Linux x86-64
  • expect
  • مساحة عمل OP-TEE qemu_v8 مع مخرجات البناء، وسلاسل الأدوات، وثنائي QEMU مرتبة مثل الأرشيف المحلي الموصوف في qemu-v8-setup.md

بناء إثبات المفهوم:

root@kitploit:~
./build_poc.sh

نتيجة البناء المتوقعة:

root@kitploit:~
Built: out/bin/c01_poc

تشغيل إعادة إنتاج QEMUv8 الآلية:

root@kitploit:~
./run_c01.sh

يتحقق الغلاف من هذه الملفات المرحلية قبل التشغيل:

  • out/bin/bl1.bin
  • out/bin/Image
  • out/bin/rootfs.cpio.gz
  • out/bin/c01_poc

إذا كانت نواتج البناء مفقودة، أعد إنشاء/بناء مساحة عمل OP-TEE أولاً ثم أعد تشغيل ./build_poc.sh.

النتيجة المتوقعة

يجب أن يُظهر سجل العالم العادي الطلب المصمم:

root@kitploit:~
[+] TEEC session with PKCS#11 TA opened
[+] INIT_TOKEN  rc=0x00000000 OK
[+] OPEN_SESSION rc=0x00000000, session_handle=0x00000001
[+] CREATE_OBJECT rc=0x00000000, obj_handle=0x00000001
[+] Object has CKA_LABEL = "AAAAAAAAAAAAAAAA" (16 bytes)
[+] Sending malicious C_GetAttributeValue (attrs_size=8, cli_head.size=16)...
[+] GET_ATTRIBUTE_VALUE[0] rc=0xffffffff

يجب أن يحتوي سجل العالم الآمن على تأكيد المُخصِّص وانهيار TA:

root@kitploit:~
E/TA:  assertion 'BH((char *) b - b->bh.bsize)->prevfree == 0' failed at lib/libutils/isoc/bget.c:1022 in brel()
E/TC:? 0 TA panicked with code 0xffff0000
E/LD:  Status of TA fd02c9da-306c-48c7-a49c-bbd827ae86ee

السجلات الملتقطة من تشغيل ناجح موجودة بالفعل في:

  • out/bin/c01_nw.log
  • out/bin/c01_sw.log

تدفق إثبات المفهوم

يستدعي c01_poc.c UUID الخاص بـ PKCS#11 TA وهو fd02c9da-306c-48c7-a49c-bbd827ae86ee عبر libteec:

  1. فتح جلسة TEEC مع PKCS#11 TA.
  2. تهيئة فتحة الرمز 0.
  3. فتح جلسة PKCS#11 للقراءة/الكتابة.
  4. إنشاء كائن جلسة AES مع CKA_LABEL = "AAAAAAAAAAAAAAAA".
  5. إرسال طلب CMD_GET_ATTRIBUTE_VALUE مشوّه مع attrs_size = 8 وcli_head.size = 16.

الطلب الخبيث الأول كافٍ لإتلاف بيانات الكومة الوصفية. ثم ينهار TA عندما يكتشف مُخصِّص bget الخاص بـ OP-TEE بيانات الكتلة التالفة.

ملاحظات

  • يشارك run_c01.sh دليل out/bin في الضيف عبر virtio-9p ويكتب السجلات مرة أخرى إلى نفس الدليل.
  • في الأرشيف المحلي الكامل، يجب أن تشير روابط نواتج التشغيل المرحلية في out/bin إلى النواتج داخل ذلك الأرشيف. يتتبع مستودع GitHub المنشور فقط ملفات out/bin/c01_*.log الملتقطة.
  • يوثق C-01-reproduction.md نهج أداة ASAN السابق على x86. إثبات المفهوم القابل للتشغيل في هذا المجلد هو PoC QEMUv8 TEEC: c01_poc.c.
  • نظراً لإزالة بيانات repo الوصفية، تعامل مع هذا الدليل كمساحة عمل PoC مؤرشفة وليس كنسخة OP-TEE متزامنة مع المصدر.
تنزيل الأداة
المسارالغرض
c01_poc.cإثبات مفهوم العالم العادي AArch64 باستخدام استدعاءات libteec الخام
build_poc.shيترجم c01_poc.c بشكل متقاطع إلى out/bin/c01_poc
run_c01.shيشغّل QEMUv8 وينفذ إثبات المفهوم عبر expect
c01_check.expيؤتمت تسجيل دخول الضيف، وتركيب virtio-9p، وتنفيذ إثبات المفهوم
out/bin/c01_nw.logسجل إعادة إنتاج العالم العادي الملتقط
out/bin/c01_sw.logسجل العالم الآمن الملتقط مع انهيار PKCS#11 TA
reproduction-log.mdملاحظات إعادة إنتاج QEMUv8 الكاملة
qemu-v8-setup.mdملاحظات إعداد OP-TEE QEMUv8 والتحقق الأساسي
C-01-reproduction.mdملاحظات أداة ASAN السابقة؛ ليست إثبات المفهوم الرئيسي القابل للتشغيل في هذا المجلد
AGENTS.mdملاحظات صيانة لوكلاء الذكاء الاصطناعي/البرمجيات المستقبليين