
مختبر أبحاث أمنية: إعادة إنتاج مُتحكَّم فيها لثغرة GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (حقن أوامر shell عبر مدخلات workflow_dispatch في GitHub Actions) ضد لقطة مثبّتة من NationalSecurityAgency/emissary
أداة بحث آلية — ليست المشروع الأصلي.
هذا المستودع عبارة عن مختبر قابل للتصرف تم بناؤه بواسطة بيئة آلية لأطروحة ماجستير في جامعة لافال حول إعادة إنتاج ثغرات سير عمل GitHub Actions المنشورة. وهو لقطة حرفية من
NationalSecurityAgency/emissaryعند الالتزام898488b489615581ea66d17954742c8e4ffb0323(2026-01-09)، معاد توزيعه بموجب ترخيص ذلك المشروع نفسه، الذي تم تضمين ملفه دون تغيير في هذه اللقطة.المشروع الأصلي ليس مشاركًا، ولا يتم استهدافه أبدًا، والثغرة المدروسة هنا عامة بالفعل. كل سر ومتغير في هذا المستودع هو قيمة وهمية مولدة عشوائيًا — لا توجد أي بيانات اعتماد حقيقية. مراجع الإجراءات وصور المشغّل مثبتة على ما تم حله إليه في 2026-01-09؛ راجع
pinning.mdفي مخرجات البيئة الآلية لكل تغيير تم إجراؤه على اللقطة.الأسئلة أو الاعتراضات: [email protected]

Emissary هو محرك سير عمل قائم على البيانات ويعمل بتقنية P2P، ويعمل في شبكة غير متجانسة وربما موزعة على نطاق واسع ومتعددة المستويات من موارد الحوسبة بتقنية P2P. مسارات سير العمل ليست مخططة مسبقًا كما في محركات سير العمل التقليدية، بل يتم اكتشافها مع اكتشاف المزيد من المعلومات حول البيانات. لا يوجد عادةً أي تفاعل مع المستخدم في سير عمل Emissary، بل تتم معالجة البيانات بطريقة موجهة نحو الهدف حتى تصل إلى حالة اكتمال.
Emissary قابل للتكوين بدرجة عالية، لكنه في هذا التنفيذ الأساسي لا يفعل شيئًا تقريبًا. يُتوقع من مستخدمي هذا الإطار توفير فئات توسّع emissary.place.ServiceProviderPlace لأداء العمل على حمولات emissary.core.IBaseDataObject.
يمكن القيام بمجموعة متنوعة من الأشياء ويتم إدارة سير العمل على مراحل، مثل STUDY وID وCOORDINATE وTRANSFORM وANALYZE وIO وREVIEW.
الفئات المسؤولة عن توجيه سير العمل هي emissary.core.MobileAgent والفئات المشتقة منها، والتي تدير مسار مجموعة من كائنات الحمولة المرتبطة عبر سير العمل، و emissary.directory.DirectoryPlace التي تدير الخدمات المتاحة وتكلفتها وجودتها وتحافظ على اتصال شبكة P2P.
اقرأ دليل DEVELOPING.md للحصول على معلومات حول تثبيت المكونات المطلوبة، وسحب الكود المصدري، وبناء وتشغيل Emissary.
شغّل mvn clean package لتجميع واختبار وتعبئة Emissary
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.132 s
[INFO] Finished at: 2022-01-10T22:31:05Z
[INFO] ------------------------------------------------------------------------
يوجد سكربت bash واحد في Emissary يشغّل كل شيء. وهو موجود في الدليل العلوي لـ Emissary. يشغّل السكربت فئة emissary.Emissary التي تحتوي على عدة أوامر Picocli متاحة للتعامل مع وظائف مختلفة.
إذا تم تشغيل سكربت emissary بدون أي وسائط، ستحصل على قائمة بجميع الأوامر الفرعية للتكوين ووصفًا موجزًا.
./emissary
تشغيل ./emissary help سيعطيك نفس المخرجات كالتشغيل بدون وسائط. إذا أردت رؤية معلومات
أكثر تفصيلًا حول أمر معين، أضف اسم الأمر بعد help. على سبيل المثال، لرؤية جميع
الوسائط مع الأوصاف لأمر server، شغّل:
./emissary help server
بقية الأوامر جميعها تحتوي على وسائط (-b أو --projectBase) يمكن تعيينها، لكن يجب أن تطابق PROJECT_BASE.
دليل التكوين افتراضيًا هو /config ولكن يمكن أيضًا تمريره باستخدام (-c أو --config). عند التشغيل من نسخة git، يجب استخدام target كـ projectBase. لا تتردد في تعديل ملفات التكوين في target/config قبل البدء.
تتم معالجة السجلات بواسطة logback. يمكنك الإشارة إلى ملف مخصص باستخدام وسيط --logbackConfig.
راجع help -c لكل أمر للحصول على مزيد من المعلومات.
سيبدأ هذا الأمر خادم Emissary ويهيئ جميع الأماكن، ومكان الالتقاط، ومرشحات التسليم التي تم تكوينها. سيبدأ في الوضع المستقل إذا لم يتم تحديد -m أو --mode. افتراضيًا، يتم حساب عدد MobileAgents بناءً على مواصفات الجهاز. على أجهزة الكمبيوتر الحديثة، يمكن أن يكون هذا الرقم مرتفعًا. يمكنك التحكم في عدد الوكلاء باستخدام -a أو --agents. إليك مثال على التشغيل.
./emissary server -a 2
بدون مزيد من التكوين، سيبدأ على http://localhost:8001. إذا تصفحت إلى هذا العنوان، ستحتاج إلى إدخال اسم المستخدم وكلمة المرور المحددين في target/config/jetty-users.properties، وهما emissary وemissary123.
تم تكوين PickUpPlace الافتراضي لقراءة الملفات من target/data/InputData. إذا نسخت ملفات إلى هذا الدليل، سترى Emissary يعالجها. ضع في اعتبارك أنه تم تكوين toUpper وtoLower فقط، لذلك لن يكون الناتج مثيرًا للاهتمام.
إيقاف الخدمة عن استلام العمل
./emissary server --pause
السماح لخدمة موقوفة مؤقتًا باستلام العمل
./emissary server --unpause
إبطال الخدمات القابلة للتحديث. هذا تحديث "خفيف" وهو نهج بدون توقف يبطل ServiceProviderRefreshablePlace. عندما يتم سحب المكان من DirectoryPlace، يتم إعادة إنشاء المكان باستخدام نفس المفاتيح لـ DirectoryPlace وNamespace، ولكن يتم إعادة تحميل المُهيئ ويكون المكان قادرًا على إعادة تحميل مجموعة فرعية من تكويناته.
./emissary server --invalidate