# نسخة ملغومة من مكتبة LiteLLM بقيت على PyPI ساعتين وكانت تعمل مع أي عملية Python

> **المغزى:** المغزى: ملف .pth واحد يكفي ليعمل الكود الخبيث مع كل تشغيل لـ Python حتى دون استيراد المكتبة، وإصدار عاش ساعتين فقط ما كان ليصل إلى من يؤجل قبول الإصدارات الجديدة بضعة أيام.

- المصدر: المغزى (https://almaghza.com/a/2026-10-21-litellm-pypi-pth-credential-stealer/)
- التاريخ: 10 جمادى الأولى - 21 أكتوبر 2026 (2026-10-21)
- القسم: أمن سيبراني
- الوسوم: LiteLLM، هجمات سلسلة التوريد، Python، uv، الأمن السيبراني

في 21 أكتوبر 2026 رُفعت النسخة 1.107.0 من مكتبة LiteLLM على PyPI بين الساعة 11:39 و11:40 بتوقيت UTC، وفي داخلها برنامج يسرق المفاتيح. وبحسب تحليل SafeDep، لوحظ اختفاء النسخة الساعة 13:40، أي أنها بقيت متاحة نحو ساعتين، وأكد فريق LiteLLM عزلها الساعة 13:50.

وLiteLLM مكتبة يستخدمها كثيرون بوابةً بين التطبيق وموديلات الذكاء الاصطناعي، وتُنزَّل أكثر من 3 ملايين مرة يوميًا بحسب pypistats.

كانت الحيلة في ملف صغير اسمه `cook.pth`. فـ Python يقرأ ملفات `.pth` في مجلد الحزم مع كل تشغيل، وينفّذ أي سطر فيها يبدأ بكلمة `import`. والنتيجة أن البرنامج الخبيث يعمل مع أي عملية Python على الجهاز، حتى لو لم يستورد الكود مكتبة litellm أبدًا. وكان يجمع مفاتيح SSH وبيانات الدخول إلى السحابة وأسرار الـ CI ومفاتيح مزوّدي الموديلات.

وبحسب تحديث فريق LiteLLM، نُشر الإصدار من حسابات 3 مهندسين، ويبدو أن ذلك تم عبر OAuth tokens مسروقة لأداة GitHub CLI. ويقول الفريق إنه لم يحدد بعد طريقة الاختراق الأصلية. وفي اليوم نفسه أطلقت GitHub خيارًا في GitHub CLI، من النسخة 2.103.0، يجعل الـ token ينتهي ويتجدد تلقائيًا بدل أن يبقى صالحًا بلا حد.

وتكشف الحادثة قيمة فترة الانتظار قبل قبول أي إصدار جديد. فأداة uv تقبل إعداد `exclude-newer` بقيمة مثل `7 days`، وpip يقبل `--uploaded-prior-to` بقيمة مثل `P3D`. ومع هذا الإعداد لا يدخل الإصدار الجديد إلا بعد أن يمر عليه بضعة أيام يكون المجتمع قد فحصه خلالها، وإصدار عاش ساعتين لن يصل إلى المشروع أصلًا.

ومن ثبّت النسخة 1.107.0 في أي وقت، فوجود `cook.pth` داخل site-packages هو العلامة، وتصبح الأسرار التي كانت على الجهاز بحاجة إلى تغيير.

## المصادر

- [تحليل SafeDep الكامل](https://safedep.io/litellm-pypi-compromise-credential-stealer-backdoor/)
- [البلاغ وتحديثات فريق LiteLLM على GitHub](https://github.com/BerriAI/litellm/issues/47826)
- [إعلان GitHub عن tokens تنتهي تلقائيًا في GitHub CLI](https://github.blog/changelog/2026-10-21-github-cli-opt-in-to-expiring-auto-refreshing-oauth-tokens)
- [إعداد exclude-newer في توثيق uv](https://docs.astral.sh/uv/reference/settings/#exclude-newer)
- [خيار uploaded-prior-to في توثيق pip](https://pip.pypa.io/en/stable/cli/pip_install/)
- [توثيق Python لملفات .pth](https://docs.python.org/3/library/site.html)
