كشف تقرير لشركة Bloom Security نشر في 13 أكتوبر 2026 عن ثغرة في خاصية النشر الموثوق (Trusted Publishing) في سجل حزم npm، تعرف باسم SlugFest. تتيح الثغرة لمن يستحوذ على اسم مستودع GitHub متروك وراثة صلاحية نشر حزم لا يملكها. وتقدر الشركة الحزم المعرضة للخطر بأكثر من 1500 حزمة، بتجاوز إجمالي تنزيلاتها 10 ملايين مرة.
تتيح هذه الخاصية، التي أتاحتها GitHub للعموم في 31 يوليو 2025، نشر الحزم من مسارات CI/CD عبر بروتوكول OpenID Connect، مع تقليل الحاجة إلى رموز npm طويلة الأمد. ووفقاً لوثائق npm، يحدد صاحب الحزمة المستودع المخول بالنشر عبر اسم المالك واسم المستودع.
أوضحت Bloom أن npm تربط الحزمة بالمستودع باستخدام الاسم بدلاً من المعرف الرقمي الدائم، ولا يُحفظ هذا المعرف إلا بعد أول عملية نشر ناجحة. وفي حال إعادة تسمية المستودع المرتبط أو نقله أو حذفه، أو تغيير حساب مالكه قبل استخدام الارتباط في نشر أي إصدار، يُمكن لأي جهة أخرى المطالبة بالاسم القديم ووراثة الثقة المرتبطة به. وأضافت الشركة أن هذا الخلل شمل أيضاً تنفيذ npm للنشر الموثوق مع منصة GitLab.
تستند Bloom في إحصاءاتها إلى الحزم التي فُعلت فيها خاصية النشر الموثوق حصراً، مشيرة إلى أن تنزيلاتها تتجاوز مليون عملية شهرياً. وترى الشركة أن وكلاء البرمجة المعتمدين على الذكاء الاصطناعي يضاعفون خطورة الثغرة نتيجة تثبيتهم للحزم بشكل مستقل. وتقدر معدلات التثبيت المباشر بحوالي 70 حزمة شهرياً لكل نقطة طرفية، ونحو 350 حزمة على أجهزة المطورين.
أبلغت Bloom منصة GitHub بالثغرة في 6 يونيو 2026 عبر برنامج HackerOne. وتحقق الفريق من البلاغ في 9 يونيو، بينما صدر آخر رد رسمي في 8 يوليو. وأشارت الشركة إلى أن ست محاولات للمتابعة وطلب وساطة لم تلقَ استجابة، قبل أن تكتشف تنفيذ إصلاح صامت قبيل نشر تقريرها، ليرد فريق npm لاحقاً معتذراً عن ضعف التواصل.
أعلنت GitHub في 2 أكتوبر 2026 أن إعدادات النشر الموثوق غير المتحقق منها ستنتهي صلاحيتها تلقائياً بعد 48 ساعة من إنشائها، لتفقد بذلك صلاحية النشر. ويصبح الإعداد معفى من الانتهاء بعد أول عملية نشر ناجحة، في حين يتطلب أي تغيير في هوية المستودع أو المشروع إنشاء علاقة ثقة جديدة بنافذة تحقق تمتد 48 ساعة. وتظل الإعدادات المنتهية ظاهرة في النظام مع إمكانية إعادة إنشائها.
كما ترفض npm الآن رموز النشر الموثوق القادمة من أحداث issue_comment في GitHub Actions، إضافة إلى القيد القائم على pull_request_target، ويدعو سجل التغييرات إلى نقل النشر إلى حدث مسموح مثل push أو release أو workflow_dispatch.
وقال متحدث باسم GitHub لموقع Help Net Security إن الشركة علمت بالبلاغ عبر برنامج مكافآت الثغرات وعملت على التحقق منه وإصلاحه. ولم يوضح بيانها هل شملت الحماية الإعدادات التي ارتبطت بمستودعاتها قبل التغيير، ولا يعرف، بحسب غولان مايرز من Bloom، هل استغلت الثغرة فعلياً.
وتوصي Bloom مشرفي الحزم بمراجعة ارتباطات النشر والتأكد أن كل اسم لا يزال يشير إلى مستودع يملكونه، وحذف الارتباط وإعادة إنشائه بعد أي إعادة تسمية أو نقل، وحذفه قبل حذف المستودع، ومراقبة أحداث النشر غير المتوقعة، ونشر إصدار فور إنشاء ارتباط جديد.






