تأثر TanStack وحزم برمجية أخرى كثيرة - تحليل وتعمق في التفاصيل
원제 · TanStack & MANY more packages affected - a deep dive & analysis
핵심 요약
يعتمد هجوم سلسلة التوريد الحالي على استغلال ثغرة pull request target لتسميم ذاكرة تخزين GitHub Actions وسرقة رموز OIDC لنشر إصدارات خبيثة من حزم شهيرة مثل TanStack.
하이라이트
تأثرت جميع حزم TanStack بإصدارات خبيثة في 11 مايو 2026 وتم احتواء الهجوم خلال 20 دقيقة فقط.
ينتقل الهجوم كدودة برمجية لسرقة رموز NPM وGitHub وبيانات اعتماد AWS من الأجهزة المصابة وسير عمل CI/CD.
تعتمد آلية الاختراق على تسميم ذاكرة التخزين المؤقت (Cache Poisoning) في GitHub Actions لنقل الكود الخبيث من النسخ المنسوخة (Forks) إلى المستودع الأصلي.
يمتد التهديد الحالي ليشمل نظام Python البيئي وحزم Mistral بالإضافة إلى حزم JavaScript المتعددة.
يوفر مدير الحزم Bun ميزة أمان تمنع تثبيت الحزم التي لم يتجاوز عمر إصدارها مدة زمنية محددة يضبطها المستخدم.
يؤدي استخدام النشر الموثوق (Trusted Publishing) في NPM إلى توليد رموز OIDC قصيرة الأمد، لكن الهجوم نجح في استغلالها من داخل بيئة العمل المصابة.
타임라인
نطاق هجوم سلاسل التوريد وتأثيره الفوري
بدأ الهجوم باختراق حزم TanStack الشهيرة مثل Query وRouter وStart قبل أن يمتد إلى حزم أخرى مثل Mistral. تعمل البرمجية الخبيثة على سرقة بيانات الاعتماد والأسرار البرمجية بمجرد تثبيتها على نظام المطور. تم رصد انتشار الهجوم في بيئة Python خلال ساعتين فقط من اكتشافه في بيئة JavaScript.
- يستهدف الهجوم الحالي أنظمة NPM وPython بشكل متزامن لسحب بيانات الاعتماد.
- تعرضت جميع حزم TanStack لنشر إصدارات خبيثة في إطار زمني ضيق جداً يوم 11 مايو.
- تنتشر البرمجية كدودة برمجية تنتقل من حزمة إلى أخرى لجمع بيانات المستخدمين.
تحديد الإصابة ومؤشرات الاختراق
يجب على المطورين الذين قاموا بتحديث أو تثبيت الحزم المتأثرة التحقق من سجلات الشبكة بحثاً عن اتصالات مشبوهة. توجد قائمة كاملة بالحزم المتأثرة وبصمات الملفات المصابة المتاحة للمقارنة اليدوية. التحقق من التوقيت الزمني للتثبيت يعد الخطوة الأولى لتقييم مدى تعرض الجهاز الشخصي أو خوادم البناء للخطر.
- يعتبر أي تثبيت لحزم TanStack في وقت متأخر من يوم 11 مايو بتوقيت UTC علامة مؤكدة على الاختراق.
- يكشف فحص بصمات SHA لملفات الموجه (Router) في ملفات JS عن وجود الكود الخبيث.
- تشير حركة مرور الشبكة الخارجة إلى روابط محددة إلى تسريب البيانات من النظام.
آلية عمل البرمجية الخبيثة وتدفق البيانات المسروقة
لا تكتفي البرمجية بسرقة البيانات بل تستخدم صلاحيات المطور المصاب لتوسيع نطاق الهجوم. إذا تم تشغيل سير عمل بناء آلي (CI/CD) يعتمد على نسخة مصابة من TanStack، فإن البرمجية تسرق رموز النشر الخاصة بالمشروع الحالي لنشر نسخة ملوثة منه. هذا السلوك يفسر سرعة انتشار الهجوم عبر مئات الحزم في وقت قياسي.
- تمسح البرمجية النظام بحثاً عن رموز NPM وGitHub وبيانات AWS المخزنة محلياً.
- يؤدي اختراق سير عمل CI/CD إلى نشر إصدارات خبيثة من الحزم التي يطورها المستخدم المصاب.
- تستخدم الرموز المسروقة لنشر الدودة البرمجية آلياً في مستودعات جديدة.
استراتيجيات الدفاع والوقاية التقنية
يعتمد الأمان المستدام على عزل بيئة التطوير عن نظام التشغيل المضيف لمنع سرقة ملفات التعريف الشخصية. ينصح باستخدام تقنيات تسجيل الدخول الموحد (SSO) لـ AWS بدلاً من مفاتيح الوصول الدائمة المخزنة على القرص. تفعيل ميزة حظر سكريبتات ما بعد التثبيت (Post-install scripts) في مديرات الحزم مثل Bun يعطل المحرك الأساسي الذي تعتمد عليه هذه البرمجيات للتنفيذ.
- يقلل استخدام حاويات التطوير (Dev Containers) أو الأجهزة الافتراضية من خطر وصول البرمجيات الخبيثة للنظام الأساسي.
- يمنع تخزين الأسرار في ملفات .env المحلية واستبدالها بخدمات سحابية مثل Doppler أو InPhysical.
- يوفر ضبط الحد الأدنى لعمر الإصدار في مدير الحزم حماية ضد الحزم الخبيثة حديثة النشر.
التحليل التقني لثغرة GitHub Actions وذاكرة التخزين المؤقت
استغل المهاجمون حقيقة أن GitHub Actions يشارك ذاكرة التخزين المؤقت بين طلبات السحب والمستودع الرئيسي عند استخدام أهداف معينة. قام المهاجم بوضع كود خبيث في الذاكرة المؤقتة، وانتظر حتى يقوم مطور رسمي بدفع كود جديد ليتم سحب الذاكرة المسمومة واستخدامها في عملية بناء رسمية. اكتُشف الهجوم لأن نسخة الحزمة نُشرت بنجاح رغم فشل عملية البناء في GitHub، مما أثار ريبة المطورين.
- يسمح محفز pull request target بتشغيل كود من نسخة منسوخة (Fork) في سياق المستودع الأساسي.
- تتم عملية تسميم الذاكرة المؤقتة عبر مشاركة ملفات التتبع (Hash files) بين عمليات التنفيذ المختلفة.
- فشل الهجوم جزئياً بسبب خطأ برمجي في كود المهاجم أدى لعدم تطابق سجلات النشر مع حالة بناء المشروع.
설명
New week, new HUGE supply chain attack. Likely still ongoing, MANY packages are affected. I take a look at what's happening and do a deep dive analysis. TanStack Post Mortem: https://tanstack.com/blog/npm-supply-chain-compromise-postmortem Socket.dev Analysis (incl recommended actions): https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack Mistral affected: https://x.com/AikidoSecurity/status/2053974705795989906 MORE packages affected: https://x.com/AikidoSecurity/status/2053990513280475405 Spread to Python: https://x.com/SocketSecurity/status/2054048025081737446 How to protect: https://www.youtube.com/watch?v=Fs6YDVJq5As GitHub Actions course: https://acad.link/gha All my courses: https://academind.com/courses Website: https://maximilian-schwarzmueller.com/ Socials: 👉 Twitch: https://www.twitch.tv/maxedapps 👉 X: https://x.com/maxedapps 👉 Udemy: https://www.udemy.com/user/maximilian-schwarzmuller/ 👉 LinkedIn: https://www.linkedin.com/in/maximilian-schwarzmueller/ Want to become a web developer or expand your web development knowledge? I have multiple bestselling online courses on React, Angular, NodeJS, Docker & much more! 👉 https://academind.com/courses
