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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-38297-Go-wasm-Replication | Kitploit
أدوات/GitHubGitHub/paras98/cve-2021-38297-go-wasm-replication
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويبCTFالأوراق والأبحاثالتعلم والتعليماستغلال الملفات الثنائيةمختبرات وتدريب عملي

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
GitHubparas98/cve-2021-38297-go-wasm-replication

CVE-2021-38297-Go-wasm-Replication

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

🚨 استغلال CVE-2021-38297: رحلة في تجاوز سعة المخزن المؤقت في GO Wasm 🚨

🌐 نظرة عامة على الثغرة الأمنية 🌐

WebAssembly (WASM) 🌍، وهو تنسيق تعليمات ثنائية متطور، يتيح التنفيذ السلس للغات عالية المستوى مثل C وC++ وRust وGO في متصفحات الويب الحديثة. ومع ذلك، كشف اكتشاف CVE-2021-38297 🚩 عن خلل خطير في عملية تجميع وتحميل GO للملفات الثنائية WASM المترجمة بواسطة GO. توجد هذه الثغرة في محمّل JavaScript الخاص بـ WASM (wasm_exec.js) المقدم من GO، وقد سمحت بالإدراج غير المقيد للبيانات في وسيط argv. وبما أن argv يُخزَّن في الذاكرة الخطية لـ WASM، يمكن للجهات الخبيثة استغلال ذلك لاستبدال الذاكرة الخطية لبرنامج WASM المترجم بواسطة GO بمدخلات argv كبيرة الحجم، مما يؤدي إلى نتائج غير متوقعة وربما خطيرة. كانت هذه الثغرة مصدر قلق كبير في إصدارات GO قبل 1.17.2. باختصار:

  1. تقوم الواجهة الأمامية بعرض كل منشور وتعليقاته.
  2. أثناء العرض، يتم تحميل وحدة GO WASM، ومعالجة التعليقات عبر متغير argv والمنشورات في عنوان الذاكرة 0x5000.
  3. تُستخدم دوال مثل toLeetSpeak وprocessSharedVar لمحتوى التعليقات والمنشورات، على التوالي.

💻 التطبيق المعرّض للخطر: Vuln-Twitter 💻

في إثبات المفهوم الخاص بنا، نقدّم «Vuln-Twitter»، وهي منصة تواصل اجتماعي محاكاة تتيح المحتوى الذي ينشئه المستخدمون عبر المنشورات والتعليقات. تستخدم الواجهة الأمامية لـ Vuln-Twitter خادم Node.js للويب وSQLite لتخزين البيانات، وتعتمد على JavaScript بسيطة إلى جانب وحدة GO WASM باسم wordprocessor.wasm لعرض المحتوى ديناميكيًا. تتضمن هذه الوحدة، بشكل ملحوظ، دوال مثل toLeetSpeak التي تحوّل مدخلات المستخدمين إلى «LeetSpeak» منمّقة لتجربة مستخدم جذابة. Vuln twitter UI

استغلال تجاوز سعة المخزن المؤقت

يكشف استكشافنا عن نقطة استغلال حرجة خلال مرحلة عرض المحتوى، حيث يخضع كل تعليق للتحويل بواسطة وحدة GO WASM. يمكن لتعليق ضخم مصمم خصيصًا أن يُطلق الثغرة، مما يؤدي إلى تجاوز سعة المخزن المؤقت الذي يتلاعب بمحتوى المنشور الأصلي، مما يوضح ناقل هجوم كلاسيكي من نوع Stored XSS. لا تؤكد هذه الثغرة على إمكانية التلاعب الضار بالبيانات فحسب، بل تسلط الضوء أيضًا على الآثار الأوسع لممارسات البرمجة الآمنة في سياق تطوير الويب وتطبيقات WASM. راجع قسم الكود الذي يقوم بذلك:

Rendering Logic

مخطط الذاكرة الخطية لـ WASM عند عرض تعليق:

Rendering Logic memory Exploitation flow

إعادة إنتاج الاستغلال

للهواة والباحثين المهتمين باستكشاف هذه الثغرة بشكل أعمق، نقدم خطوات تفصيلية لإعادة إنتاج بيئة الاستغلال باستخدام إصدار معين من GO المعرّض للخطر. يسهّل هذا النهج العملي فهمًا أعمق لآليات الثغرة واستراتيجيات التخفيف المحتملة. ملاحظة: لإعادة إنتاج هذا، تحتاج إلى تثبيت إصدار go go1.17.1 محليًا، وهو الإصدار المعرّض للخطر المستخدم في هذا السيناريو. يمكنك الرجوع إلى وثائق go الرسمية حول كيفية تثبيت إصدارات go محددة.

الآن دعونا نحاول إعادة إنتاج السيناريو أعلاه:

  1. لإعداد التطبيق بالكامل، استنسخ المشروع أولاً: git clone [email protected]:gkrishnan724/CVE-2021-38297.git && cd vuln-twitter
  2. شغّل npm install لتثبيت جميع التبعيات
  3. شغّل npm run resetDB الذي سيهيئ قاعدة البيانات ببعض المنشورات والتعليقات.
  4. شغّل npm run dev الذي سيبدأ تشغيل الخادم المحلي، وافتح localhost:3000 في المتصفح وستتمكن من رؤية صفحة تسجيل الدخول.

الآن، دعونا نسجل الدخول بحساب خبيث باستخدام بيانات الاعتماد اسم المستخدم: I_CANT_HACK، كلمة المرور: hacker، وبمجرد تسجيل الدخول، يجب أن تتمكن من رؤية الخلاصة مع بعض المنشورات.

يبدو هذا المنشور مثيرًا للاهتمام:

Amazon: ready 4 black friday? https://www.amazon.com/blackfriday

ماذا لو استطعنا، باستخدام التقنية أعلاه، استبدال المنشور من Amazon.com ليشير إلى رابط خبيث؟

ارجع إلى ملف exploit.txt، فهو يحتوي على التعليق المملوء بحشو من حروف «A» بحيث نستبدل كل شيء حتى العنوان 0x5000، وفي النهاية يمكنك رؤية النص ready for black friday? https://evil.com/blackfriday. إذا نسخنا هذا النص وعلّقنا به على المنشور أعلاه، فيجب أن نتمكن من استبدال المنشور الأصلي بالنص أعلاه.

جربوه بأنفسكم وشاهدوا :) Exploit

🛠️ التصحيح والتخفيف 🛠️

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

في هذا التطبيق، قدمت أيضًا نصًا برمجيًا للتصحيح (patch script) يستخدم إصدارًا أحدث من go:

  1. شغّل الهدف npm run patchServer

يجب أن يعيد هذا تجميع ملف go بالإصدار الجديد ويبدأ تشغيل الخادم بنسخة التصحيح

يجب أن تلاحظ الآن أن المنشور لا تتم الكتابة فوقه، وإذا لاحظت وحدة التحكم، سنرى خطأً بدلاً من ذلك: Argument length too long. Patch

💡 الخاتمة والتأملات 💡

رحلتنا عبر استغلال CVE-2021-38297 والتخفيف منه تقدم رؤى قيمة حول التحديات والفرص التي يطرحها دمج لغات البرمجة عالية المستوى في بيئات الويب عبر WASM. كما تحفز على فحص نقدي للممارسات الأمنية في تطوير البرمجيات، وتحث على اتباع نهج استباقي في إدارة الثغرات واعتماد معايير البرمجة الآمنة. بناءً على فهمنا، نعتقد أن تخطيط الذاكرة الخطية لـ GO موضح أدناه:

GO memory layout

🎓 العرض التقديمي والإسهام الأكاديمي 🎓

بوصفنا طلابًا في جامعة Carnegie Mellon، يسهم تحقيقنا في CVE-2021-38297 في الخطاب الأكاديمي والمهني الأوسع حول الأمن السيبراني، ويقدم دراسة حالة عملية حول آثار التقنيات الناشئة على أمن البرمجيات. وتوضح مواد العرض التقديمي الخاصة بنا، المتاحة للمراجعة، المزيد من نتائجنا ومنهجياتنا، وتدعو إلى الحوار والتعاون بين مجتمع الأمن السيبراني.

🌟 الاعتمادات والإسهامات 🌟

هذا المشروع شهادة على البحث التعاوني والاستقصاء الأكاديمي، بقيادة فريق متفانٍ من الطلاب والباحثين:

  • Paras Saxena (@paras98)
  • Gopala Krishnan (@gkrishnan724)
  • Zhejia Yang (@zildjianpoi)
  • Shubham Kulkarni (@shubhamkulkarni97)
  • Anisha Nilakantan

الشرح الفني

التطبيق المعرّض للخطر: Vuln-Twitter

يعرض إثبات المفهوم هذا تطبيقًا للتواصل الاجتماعي، Vuln-Twitter، يسمح لعدة مستخدمين بنشر المحتوى والتعليقات. يستخدم خادم الويب، المبني على Node.js، SQLite لتخزين بيانات المنشورات والتعليقات.

تستخدم الواجهة الأمامية JavaScript بسيطة إلى جانب وحدة GO WASM باسم wordprocessor.wasm. تعرض هذه الوحدة دوال مثل toLeetSpeak، التي تحوّل سلاسل الإدخال إلى «LeetSpeak» (على سبيل المثال، «Hello!» تصبح «h3ll0!»).

تساعد وحدات GO WASM في عرض المنشورات والتعليقات بصيغة LeetSpeak.

استغلال تجاوز سعة المخزن المؤقت

أثناء عملية عرض الواجهة الأمامية، عند استلام المنشورات والتعليقات من الخادم، يخضع كل تعليق للعرض بصيغة «LeetSpeak» باستخدام وحدة GO WASM. يُمرَّر تعليق كل منشور كجزء من متغير argv بعد تحميل وحدة GO WASM.

علاوة على ذلك، توجد دالة processSharedVar() في وحدة GO، مصممة لقراءة السلسلة الموجودة في العنوان 0x5000 وتحويلها إلى كلام مبسط (على سبيل المثال، «How are you?» تصبح «How r u?»). يُضاف المنشور الأصلي صراحةً إلى 0x5000 في الذاكرة الخطية ليتم الوصول إليه بواسطة هذه الدالة، مما يغير محتوى المنشور.

🔗 المصادر وقراءات إضافية 🔗

للمهتمين بالتعمق في CVE-2021-38297 وآثاره الأوسع، نقدم قائمة منسقة من الموارد والقراءات، بدءًا من النشرات الأمنية الرسمية إلى المدونات التقنية والأوراق الأكاديمية. تقدم هذه المواد رؤى شاملة حول الثغرة، وتأثيرها على أمن البرمجيات، والجهود المستمرة لضمان سلامة ونزاهة تطبيقات الويب.

  • https://www.ibm.com/support/pages/security-bulletin-ibm-event-streams-affected-potential-buffer-overflow-golang-cve-2021-38297-0
  • https://vulmon.com/vulnerabilitydetails?qid=CVE-2021-38297&scoretype=cvssv3
  • https://pedromarquez.dev/blog/2023/2/node_golang_wasm
  • https://nvd.nist.gov/vuln/detail/CVE-2021-38297
  • https://github.com/golang/go/issues/48797
  • https://github.com/golang/go/commit/f63250238be548b7c6c24ae840541102a5cfef99
  • https://jfrog.com/blog/cve-2021-38297-analysis-of-a-go-web-assembly-vulnerability/
  • https://stackoverflow.com/questions/64763007/why-is-webassembly-safe-and-what-is-linear-memory-model
  • https://webassembly.org/
  • https://hacks.mozilla.org/2019/08/webassembly-interface-types/
  • https://blog.protekkt.com/blog/basic-webassembly-buffer-overflow-exploitation-example
  • https://www.usenix.org/system/files/sec20_slides_lehmann.pdf
  • https://xeiaso.net/talks/wasm-abi/

مستودع التطوير الأصلي: https://github.com/gkrishnan724/CVE-2021-38297

تنزيل الأداة