
خادم بروتوكول السياق النموذجي لاكتشاف الثغرات الذاتي
MCPwner هو خادم بروتوكول سياق النموذج (MCP) يدمج أدوات اختبار الأمان في سير العمل القائم على نماذج اللغة الكبيرة (LLM). يوفر واجهة موحدة لفحص الأسرار، والتحليل الثابت (SAST)، وتحليل تكوين البرامج (SCA)، وأمان البنية التحتية كرمز (IaC)، والاختبار العشوائي للمصدر، والاستطلاع، واختبار أمان التطبيقات الديناميكي (DAST)، وأبحاث الثغرات بما في ذلك اكتشاف ثغرات اليوم صفر (0-day).
بدلاً من ربط الأدوات يدويًا ولصق المخرجات في نموذج اللغة الخاص بك، يعمل MCPwner على توحيد وبث النتائج مباشرة إلى سياق عمل النموذج. وهذا يُمكّن من الاستدلال المستمر، والربط، واكتشاف مسارات الهجوم عبر دورة حياة أبحاث الأمن - بدءًا من رسم أسطح الهجوم وتحديد الثغرات المعروفة وصولاً إلى كشف ناقلات الهجوم الجديدة.
ملاحظة: هذا المشروع قيد التطوير النشط. تعرّف على المزيد حول بروتوكولات MCP هنا.
الأدوات التالية مخططة للإصدارات المستقبلية.
مولّدات لسلاسل الأدوات (gadget chains) والحمولات لتحويل نقاط إلغاء التسلسل التي تم تحديدها أثناء SAST إلى أسلحة. توجد أنظمة بيئية ناضجة لسلاسل الأدوات في Java و.NET وPHP؛ يتم تغطية Python عبر توليد حمولات pickel خبيثة (إلغاء تسلسل Ruby/Node يعتمد على الحمولات ويوجد في مجموعة الحمولات أدناه):
مجموعات من الحمولات وقوائم الكلمات المنسقة لدعم الأدوات أعلاه:
"Enumerate and scan example.com" → MCPwner chains: Subfinder + Amass → Masscan + Nmap → httpx → Katana + gau → ffuf + Arjun
### مسح مستودع GitHub عن الأسرار```
"Scan https://github.com/example/repo for secrets"
→ MCPwner runs Gitleaks, TruffleHog, detect-secrets and correlates findings
"Run a security audit on my Python project" → MCPwner runs Bandit (SAST), OSV-Scanner (SCA), and secrets scanning
### تحليل مسار الهجوم```
"Find vulnerabilities in the authentication module"
→ MCPwner runs CodeQL queries, cross-references with secrets and SCA results
"Test for SQLi and XSS on http://localhost:8080" → MCPwner chains: sqlmap + Dalfox and verifies findings
## التثبيت
### المتطلبات الأساسية
**متطلبات النظام:**
- Docker Engine 20.10+ و Docker Compose 2.0+
- ذاكرة RAM بسعة 8GB كحد أدنى (16GB موصى بها لتشغيل أدوات متعددة)
- مساحة قرص خالية 20GB (صور أدوات الأمان كبيرة)
- المنصات المدعومة: Linux و macOS و Windows (مع WSL2)
**عميل MCP:**
- Claude Desktop و Cursor و Kiro أو أي عميل متوافق مع MCP
### الإعداد
1. **استنساخ المستودع**: ```bash
git clone https://github.com/nedlir/mcpwner.git
cd mcpwner
بمجرد تشغيل حاويات Docker، أضف MCPwner إلى عميل MCP الخاص بك:
مهم: التسجيل الديناميكي للأدوات
يستخدم MCPwner بنية معيارية اختيارية. يتم التحكم في أدوات الأمان بواسطة ملفات profiles الخاصة بـ Docker Compose.
.env (COMPOSE_PROFILES=sast,secrets,reconnaissance,dast,etc) يحدد الحاويات التي يتم تشغيلها. بدلاً من ذلك، يمكنك تجاوز هذا الإعداد وتشغيل ملفات تعريف محددة عبر CLI: docker compose --profile sast --profile dast up -d.semgrep)، قم بإزالة فئتها (sast) من ملف .env واذكر الأدوات الأخرى التي تريدها يدويًا (bandit,gosec,codeql).utilities (مثل Linguist, WireMock, Chromium) تُعتبر تبعيات أساسية دائمة. تعمل بشكل غير مشروط عند docker compose up -d لضمان عمل التبعيات الحيوية المتقاطعة (مثل اكتشاف اللغة) دائمًا.مواقع ملفات التهيئة:
~/Library/Application Support/Claude/claude_desktop_config.json (macOS)mcp.json في مشروعك أو دليل الإعداداتتثبيت بنقرة واحدة (يتطلب تشغيل Docker):
التهيئة اليدوية:
أضف ما يلي إلى ملف تهيئة MCP الخاص بك:```json { "mcpServers": { "mcpwner": { "command": "docker", "args": ["exec", "-i", "mcpwner-server", "python", "src/server.py"], "env": {} } } }
أعد تشغيل عميل MCP الخاص بك لتحميل تكوين الخادم الجديد.
### فحص المشاريع المحلية
لفحص المشاريع من جهازك المضيف، قم بتركيبها داخل الحاوية عن طريق إضافة وحدة تخزين في `docker-compose.yaml`:```yaml
services:
mcpwner:
volumes:
- /path/to/your/projects:/mnt/projects:ro
ثم استخدم أداة create_workspace مع:
source_type="local"source="/mnt/projects/my-project"يقوم MCPwner تلقائيًا بالحفاظ على بيانات مساحة العمل وبيانات قاعدة CodeQL الوصفية عبر إعادة تشغيل الحاوية باستخدام تخزين قائم على الملفات في وحدة تخزين Docker المشتركة (/workspaces/.metadata/). لا حاجة لأي تكوين - يقوم النظام بتحميل البيانات الموجودة عند بدء التشغيل وحفظها بعد كل عملية باستخدام كتابات ذرية لمنع التلف.
التحكم في تنظيف مساحة العمل:
delete_files=True, delete_metadata=False - تحرير مساحة القرص مع الحفاظ على تاريخ مساحة العمل (موصى به)delete_files=True, delete_metadata=True - إزالة كاملة لمساحة العمل والبيانات الوصفيةdelete_files=False, delete_metadata=True - إزالة من القائمة مع الاحتفاظ بالملفات على القرصالنسخ الاحتياطي:```bash
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar czf /backup/workspaces-backup.tar.gz /data
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar xzf /backup/workspaces-backup.tar.gz -C /
## البنية
يستخدم MCPwner اتصالاً قائماً على HTTP بين الحاويات لدعم عمليات النشر عن بعد في المستقبل. على الرغم من تحسينه حالياً للاستخدام المحلي، يمكن تكييف البنية لتناسب عمليات النشر على الخوادم البعيدة مع تعديلات طفيفة.
**مبادئ التصميم:**
- عزل الحاويات لتنفيذ أدوات الأمان
- تنسيقات مخرجات موحدة لاستهلاك LLM (SARIF/JSON)
- بنية إضافات قابلة للتوسع لأدوات جديدة
- API عديم الحالة (الذاكرة يديرها المستخدم)
**نظرة عامة على البنية:**```mermaid
graph LR
subgraph IDE[" "]
LLM[🤖<br/>LLM]
Client[MCP Client]
LLM -.-> Client
end
Server[MCPwner Server]
SAST[SAST Tools]
Secrets[Secrets Scanning]
SCA[SCA Tools]
Recon[Reconnaissance]
CodeQL[CodeQL Service]
Linguist[Language Detection]
Utilities[Utilities]
IaC[IaC Security]
Fuzzing[Source Fuzzing]
DAST[DAST Tools]
Client -->|JSON-RPC 2.0| Server
Server -->|HTTP| SAST
Server -->|HTTP| Secrets
Server -->|HTTP| SCA
Server -->|HTTP| Recon
Server -->|HTTP| CodeQL
Server -->|HTTP| Linguist
Server -->|HTTP| Utilities
Server -->|HTTP| IaC
Server -->|HTTP| Fuzzing
Server -->|HTTP| DAST
style LLM fill:#7C3AED,stroke:#5B21B6,stroke-width:3px,color:#fff
style Client fill:#4A90E2,stroke:#2E5C8A,stroke-width:3px,color:#fff
style Server fill:#F5A623,stroke:#C17D11,stroke-width:3px,color:#fff
style SAST fill:#E74C3C,stroke:#C0392B,stroke-width:2px,color:#fff
style Secrets fill:#9B59B6,stroke:#7D3C98,stroke-width:2px,color:#fff
style SCA fill:#1ABC9C,stroke:#16A085,stroke-width:2px,color:#fff
style Recon fill:#00BCD4,stroke:#0097A7,stroke-width:2px,color:#fff
style CodeQL fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#fff
style Linguist fill:#3498DB,stroke:#2874A6,stroke-width:2px,color:#fff
style Utilities fill:#6D28D9,stroke:#4C1D95,stroke-width:2px,color:#fff
style IaC fill:#059669,stroke:#047857,stroke-width:2px,color:#fff
style Fuzzing fill:#B91C1C,stroke:#7F1D1D,stroke-width:2px,color:#fff
style DAST fill:#D35400,stroke:#A04000,stroke-width:2px,color:#fff
style IDE fill:none,stroke:#ddd,stroke-width:2px,stroke-dasharray: 5 5
يكشف MCPwner عن الأدوات التالية عبر واجهة MCP:
إدارة مساحة العمل:
create_workspace - تهيئة مساحة عمل المسح من مسار محلي، أو رابط Git، أو مستودع GitHublist_workspaces - سرد جميع مساحات العمل المتاحةcleanup_workspace - إزالة مساحة العمل والبيانات المرتبطة بهاسجل النتائج:
نطاقه مساحة العمل، ويتم حفظه على القرص (<workspace>/findings/<id>.json)، وهو متاح دائمًا — لا حاجة لحاوية أو بوابة صحة. هذا هو المصدر الأساسي للحقيقة لخط أنابيب البحث العميق متعدد الوكلاء: كل فرضية، ونتائج PoC، وحكم مراجعة هو إدخال نتيجة بدلاً من نص وصفي.
upsert_finding - إنشاء أو تحديث نتيجة. يدمج بعمق في إدخال موجود افتراضيًا، بحيث يمكن لوكيل واحد كتابة كائن فرعي خاص به (مثل poc) دون الكتابة فوق حقول وكيل آخر (مثل review)list_findings - سرد جميع النتائج في مساحة العمل، مع إمكانية التصفية حسب status (مثل poc-confirmed، review-approved)get_finding - استرداد نتيجة واحدة بواسطة المعرفSAST (التحليل الثابت):
run_sast_scan - تشغيل أدوات التحليل الثابت (Semgrep، Bandit، Gosec، Brakeman، PMD، Psalm، NodeJsScan، Joern، YASA)get_sast_report - استرداد نتائج فحص SASTsast_list_tools - سرد أدوات SAST المتاحةكشف الأسرار:
run_secrets_scan - تشغيل أدوات فحص الأسرار (Gitleaks، TruffleHog، Whispers، detect-secrets، Hawk-Eye)get_secrets_report - استرداد نتائج فحص الأسرارsecrets_list_tools - سرد أدوات فحص الأسرار المتاحةSCA (تحليل تكوين البرمجيات):
run_sca_scan - تحليل التبعيات للبحث عن الثغرات الأمنية (Grype، Syft، OSV-Scanner، Retire.js)get_sca_report - استرداد نتائج فحص SCAsca_list_tools - سرد أدوات SCA المتاحةالاستطلاع:
run_reconnaissance_scan - تشغيل أداة استطلاع واحدة (Subfinder، Amass، Nmap، Masscan، httpx، Katana، ffuf، bbot، gau، Arjun، wafw00f، Kiterunner)run_reconnaissance_chain - ربط عدة أدوات استطلاع بالتسلسلget_reconnaissance_report - استرداد نتائج فحص الاستطلاعreconnaissance_list_tools - سرد أدوات الاستطلاع المتاحةCodeQL:
detect_languages - اكتشاف اللغات في قاعدة الشيفرة عبر Linguistcreate_codeql_database - إنشاء قاعدة بيانات CodeQL للتحليلlist_databases - سرد قواعد بيانات CodeQL المتاحةlist_query_packs - سرد حزم الاستعلام المتاحةexecute_query - تشغيل استعلامات CodeQL محددةأمن البنية التحتية والبنية كشيفرة (IaC):
run_iac_scan - فحص البنية كشيفرة بحثًا عن التهيئات الخاطئة (Checkov، KICS، Terrascan، TFSec، Hadolint)get_iac_report - استرداد نتائج فحص IaCiac_list_tools - سرد أدوات فحص IaC المتاحةالاختبار بالتشويش (Fuzzing) المصدر:
run_fuzzing_scan - تشغيل حملة اختبار بالتشويش موجهة بالتغطية ومبنية على الصندوق الأبيض مقابل تسخير لكل هدف (Atheris، Jazzer، Jazzer.js، PHP-Fuzzer)get_fuzzing_report - استرداد نتائج تعطل التشويش (المدخلات المتسببة في التعطل + تتبع المكدس)fuzzing_list_tools - سرد محركات التشويش المتاحة، مصفاة حسب اللغة المكتشفةDAST (اختبار أمن التطبيقات الديناميكي):
run_dast_scan - تشغيل أدوات اختبار أمن التطبيقات الديناميكي (sqlmap، NoSQLMap، Commix، Dalfox، SSTImap، SSRFmap، jwt_tool، interactsh)get_dast_report - استرداد نتائج فحص DASTdast_list_tools - سرد أدوات DAST المتاحةالأدوات المساعدة:
run_utilities_scan - تشغيل أداة مساعدة ضد هدف حي (Linguist، WireMock، Mitmproxy، aiohttp، Headless Chromium)get_utilities_report - استرداد نتائج فحص الأدوات المساعدةutilities_list_tools - سرد الأدوات المساعدة المتاحة وخيارات تهيئتهاالصحة والمراقبة:
health_check - التحقق من توفر الخادم والأداةlist_tools - سرد جميع الأدوات المتاحة وحالتهاينفذ MCPwner أدوات أمنية قد تقوم بعمليات اقتحامية. استخدمه فقط على الأنظمة وقواعد الشيفرة التي تمتلكها أو لديك إذن صريح لاختبارها - الوصول غير المصرح به غير قانوني. قصر الوصول إلى خادم MCP على المستخدمين المصرح لهم وفكر في عزل الشبكة لنشر الإنتاج. راجع تهيئات الأداة قبل تشغيل عمليات الفحص لأن بعض الأدوات يمكن أن تولد حركة مرور كبيرة على الشبكة أو تحميلًا على النظام. سجل تنفيذ الأداة والنتائج، مع مراعاة أن عمليات الفحص الأمني يمكن أن تؤدي إلى تنبيهات في أنظمة المراقبة. اتبع ممارسات الإفصاح المسؤولة عند الإبلاغ عن الثغرات الأمنية المكتشفة باستخدام MCPwner. حافظ على تحديث صور Docker وافحص الحاويات بحثًا عن الثغرات الأمنية بانتظام. لا تقم أبدًا بإيداع مفاتيح API أو الرموز أو بيانات الاعتماد في ملفات التهيئة - استخدم متغيرات البيئة أو أنظمة إدارة الأسرار بدلاً من ذلك.
أيضًا، يجب أن تكون مسؤولاً عن أمنك الخاص عند تشغيل هذه الأدوات والوصول إلى مكتبات الطرف الثالث، ويُقترح تشغيل كل شيء في بيئة معزولة وبدون صلاحيات خاصة (مصغرة ومعززة قدر الإمكان).
![]() | ![]() | ![]() | ![]() |
|---|
| bbot | httpx | Katana | gau | Arjun |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| CodeQL | Psalm | Gosec | Bandit | Semgrep |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Brakeman | PMD | NodeJsScan | Joern | YASA |
![]() | ![]() | ![]() | ![]() |
|---|
| Atheris | Jazzer | Jazzer.js | PHP-Fuzzer |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Gitleaks | TruffleHog | detect-secrets | Whispers | Hawk-Eye |
![]() | ![]() | ![]() | ![]() |
|---|
| Grype | Syft | OSV-Scanner | Retire.js |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Checkov | KICS | Terrascan | TFSec | Hadolint |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| sqlmap | NoSQLMap | Commix | Dalfox | SSTImap |
![]() |
|---|
| SSRFmap | jwt_tool | interactsh |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Linguist | WireMock | Mitmproxy | aiohttp | Chromium w. Playwright |