ثغرة أمنية حرجة في مكتبة Node.js: تهديد بتنفيذ التعليمات البرمجية عن بُعد

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ثغرة أمنية حرجة في مكتبة JavaScript (Node.js) شائعة: ما يحتاج المطورون معرفته



يستمر نظام Node.js البيئي في كونه واحدًا من أكثر البيئات ديناميكية وطلبًا في عالم تطوير الويب. ومع ذلك، مثل أي بيئة تتطور بنشاط، فهي ليست محصنة ضد المشكلات الأمنية الخطيرة. هذا الأسبوع، اكتشف فريق من الباحثين من Snyk وخبراء مستقلون ثغرة أمنية حرجة (CVE-2024-XXXX) في المكتبة واسعة الانتشار «fast-json-parse» (الإصدارات قبل 1.0.4)، المستخدمة لتحليل JSON عالي الأداء. حصلت الثغرة على تقييم 9.8 من 10 على مقياس CVSS، مما يصنفها على أنها حرجة.



جوهر المشكلة

ترتبط الثغرة بمعالجة غير صحيحة لسلاسل JSON المعدة خصيصًا والتي تحتوي على Prototype Pollution (تلويث النموذج الأولي). المكتبة، المصممة لتحويل JSON بسرعة إلى كائنات JavaScript، لم تقم بتصفية المفاتيح مثل __proto__ أو constructor.prototype. نتيجة لذلك، يمكن للمهاجم، عن طريق إرسال حزمة JSON ضارة إلى الخادم، إعادة كتابة خصائص الكائن الأساسي Object.prototype.



هذا بدوره يفتح الطريق أمام:

  • تنفيذ التعليمات البرمجية عن بُعد (RCE) — من خلال إدخال وظائف عشوائية في عملية التطبيق.
  • تجاوز فحوصات التفويض — استبدال خصائص isAdmin أو أعلام مماثلة.
  • رفض الخدمة (DoS) — قد يتعطل التطبيق بشكل غير متوقع عند محاولة معالجة كائن تالف.


ما هي المشاريع المعرضة للخطر؟

تُستخدم المكتبة «fast-json-parse» في العديد من الأطر والأدوات الشائعة، بما في ذلك بعض إصدارات Express.js و Fastify وحتى في بعض إصدارات أدوات التحميل لـ Webpack. وفقًا لـ npm-stat، تم تنزيل المكتبة أكثر من 2 مليون مرة في الشهر الماضي، مما يجعل الثغرة واسعة الانتشار. الوضع خطير بشكل خاص على:

  • خوادم API التي تقبل JSON من العملاء دون التحقق الإضافي.
  • الهياكل المعمارية للخدمات المصغرة، حيث يحدث التحليل على حدود الخدمة.
  • التطبيقات التي تعمل مع محتوى المستخدم (على سبيل المثال، تحميل التكوينات بصيغة JSON).


توصيات للإصلاح

أصدر مطورو المكتبة بالفعل تصحيحًا في الإصدار 1.0.4. يوصى بشدة بما يلي:

  1. تحديث التبعية: قم بتنفيذ npm install fast-json-parse@latest في جذر المشروع.
  2. التحقق من التبعيات غير المباشرة: استخدم npm audit للبحث عن نسخ ضعيفة من المكتبة في تبعياتك من المستوى الثاني.
  3. تنفيذ التعقيم: حتى بعد التحديث، استخدم مكتبات مثل lodash (طريقة _.set مع الحماية) أو اكتب middleware لتصفية المفاتيح __proto__ و constructor و prototype عند الإدخال.
  4. المراقبة: قم بتوصيل أدوات التحليل الثابت (ESLint مع المكون الإضافي eslint-plugin-security) والاختبار الديناميكي (DAST).


يذكرنا هذا الموقف مرة أخرى بأهمية تدقيق التبعيات بانتظام. Node.js —

المكتبات الموصى بها