ثغرة أمنية حرجة في مكتبة JavaScript (Node.js) الشهيرة: ما يحتاج المطور معرفته
في عالم تطوير الويب، حدث أمر أثر على آلاف المشاريع. اكتشف باحثو الأمن ثغرة أمنية حرجة في مكتبة polyfill-service (الحزمة node-polyfill-service على npm)، المستخدمة على نطاق واسع لإضافة دعم لوظائف JavaScript الحديثة في بيئات التشغيل القديمة. حصلت المشكلة على المعرف CVE-2024-38526 وتقييم 9.8 من 10 على مقياس CVSS - وهو أعلى مستوى خطر للهجمات عن بعد.
جوهر المشكلة
ترتبط الثغرة بمعالجة غير صحيحة لبيانات الإدخال في الوظيفة المسؤولة عن التحميل الديناميكي للـ polyfills. يمكن للمهاجم إرسال طلب HTTP مُشكّل خصيصًا يؤدي إلى تنفيذ كود JavaScript عشوائي على الخادم. وهذا يفتح الطريق أمام اختراق كامل للتطبيق: من سرقة البيانات إلى تثبيت الأبواب الخلفية.
كيف يعمل ذلك
- ناقل الهجوم: توجد الثغرة في آلية التخزين المؤقت للـ polyfills. عند تمرير معامل
featuresغير صحيح، تقوم المكتبة بتنفيذ عمليةeval()خطيرة. - الاستغلال: للهجوم، يكفي إرسال طلب POST مع الحمولة في الجسم. مثال على كود استغلال مبسط:
const payload = 'require("child_process").execSync("rm -rf /")';fetch('/polyfill?features=' + encodeURIComponent(payload));في الظروف الواقعية، يستخدم المهاجمون أساليب أكثر تعقيدًا، مثل إدخال reverse shell أو برامج الفدية.
من يتأثر بذلك
تؤثر الثغرة على جميع إصدارات node-polyfill-service حتى 1.4.3. تُستخدم المكتبة في:
- أطر العمل للعرض من جانب الخادم (Next.js, Nuxt.js);
- أدوات البناء (Webpack, Vite);
- أنظمة إدارة المحتوى على Node.js.
ما يجب فعله الآن
- قم بتحديث المكتبة إلى الإصدار 1.4.4 أو أعلى:
npm update node-polyfill-service; - تحقق من التبعيات في ملف
package-lock.jsonالخاص بك بحثًا عن الإصدار الضعيف; - استخدم محللات الأمان —
npm auditأو Snyk للبحث التلقائي عن الثغرات; - قم بتقييد الطلبات الواردة عبر WAF (جدار حماية تطبيقات الويب) على مستوى البنية التحتية.
استنتاجات للمطور
يذكرنا هذا الحادث بالأهمية الحاسمة للتدقيق المنتظم للتبعيات. حتى المكتبة الصغيرة التي تحتوي على مئات الآلاف من التنزيلات أسبوعيًا يمكن أن تصبح مصدر تهديد خطير. نوصي بإعداد إشعارات تلقائية حول CVEs الجديدة عبر قاعدة بيانات GitHub Advisory Database واختبار التحديثات دائمًا في بيئة معزولة قبل النشر.
هام: إذا كنت تستخدم polyfill-service في الإنتاج، تحقق فورًا من الإصدار. التأخير في التحديث قد يكلف أمان مشروعك.