
CVE‑2026‑82329 – مجموعة أدوات تجاوز المصادقة في JFrog Artifactory

للاستخدام الأخلاقي فقط – اختبار أمني مصرح به
يوفر هذا المستودع أدوات لمتخصصي الأمن المصرح لهم، والفرق الزرقاء، ومختبري الاختراق فقط.
الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني بموجب CFAA (الولايات المتحدة)، وقانون إساءة استخدام الحاسوب (المملكة المتحدة)، وTCK 243/244 (تركيا)، وقوانين مماثلة في جميع أنحاء العالم.
نظرة عامة على الثغرة
CVE‑2026‑82329 هي ثغرة تجاوز مصادقة حرجة في JFrog Artifactory المستضاف ذاتيًا (الإصدارات 7.111.x حتى 7.161.x) تسمح لمهاجم غير مصادق عليه بالحصول على رمز مسؤول كامل للمنصة عبر استغلال آلية الانضمام إلى عنقود JFrog Access.
كيف تعمل
- الثقة بمفتاح انضمام فارغ – يثق JFrog Access بمفتاح انضمام وهمي قيمته سلسلة فارغة. وبالتالي فإن سر التوقيع الخاص به هو القيمة الحتمية
32 * 0x20 (مسافات).
- JWT انضمام مزور – يزور المهاجم JWT من نوع HS256 موقّعًا بهذا السر المعروف و
kid = SHA256("").
- إصدار رمز SERVICE – يُرجع
POST /access/api/v1/registry/join رمز SERVICE مع scp=admin دون أي مصادقة.
- تبادل رمز المسؤول –
POST /access/api/v1/tokens مع scope=applied-permissions/admin&audience=* يمنح رمز مسؤول كامل للمنصة.
- التأثير – استيلاء كامل على المستودع، وسرقة الرموز، وإنشاء مستخدمين مسؤولين، وتسميم الحزم، وهجمات سلسلة التوريد، والتحرك الجانبي إلى الخدمات المتصلة (Xray، Mission Control، Distribution). قم بالترقية فورًا!
الإصدارات المتأثرة
- 7.111.4 – 7.111.20 – معرّضة للثغرة
- 7.117.0 – 7.117.27 – معرّضة للثغرة
- 7.125.0 – 7.125.19 – معرّضة للثغرة
- 7.133.0 – 7.133.28 – معرّضة للثغرة
- 7.146.0 – 7.146.36 – معرّضة للثغرة
- 7.161.0 – 7.161.19 – معرّضة للثغرة
التصحيح
- قم بالترقية إلى 7.111.21، أو 7.117.28، أو 7.125.20، أو 7.133.29، أو 7.146.38، أو 7.161.20 أو أحدث.
- إذا لم يكن الترقية ممكنة، قم بتقييد الوصول الشبكي إلى Artifactory (لا تعرضه أبدًا للإنترنت) وقم بتدوير جميع رموز المسؤول كحل مؤقت.
[>] الأدوات
| الأداة | الغرض | المستخدم المستهدف |
|---|
exploit.py | مجموعة أدوات مسلحة كاملة مع تزوير JWT، وتبادل رمز المسؤول، وإنشاء مستخدم مسؤول، والمسح الجماعي، ووضع التخفي، وتدوير البروكسي، وقائمة تفاعلية، وسلسلة هجوم كاملة. | الفرق الحمراء / مختبري الاختراق المصرح لهم |
safechecker.py | فاحص ثغرات غير تدخلي يكتشف إصدار Artifactory، ويتحقق من التعرض، ويقيّم المخاطر دون الحصول على أي رمز أو تنفيذ أي حمولة. يُنشئ تقارير JSON. | الفرق الزرقاء / مدققو الأمن |
<> مقارنة الميزات
| الميزة | exploit.py | safechecker.py |
|---|
| اكتشاف الثغرة | [+] | [+] |
| اكتشاف الإصدار | [+] | [+] |
| JWT انضمام مزور | [+] | [-] |
| إصدار رمز الخدمة | [+] | [-] |
| تبادل رمز المسؤول | [+] | [-] |
| إنشاء مستخدم مسؤول | [+] | [-] |
| سرد المستودعات | [+] | [-] |
| سرد المستخدمين | [+] | [-] |
| تفريغ الإعدادات | [+] | [-] |
| تفريغ الرموز | [+] | [-] |
| سلسلة هجوم كاملة | [+] | [-] |
| قائمة تفاعلية | [+] | [-] |
| المسح الجماعي (متعدد الخيوط) | [+] | [+] |
| دعم البروكسي | [+] | [+] |
| تدوير البروكسي | [+] | [-] |
| دعم Tor (إخفاء الهوية) | [+] | [-] |
| تدوير User‑Agent (OPSEC) | [+] | [-] |
| Jitter (OPSEC) | [+] | [-] |
| محدد معدل تكيفي | [+] | [-] |
| وضع غير تدخلي (آمن) | [-] | [+] |
| تقرير الإصدار | [+] | [+] |
| فحص الوصول المجهول | [-] | [+] |
| تقرير JSON | [+] | [+] |
| تنظيف السجلات (مضاد للتحقيق الجنائي) | [+] | [-] |
| User‑Agent مخصص | [+] | [+] |
| التحكم في التحقق من SSL | [+] | [+] |
ملخص حالات الاستخدام
| السيناريو | الأداة الموصى بها |
|---|
| الفريق الأزرق – التحقق مما إذا كان Artifactory الخاص بك معرّضًا للثغرة | safechecker.py |
| التدقيق الأمني – تقييم ثغرات غير تدخلي | safechecker.py |
| الفريق الأحمر – اختبار اختراق مصرح به مع استغلال كامل | exploit.py |
| مكافآت الثغرات – اختبار الإفصاح المسؤول | safechecker.py |
| المسح الجماعي – فحص أهداف متعددة بحثًا عن الثغرة | exploit.py (كشف فقط) |
| الاستجابة للحوادث – التحقق مما إذا كانت الأنظمة مخترقة | safechecker.py |
التثبيت
git clone https://github.com/tc4dy/CVE-2026-82329-PoC-Exploit
cd CVE-2026-82329-PoC-Exploit
pip install -r requirements.txt
requirements.txt
requests
urllib3
curl_cffi
[P] المعاملات
معاملات exploit.py
| المعامل | الوصف |
|---|
-u, --url | عنوان URL لهدف Artifactory واحد (مثال: http://artifactory.example.com:8082) |
-f, --file | ملف يحتوي على قائمة الأهداف (واحد في كل سطر) للمسح الجماعي |
--create-admin | إنشاء مستخدم مسؤول دائم (التنسيق: USER:PASS) |
--keep-admin | الإبقاء على مستخدم المسؤول المُنشأ (عدم التنظيف بعد المسح) |
--token-only | طباعة رمز المسؤول فقط (هدف واحد) |
--interactive | قائمة تفاعلية بعد الاستغلال |
--service-id | معرّف الخدمة لـ JWT الانضمام (افتراضي: jfrt@01) |
-t, --threads | عدد الخيوط للأهداف المتعددة (افتراضي: 10) |
--timeout | مهلة الطلب (افتراضي: 25 ثانية) |
--retry | الحد الأقصى لإعادة المحاولات (افتراضي: 3) |
--proxy | بروكسي HTTP/HTTPS (مثال: http://127.0.0.1:8080) |
--proxy-list | ملف يحتوي على بروكسيات للتدوير (واحد في كل سطر) |
--jitter | تأخير عشوائي (0‑2 ثانية) بين الطلبات |
--stealth | تمكين وضع التخفي (تدوير UA + X‑Forwarded‑For) |
--curl-cffi | استخدام curl_cffi لانتحال بصمة TLS |
--full | هجوم كامل: جميع الوحدات |
--dump-config | تفريغ إعدادات النظام |
--dump-tokens | تفريغ جميع رموز الوصول |
--list-repos | سرد المستودعات |
--list-users | سرد المستخدمين |
--detect | الكشف فقط (بدون تبادل رمز المسؤول) |
--exploit | تنفيذ الاستغلال الكامل |
-o, --output | حفظ تقرير JSON في ملف |
-v, --verbose | إخراج مطوّل |
-q, --quiet | وضع صامت |
معاملات safechecker.py
| المعامل | الوصف |
|---|
-u, --url | عنوان URL لهدف Artifactory واحد (مثال: http://artifactory.example.com:8082) |
-f, --file | ملف يحتوي على قائمة الأهداف (واحد في كل سطر) |
-t, --threads | عدد الخيوط للأهداف المتعددة (افتراضي: 5) |
--timeout | مهلة الطلب (افتراضي: 10 ثوانٍ) |
-v, --verbose | إخراج مطوّل |
-o, --output | حفظ تقرير JSON في ملف |
السيناريوهات