
نص تحقق لـ CVE-2025-62506، وهي ثغرة تصعيد صلاحيات في حسابات خدمة MinIO، تختبر ما إذا كانت الحسابات المقيدة قادرة على تجاوز السياسات المضمنة لإنشاء حسابات غير مقيدة.
يحتوي هذا المستودع على سكربت تحقق من ثغرة CVE-2025-62506، وهي ثغرة تصعيد صلاحيات في حسابات خدمة MinIO وحسابات STS (خدمة رمز الأمان).
CVE-2025-62506 هي ثغرة تصعيد صلاحيات تسمح لحسابات الخدمة المقيدة وحسابات STS بتجاوز قيود سياساتها المضمنة عند تنفيذ عمليات "الحساب الخاص"، وتحديداً عند إنشاء حسابات خدمة جديدة لنفس المستخدم.
توجد الثغرة في منطق التحقق من صحة سياسات IAM في cmd/iam.go. عند التحقق من صحة سياسات الجلسة للحسابات المقيدة التي تنفذ عمليات على حسابها الخاص (مثل إنشاء حسابات خدمة)، يعتمد الكود بشكل غير صحيح على وسيط DenyOnly.
يُستخدم علم DenyOnly للسماح للحسابات بتنفيذ إجراءات متعلقة بحسابها الخاص من خلال التحقق فقط مما إذا كان الإجراء مرفوضاً صراحةً. ومع ذلك، عند وجود سياسة جلسة (سياسة فرعية)، يجب على النظام التحقق من أن الإجراء مسموح به فعلياً بواسطة سياسة الجلسة، وليس فقط أنه غير مرفوض.
8.1 (عالية) - CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
جميع الإصدارات قبل RELEASE.2025-10-15T17-29-55Z
RELEASE.2025-10-15T17-29-55Z
يختبر سكربت verify_cve_2025_62506.py ما إذا كان تثبيت MinIO لديك عرضة لثغرة CVE-2025-62506.
docker-compose.yml المرفق)miniodocker-compose up -d
pip install minio
يتبع سكربت التحقق الخطوات التالية:
bucket1 و bucket2 و bucket3bucket1 و bucket2s3:* (جميع عمليات S3)bucket1/* و bucket2/*bucket3)restrictedrestricted123bucket1 و bucket2 فقطbucket3)docker-compose up -d
python verify_cve_2025_62506.py
🚀 سكربت التحقق من ثغرة CVE-2025-62506
============================================================
📋 وصف السكربت:
يختبر هذا السكربت ثغرة تصعيد صلاحيات حساب خدمة MinIO (CVE-2025-62506)
تسمح الثغرة لحسابات الخدمة المقيدة بتجاوز السياسات المضمنة عند إنشاء حسابات جديدة
============================================================
📦 الخطوة 1: إنشاء دلائل اختبار
إنشاء ثلاثة دلائل اختبار: bucket1, bucket2, bucket3
تُستخدم لاختبار قيود صلاحيات الوصول للحساب
----------------------------------------
✅ تم إنشاء الدليل: bucket1
✅ تم إنشاء الدليل: bucket2
✅ تم إنشاء الدليل: bucket3
🔒 الخطوة 2: إنشاء سياسة مقيدة
إنشاء سياسة تسمح فقط بالوصول إلى bucket1 و bucket2
سيتم تطبيق هذه السياسة على حساب الخدمة المقيد
----------------------------------------
✅ تم إنشاء السياسة: restricted-policy
📋 صلاحيات السياسة:
- الإجراءات المسموحة: s3:* (جميع عمليات S3)
- الموارد المسموحة: bucket1/*, bucket2/*
- الموارد المرفوضة: جميع الدلائل الأخرى
👤 الخطوة 3: إنشاء حساب خدمة مقيد
إنشاء حساب خدمة مع السياسة المقيدة أعلاه
يمكن لهذا الحساب الوصول فقط إلى bucket1 و bucket2
----------------------------------------
✅ تم إنشاء حساب الخدمة: restricted
📋 صلاحيات الحساب:
- مفتاح الوصول: restricted
- السياسة: سياسة مقيدة مضمنة (bucket1 و bucket2 فقط)
- السلوك المتوقع: يمكنه الوصول فقط إلى الدلائل المحددة
🧪 الخطوة 4: اختبار وصول الحساب المقيد
استخدام الحساب المقيد لسرد الدلائل، والتحقق من أن الصلاحيات مقيدة بشكل صحيح
النتيجة المتوقعة: يمكنه رؤية bucket1 و bucket2 فقط
----------------------------------------
✅ الحساب المقيد محدود بشكل صحيح بالدلائل المسموحة
الدلائل المتاحة: ['bucket1', 'bucket2']
⚡ الخطوة 5: محاولة تصعيد الصلاحيات (اختبار الثغرة)
استخدام الحساب المقيد لمحاولة إنشاء حساب خدمة جديد
الحساب الجديد دون سياسة محددة يجب أن يرث قيود الوالد
الثغرة: قد يتجاوز الحساب المقيد السياسة لإنشاء حسابات جديدة غير مقيدة
----------------------------------------
✅ تم إنشاء حساب الخدمة: newroot
📋 محاولة استخدام حساب الخدمة الجديد للوصول إلى bucket3 غير المصرح به
⬆️ محاولة رفع كائن إلى bucket3 للتحقق من الصلاحيات
⬇️ محاولة سرد الكائنات للتحقق من الصلاحيات
تم العثور على الكائن: test-object
❌ عرضة للثغرة: نجح الحساب المقيد في إنشاء حساب خدمة جديد
صلاحيات الحساب الجديد: غير مقيدة (ورث صلاحيات الوالد الكاملة)
يشير هذا إلى وجود ثغرة CVE-2025-62506!
🧹 تنظيف موارد الاختبار...
----------------------------------------
✅ تمت إزالة حساب الخدمة: restricted
✅ تمت إزالة حساب الخدمة: newroot
✅ تمت إزالة السياسة: restricted-policy
✅ تمت إزالة الدليل: bucket1
✅ تمت إزالة الدليل: bucket2
✅ تمت إزالة الدليل: bucket3
============================================================
📊 نتائج التحقق
============================================================
❌ النتيجة: عرضة للثغرة - CVE-2025-62506 موجودة
💡 التوصية: قم بالترقية فوراً إلى الإصدار المُصلَح RELEASE.2025-10-15T17-29-55Z أو أحدث
🔗 المرجع: https://github.com/minio/minio/security/advisories/GHSA-jjjj-jwhf-8rgr
============================================================
🚀 سكربت التحقق من ثغرة CVE-2025-62506
============================================================
📋 وصف السكربت:
يختبر هذا السكربت ثغرة تصعيد صلاحيات حساب خدمة MinIO (CVE-2025-62506)
تسمح الثغرة لحسابات الخدمة المقيدة بتجاوز السياسات المضمنة عند إنشاء حسابات جديدة
============================================================
📦 الخطوة 1: إنشاء دلائل اختبار
إنشاء ثلاثة دلائل اختبار: bucket1, bucket2, bucket3
تُستخدم لاختبار قيود صلاحيات الوصول للحساب
----------------------------------------
✅ تم إنشاء الدليل: bucket1
✅ تم إنشاء الدليل: bucket2
✅ تم إنشاء الدليل: bucket3
🔒 الخطوة 2: إنشاء سياسة مقيدة
إنشاء سياسة تسمح فقط بالوصول إلى bucket1 و bucket2
سيتم تطبيق هذه السياسة على حساب الخدمة المقيد
----------------------------------------
✅ تم إنشاء السياسة: restricted-policy
📋 صلاحيات السياسة:
- الإجراءات المسموحة: s3:* (جميع عمليات S3)
- الموارد المسموحة: bucket1/*, bucket2/*
- الموارد المرفوضة: جميع الدلائل الأخرى
👤 الخطوة 3: إنشاء حساب خدمة مقيد
إنشاء حساب خدمة مع السياسة المقيدة أعلاه
يمكن لهذا الحساب الوصول فقط إلى bucket1 و bucket2
----------------------------------------
✅ تم إنشاء حساب الخدمة: restricted
📋 صلاحيات الحساب:
- مفتاح الوصول: restricted
- السياسة: سياسة مقيدة مضمنة (bucket1 و bucket2 فقط)
- السلوك المتوقع: يمكنه الوصول فقط إلى الدلائل المحددة
🧪 الخطوة 4: اختبار وصول الحساب المقيد
استخدام الحساب المقيد لسرد الدلائل، والتحقق من أن الصلاحيات مقيدة بشكل صحيح
النتيجة المتوقعة: يمكنه رؤية bucket1 و bucket2 فقط
----------------------------------------
✅ الحساب المقيد محدود بشكل صحيح بالدلائل المسموحة
الدلائل المتاحة: ['bucket1', 'bucket2']
⚡ الخطوة 5: محاولة تصعيد الصلاحيات (اختبار الثغرة)
استخدام الحساب المقيد لمحاولة إنشاء حساب خدمة جديد
الحساب الجديد دون سياسة محددة يجب أن يرث قيود الوالد
الثغرة: قد يتجاوز الحساب المقيد السياسة لإنشاء حسابات جديدة غير مقيدة
----------------------------------------
✅ آمن: فشل الحساب المقيد في إنشاء حساب خدمة جديد
الخطأ: تم رفض الإذن بشكل صحيح
التفاصيل: Access Denied.
🧹 تنظيف موارد الاختبار...
----------------------------------------
✅ تمت إزالة حساب الخدمة: restricted
✅ تمت إزالة السياسة: restricted-policy
✅ تمت إزالة الدليل: bucket1
✅ تمت إزالة الدليل: bucket2
✅ تمت إزالة الدليل: bucket3
============================================================
📊 نتائج التحقق
============================================================
✅ النتيجة: آمن - تم إصلاح CVE-2025-62506
🎉 إصدار MinIO لديك يحتوي على إصلاح لهذه الثغرة
============================================================
يُقدم سكربت التحقق هذا كما هو لأغراض اختبار الأمان.