FauxUV: حزم PyPI وهمية للأشعة فوق البنفسجية، افتح Jupyter على الويب

FauxUV: أدوات مساعدة وهمية لـ PyPI uv تفتح خادم Jupyter غير مصادق عليه على الإنترنت

TL؛ DR

استعارت مجموعة من حزم PyPI اسم uv، مدير حزم بايثون السريع والشائع للغاية والمبني على لغة Rust، يُستخدم كأداة مساعدة في uv. لا يحتوي على أي وظائف حقيقية تقريبًا. ما يحمله بدلاً من ذلك هو حمولة Windows تقوم بتشغيل خادم JupyterLab مع إيقاف تشغيل المصادقة وفي الإصدارات اللاحقة، يتم نشره على الإنترنت العام من خلال نفق عكسي.

هذه هي القصة كاملة في سطر واحد: اسم أداة موثوقة كطعم، وJupyterLab كمحرك لتنفيذ التعليمات البرمجية عن بعد. يقوم خادم Jupyter بتشغيل أي كود تكتبه في ملف.ebook الخلية؛ التي يتم تشغيلها برمز فارغ وربطها بكل واجهة شبكة هي مترجم مفتوح يمكن لأي شخص الوصول إلى المنفذ تشغيله.

نتتبع المجموعة كـ سيارة رياضية متعددة الاستخداماتالحزمتان اللتان تم فحصهما هما moon-uv (0.0.1-0.0.16) و my-magic-uv-helper (0.0.1)، تم نشره بواسطة نفس المشغل وكان متاحًا على PyPI وقت التحليل.

النظام الإيكولوجيPyPI
الباقاتmoon-uv (0.0.1-0.0.16)، my-magic-uv-helper (0.0.1)
المنصة المستهدفةويندوز
السلوك الأساسيخادم JupyterLab غير مصادق عليه، تم نشره على الإنترنت عبر نفق عكسي
إساءة استخدام الأدوات المشروعةuv، JupyterLab، cloudflared، Pinggy

الإغراء: اسم تثق به بالفعل

uv تُعدّ هذه الأداة من أكثر أدوات بايثون تثبيتًا خلال العامين الماضيين، لذا فهي "أداة مساعدة لـ uv"FauxUV" هي حزمة يقوم المطور بتثبيتها دون تردد. وتعتمد مصداقيتها بالكامل على هذا الاسم. تغلف هذه الحزم... حقيقي uv برنامج تثبيت من شركة أسترال - تشير عناوين URL في الحمولة إلى مضيفين حقيقيين وذوي سمعة طيبة - لذا فإن نظرة سريعة لا تُظهر سوى مراجع موثوقة. لا تضيف أي من الحزم فعليًا uv الوظيفة؛ الاسم هو التمويه الكامل.

JupyterLab كمحرك RCE

العنصر الأساسي في الحمولة هو برنامج تشغيل يقوم بتشغيل JupyterLab مع إزالة جميع الضوابط:

jupyter server --with jupyterlab   --ip=0.0.0.0            # listen on every interface   --ServerApp.token=""    # no password, no token   --allow_origin='*'      # accept cross-origin connections   --disable_check_xsrf    # allow a remote browser/WebSocket to drive it

كل علم يزيل حماية، والنص المرفق يشرحها (باللغة الصينية الأصلية): الرمز الفارغ "يوقف عمليات التحقق من كلمة المرور والرمز المميز - يمكن لأي شخص الاتصال." جوبيتر لاب هو بيئة تطوير متكاملة شرعية لعلوم البيانات، ولكنه ليسebook تقوم الخلية بتنفيذ أي كود برمجي حسب التصميم. تم تكوينها بهذه الطريقة وربطها بـ 0.0.0.0، يتوقف عن كونه بيئة تطوير متكاملة ويصبح غلافًا عن بعد غير مصادق عليه على المضيف - لا حاجة إلى ملف ثنائي مخصص للبرامج الضارة، مجرد أداة شائعة موجهة في الاتجاه الخاطئ.

هناك عنصران داعمان يجعلان ذلك قابلاً للتحقيق والتكرار:

  • مُشغِّل تثبيت صامت. كانت الإصدارات المبكرة تعمل بنظام PowerShell مع -تجاوز سياسة التنفيذ مباشرة من setup.py on تثبيت نقطة، في الخلفية مع إخفاء الأخطاء لذلك بذرة يبدو طبيعياً. تقوم الإصدارات اللاحقة بنقل نفس العنصر الأساسي إلى pip-uv أداة سطر الأوامر — وإلغاء التشغيل التلقائي أثناء التثبيت بالكامل.
  • نفق عام معكوس. خادم على 0.0.0.0 لا يزال الوصول إليه متاحًا فقط من خلال المضيفين القادرين على توجيه الطلبات إلى الجهاز. تقوم وحدة نمطية مجمعة بفتح [Pingy](https://pinggy.io/نفق SSH عكسي يُعيد توجيه منفذ Jupyter المحلي إلى عنوان عام، مما يُزيل هذا القيد. يتضمن البرنامج النصي المرفق أيضًا - معلّقًا - مسارًا بديلًا باستخدام Cloudflare com.cloudflared و NETSH توجيه المنفذ إلى عنوان IP الخاص بـ Linode، وتوثيق نفس الهدف من خلال بنية تحتية مختلفة.

باختصار: قم بتثبيت الحزمة، وسيقوم مضيف Windows بتشغيل JupyterLab بدون كلمة مرور ونشره على الإنترنت المفتوح.

كيف تطورت تقنية الأشعة فوق البنفسجية الوهمية

تم شحن إصدارات FauxUV بسرعة متتالية، وانتقلت نقطة تشغيل الحمولة عبرها - وهو تذكير بأن إصدارًا واحدًا تم وضع علامة عليه نادرًا ما يروي القصة الكاملة لخط الحزمة.

المرحلة إصدارات تحفيز عملية ما يضيفه
خطاف التثبيت moon-uv 0.0.1-0.0.3، my-magic-uv-helper 0.0.1 setup.py تثبيت pip تثبيت UV + إضافة PATH في البداية
وقت تشغيل واجهة سطر الأوامر moon-uv 0.0.5-0.0.13 pip-uv أمر مشغل JupyterLab بدون كلمة مرور
نفق moon-uv 0.0.14-0.0.16 pip-uv أمر نفق بينجي العكسي النشط

والجدير بالذكر أن التشغيل التلقائي أثناء التثبيت كان إزالة في الإصدارات اللاحقة الأكثر قدرة - لذا فإن الماسح الضوئي يعتمد فقط على دورة الحياة hooks سيتم تقييم الإصدارات الأحدث على النحو التالي: أقل مخاطرة، عكس ذلك تماماً.

مؤشرات الحل الوسط

تم التأكد من ذلك بقراءة مصدر الحزمة؛ تم تحديد نقاط النهاية علق موجودة في الملفات ولكن لا يتم تنفيذها بواسطة النسخة التي تم تحليلها. تم تعطيل مؤشرات الشبكة.

النوع مؤشر
أمر التثبيت powershell -ExecutionPolicy Bypass جلب فني تركيب الأشعة فوق البنفسجية الأصلي، في وقت تركيب نظام الحماية من الأشعة فوق البنفسجية
علامات JupyterLab --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
نفق عكسي (نشط) free[.]pinggy[.]io:443 إعادة توجيه محلي 127.0.0.1:8888
مضيف النفق (معلق) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
عنوان IP (معلق) 45[.]79[.]134[.]161 (لينود) عبر netsh port-proxy
إصرار يضيف مقدمات %USERPROFILE%\.local\bin إلى مسار المستخدم

إشارات سلوكية تستحق التنبيه إليها، بغض النظر عن هذه السلاسل النصية تحديدًا: أ تثبيت نقطة الذي يتكاثر تجاوز سياسة التنفيذ في PowerShell؛ أي jupyter إطلاق عملية دمج الرمز المميز = "" مع –ip=0.0.0.0؛ و SSH الصادر إلى *.pinggy.io من جهاز تطوير أو جهاز تكامل مستمر.

السلوك المرصود والأصل

تشترك الحزمتان في مؤلف واحد ومنهجية واحدة: اسم أداة موثوقة، وتقييد الوصول إليها على نظام ويندوز فقط، وتنفيذها في الخلفية مع كبت الأخطاء، والاعتماد على أدوات ذات سمعة طيبة، بحيث لا يظهر عند إلقاء نظرة سريعة إلا عناوين URL موثوقة. يحتوي المصدر على تعليقات باللغة الصينية تصف بوضوح العلامات المتعلقة بالأمان؛ ونحن نوردها كبيانات قابلة للملاحظة في الملف، وليس كادعاء حول الدافع. السماح بالأصل القيمة و colab.bat يعكس اسم الملف سير العمل غير الرسمي "مشاركة وقت التشغيل المحلي" المتداول في Google Colab. ومهما كان المصدر، فإن النتيجة النهائية هي نفسها.

التأثير والإرشادات للمدافعين

من يتعرض للأشعة فوق البنفسجية الزائفة؟ مطورو نظام ويندوز ومشغلو التكامل المستمر الذين تثبيت نقطة إحدى هذه الحزم. بيئة JupyterLab بدون كلمة مرور على 0.0.0.0 يُتيح هذا النظام تنفيذ التعليمات البرمجية عن بُعد لأي شخص يمكنه الوصول إلى المنفذ؛ بينما يُزيل النفق قيود "من يمكنه الوصول إليه". يعمل الخادم بصلاحيات المستخدم المُثبِّت، ويرث ملفاته ورموزه المميزة وبيانات اعتماده السحابية.

لماذا يسهل تفويته. تشير جميع سلاسل الشبكة إلى مضيف موثوق به - Astral، JupyterLab، com.cloudflaredبينجي، كولاب. لا يوجد ملف برمجي خبيث لتشفيره ولا كتلة مشفرة لفك تشفيرها. يقلل كل من الفحص القائم على السمعة والتوقيع من أهمية هذا الأمر، ولهذا السبب يُطرح السؤال السلوكي. ما الذي يفعله تثبيت هذه الحزمة بالجهاز؟ هو من يمسك بها.

التوجيه:

  • عالج أي وقت تثبيت تجاوز سياسة التنفيذ في PowerShell كإشارة لكسر البنية، بغض النظر عن عنوان URL الذي يتم جلبه.
  • التنبيه jupyter تم إطلاقها برمز فارغ و –ip=0.0.0.0لا ينبغي أن يظهر هذا المزيج أبدًا على محطة عمل أو جهاز تشغيل.
  • مراقبة اتصالات SSH الصادرة إلى مزودي خدمات الأنفاق (*.pinggy.io, *.trycloudflare.com) من بيئات المطورين وبيئات التكامل المستمر.
  • تثبيت uv من [مصدرها الرسمي](https://docs.astral.sh/uv/) وكن متشككًا في حزم "المساعدة" التابعة لجهات خارجية والتي تغلف أداة يسهل تثبيتها بالفعل.
  • قم بتثبيت وإعادة مراجعة التبعيات عند الترقية - يمكن أن ينمو خط الحزمة بإمكانيات جديدة إصدارًا بعد إصدار.
أدوات تحليل التركيبات البرمجية sca
إعطاء الأولوية للمخاطر التي تتعرض لها برامجك، ومعالجتها، وتأمينها
احصل على حسابك المجاني.
أي بطاقة ائتمان.

قم بتأمين تطوير البرامج الخاصة بك وتسليمها

مع مجموعة منتجات Xygeni