Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-39866 — إثبات مفهوم مخبري يوضح حقن الأوامر في إرسال سير عمل GitHub Actions (CVE-2026-39866). يشغّل الإصدارات الضعيفة والمصححة جنبًا إلى جنب للتحليل التعليمي. | Kitploit
أدوات/GitHubGitHub/abhayclasher/cve-2026-39866
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالقيادة والسيطرةالتعلم والتعليممختبرات وتدريب عملي
GitHubabhayclasher/cve-2026-39866

CVE-2026-39866

إثبات مفهوم مخبري يوضح حقن الأوامر في إرسال سير عمل GitHub Actions (CVE-2026-39866). يشغّل الإصدارات الضعيفة والمصححة جنبًا إلى جنب للتحليل التعليمي.

عرض المستودع
منذ 4 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-39866 — حقن أوامر عبر إدخال workflow dispatch غير مُقتبس

CVE GHSA CWE-78 Patched

مختبر إثبات مفهوم لحقن الأوامر في GitHub Actions workflow dispatch


الغرض

CVE-2026-39866 هو ثغرة حقن أوامر في سير عمل إصدارات Lawnchair على GitHub Actions. يمرر ملف release_update.yml إدخال المستخدم مباشرة إلى bash دون اقتباس، لذا يمكن للمهاجم حقن أوامر. يستضيف هذا المستودع النسختين الضعيفة والمصححة جنبًا إلى جنب.

حقائق سريعة

الحقلالقيمة
CVE IDCVE-2026-39866
GHSAGHSA-9prc-pp2c-3427
CWECWE-78 (تحييد غير صحيح للعناصر الخاصة المستخدمة في أمر نظام التشغيل)
المنتجLawnchairLauncher/lawnchair
المتأثرجميع الإصدارات الأقل من fcba413
المُصححfcba413
الاكتشافAbhay Kumar (@abhayclasher)

تفاصيل الثغرة

توجد الثغرة في ملف سير العمل release_update.yml. يأخذ الإجراء معامل artifactName ويمرره مباشرة إلى أمر bash دون اقتباس.

root@kitploit:~
- name: Rename artifact
  run: mv ${{ inputs.artifactName }}.zip lawnchair.zip

يستبدل GitHub Actions قيمة المتغير في السلسلة قبل أن تشغلها الصدفة. بدون علامات اقتباس حول ${{ inputs.artifactName }}، تفسر الصدفة المسافات والفواصل المنقوطة كفواصل أوامر.

إذا قدم المهاجم file.zip; touch pwned.txt # كـ artifactName:

كيف يوزعها GitHub Actions: ${{ inputs.artifactName }} → file.zip; touch pwned.txt #

كيف تنفذها الصدفة:

root@kitploit:~
mv file.zip; touch pwned.txt #.zip lawnchair.zip

تنفذ الصدفة mv file.zip، ثم touch pwned.txt، ثم تتجاهل الباقي كتعليق.

التأثير

  • تنفيذ أوامر عشوائية على مشغل GitHub Actions.
  • سرقة أسرار المستودع المكشوفة لبيئة المشغل (مثل GITHUB_TOKEN أو مفاتيح توقيع الإصدارات).
  • تعديل أصول الإصدار قبل رفعها.
  • الانتقال إلى البنية التحتية المتصلة إذا كان المشغل مستضافًا ذاتيًا.

متطلبات النظام

  • Node.js 18 أو أحدث
  • Docker (اختياري، للمختبر المعبأ في حاويات)
  • 500 ميجابايت من مساحة القرص الحرة

الإعداد

الخيار 1: التشغيل المباشر

root@kitploit:~
git clone https://github.com/abhayclasher/CVE-2026-39866.git
cd CVE-2026-39866/app
npm install
node server.js

الخيار 2: التشغيل مع Docker

root@kitploit:~
git clone https://github.com/abhayclasher/CVE-2026-39866.git
cd CVE-2026-39866
docker compose up -d

الاستخدام

بعد بدء الخادم، قم بزيارة هذه العناوين:

URLالوصف
http://localhost:3000/workflow/vulnerableسير العمل الضعيف — حقن الأوامر يُنفذ عند الإرسال
http://localhost:3001/workflow/patchedنفس سير العمل مع تطبيق تصحيح fcba413

ستنفذ النسخة الضعيفة أمرك المحقون على المشغل. تعامل النسخة المصححة الإدخال كسلسلة حرفية.

يمكنك أيضًا تشغيل PoC المستقل:

root@kitploit:~
cd poc
node exploit.js

يُشغل هذا خادمًا بسيطًا على المنفذ 3000 يوضح نفس الثغرة دون سياق التطبيق الكامل.

كيف يعمل

تدفق الاكتشاف

root@kitploit:~
1. يتحكم المهاجم في معامل الإدخال artifactName
2. يوسع GitHub Actions ${{ inputs.artifactName }} في YAML
3. ترسل خطوة التشغيل هذا إلى bash
4. ترى bash أحرفًا خاصة غير مقتبسة وتتعامل معها كصيغة أوامر
5. تُنفذ الأوامر بصلاحيات بيئة المشغل

سلسلة الهجوم

root@kitploit:~
┌────────────────────────────────────────────────────┐
│  1. إدخال خبيث:                                     │
│                                                     │
│     artifactName = "file.zip; id #"                │
│                                                     │
│  2. يستبدل GitHub Actions في YAML:                 │
│                                                     │
│     run: mv file.zip; id #.zip lawnchair.zip       │
│                                                     │
│  3. ترى bash:                                       │
│     - mv file.zip                                   │
│     - id                    <-- أمر عشوائي          │
│     - #.zip lawnchair.zip (مُتجاهل)                │
│                                                     │
│  4. تنفذ الصدفة الأمر العشوائي                     │
└────────────────────────────────────────────────────┘

الإصلاح

يقدم الإصدار fcba413 اقتباسًا حول المتغير المُدرج:

root@kitploit:~
- name: Rename artifact
  run: mv "${{ inputs.artifactName }}.zip" lawnchair.zip

تمنع علامات الاقتباس الصدفة من تحليل الأحرف الخاصة. يبقى الحمولة معاملة كسلسلة اسم ملف حرفية.

أفضل ممارسة هي استخدام متغيرات البيئة لعزل إدخال المستخدم تمامًا:

root@kitploit:~
- name: Rename artifact
  env:
    ARTIFACT_NAME: ${{ inputs.artifactName }}
  run: mv "$ARTIFACT_NAME.zip" lawnchair.zip

عرض الالتزام الكامل: fcba413

هيكل المشروع

root@kitploit:~
CVE-2026-39866/
├── README.md               # هذا الملف
├── docker-compose.yml      # إعداد مختبر Docker
├── app/
│   ├── Dockerfile          # إعداد بناء الحاوية
│   ├── package.json        # تبعيات Node.js
│   └── server.js           # محاكاة مشغل سير العمل الضعيف + المصحح
└── poc/
    └── exploit.js          # إثبات مفهوم مستقل مبسط

المراجع

  • NVD — CVE-2026-39866
  • GitHub Security Advisory
  • Patch Commit
  • CWE-78

أُبلغ بواسطة Abhay Kumar. هذا المستودع مخصص للاستخدام التعليمي المحلي فقط. لا تنشر الخادم الضعيف على شبكة عامة.

لأغراض تعليمية فقط — استخدم في بيئات معزولة

تنزيل الأداة