🔍 ماسح CVEs GitHub - دليل الاستخدام
برنامج نصي لمسح مستودعات GitHub بحثًا عن الثغرات الأمنية المعروفة في مشاريع React و Next.js.
📋 الثغرات المكتشفة
يقوم الماسح بالتحقق من CVEs التالية:
🚀 كيفية الاستخدام
المتطلبات الأساسية
- متصفح ويب حديث (Chrome, Firefox, Edge, إلخ.)
- الوصول إلى GitHub (اختياري: Personal Access Token للمستودعات الخاصة)
خطوة بخطوة
1. فتح وحدة التحكم في المتصفح
- انتقل إلى أي صفحة من صفحات GitHub (مثال:
https://github.com)
- افتح DevTools:
- Chrome/Edge:
F12 أو Ctrl+Shift+I (Windows) / Cmd+Option+I (Mac)
- Firefox:
F12 أو Ctrl+Shift+K (Windows) / Cmd+Option+K (Mac)
- انتقل إلى علامة التبويب Console
2. نسخ البرنامج النصي وتشغيله
- افتح الملف
main.js
- انسخ كل محتوى الملف
- الصقه في وحدة تحكم المتصفح
- اضغط
Enter للتشغيل
3. تكوين المسح
سيطرح البرنامج النصي سلسلة من الأسئلة التفاعلية:
3.1. المصادقة (السؤال الأول)
🔐 Scan private repos too?
OK = Enter PAT
Cancel = Public only
- OK: سيُطلب منك إدخال Personal Access Token (PAT) من GitHub
- يسمح بمسح المستودعات الخاصة
- ضروري للوصول إلى المؤسسات
- Cancel: سيتم مسح المستودعات العامة فقط
كيفية إنشاء PAT:
- انتقل إلى:
https://github.com/settings/tokens
- انقر على "Generate new token" → "Generate new token (classic)"
- أعطه اسمًا وصفيًا
- حدد النطاق
repo (وصول كامل إلى المستودعات)
- انقر على "Generate token"
- انسخ الرمز فورًا (لن يظهر مرة أخرى)
3.2. نطاق المسح (إذا تمت المصادقة)
🔍 What do you want to scan?
OK = Organizations
Cancel = User Profile
- OK: مسح المؤسسات
- Cancel: مسح ملف المستخدم الشخصي فقط
3.3. اختيار المؤسسات (إذا اخترت Organizations)
🏢 Scan all organizations?
OK = All organizations
Cancel = Single organization
الخيار أ - جميع المؤسسات (OK):
- سيبحث البرنامج النصي تلقائيًا عن جميع مؤسسات المستخدم المصادق
- سيمسح جميع المستودعات لجميع المؤسسات
الخيار ب - مؤسسة محددة (Cancel):
3.4. ملف المستخدم الشخصي (إذا لم يتم المصادقة أو اخترت Profile)
- إذا كنت في صفحة ملف شخصي على GitHub، سيكتشفها البرنامج النصي تلقائيًا
- وإلا، سيُطلب منك:
Enter GitHub username:
📊 الميزات
✨ التحقق عبر الفروع
يتحقق البرنامج النصي من جميع الفروع لكل مستودع، وليس فقط الفرع الافتراضي. يضمن ذلك اكتشاف الثغرات في فروع التطوير أو التجربة أو الفروع النشطة الأخرى.
🏢 دعم المؤسسات
- مسح مستودعات مؤسسات GitHub
- خيار مسح جميع المؤسسات أو مؤسسة محددة
- دعم إدخال رابط أو اسم المؤسسة
🔒 الوصول إلى المستودعات الخاصة
مع Personal Access Token صالح، يمكن للبرنامج النصي:
- الوصول إلى المستودعات الخاصة
- مسح المؤسسات الخاصة
- التحقق من فروع المستودعات الخاصة
📈 النتائج
بعد التنفيذ، سيعرض البرنامج النصي:
جدول النتائج
جدول في وحدة التحكم يظهر:
- Repo: اسم المستودع
- Branch: اسم الفرع المفحوص
- Next: إصدار Next.js (إن وجد)
- React: إصدار React (إن وجد)
- ReactDOM: إصدار react-dom (إن وجد)
- RSCWebpack: إصدار react-server-dom-webpack (إن وجد)
- RSCParcel: إصدار react-server-dom-parcel (إن وجد)
- RSCTurbopack: إصدار react-server-dom-turbopack (إن وجد)
- Status: حالة الثغرة
✅ Safe: لا توجد ثغرات مكتشفة
⚠️ CVE-XXXX-XXXXX: تم العثور على ثغرة
الملخص
📊 Summary:
Total repos: 15
Branches scanned: 23
With package.json: 20
Skipped: 3 (no package.json)
⚠️ 5 vulnerable repo(s) found!
أو
✅ No vulnerabilities found!
⚙️ الإعدادات التقنية
- التأخير بين طلبات API: 200 مللي ثانية (لتجنب تحديد المعدل)
- التأخير بين عمليات المسح: 30 مللي ثانية
- النتائج لكل صفحة: 100 عنصر
- دعم المستودعات الخاصة: نعم (مع PAT)
- التحقق من الفروع: جميع فروع كل مستودع
🔧 حل المشكلات
خطأ: "Token invalid"
- تحقق من نسخ الرمز بشكل صحيح
- تأكد من أن الرمز له نطاق
repo
- تحقق من عدم انتهاء صلاحية الرمز
خطأ: "No repositories found"
- تحقق من وجود المستخدم/المؤسسة
- إذا كنت تمسح مؤسسات، تحقق من أن لديك وصولًا
- تحقق من وجود مستودعات في الملف الشخصي/المؤسسة
خطأ: "No organizations found"
- تحقق من أنك مصادق برمز صالح
- تأكد من أنك جزء من مؤسسات
- يحتاج الرمز إلى أذونات للوصول إلى المؤسسات
المسح بطيء جدًا
- يقوم البرنامج النصي بتأخيرات مقصودة لتجنب تحديد المعدل
- المستودعات التي تحتوي على فروع كثيرة ستستغرق وقتًا أطول
- المؤسسات التي تحتوي على مستودعات كثيرة ستستغرق وقتًا أطول
📝 ملاحظات مهمة
- تحديد المعدل (Rate Limiting): يحترم البرنامج النصي حدود API الخاصة بـ GitHub مع تأخيرات تلقائية
- الخصوصية: يُستخدم الرمز محليًا فقط في المتصفح، ولا يُرسل إلى خوادم خارجية
- الدقة: يتحقق الماسح فقط من ملف
package.json في جذر المستودع
- الفروع: يتم التحقق من جميع الفروع، ولكن يتم الإبلاغ فقط عن تلك التي تحتوي على
package.json
- الإصدارات: يكتشف الماسح الإصدارات الضعيفة بناءً على تعريفات CVE
🛡️ الأمان
- يتم تشغيل البرنامج النصي بالكامل في المتصفح (من جانب العميل)
- لا تُرسل أي بيانات إلى خوادم خارجية
- يُستخدم Personal Access Token فقط لطلبات API الخاصة بـ GitHub
- يُنصح باستخدام رموز بأقل نطاقات ضرورية
📄 الترخيص
MIT License
🔄 الإصدار
3.0.0
تم تطويره لاكتشاف الثغرات الأمنية في مشاريع React و Next.js