
مختبر تعليمي يوضح تقنيات تجاوز بيئة تنفيذ تعبيرات JavaScript وتطور التصحيحات عبر إصدارات متعددة من بيئات التنفيذ الضعيفة، مع حمولات وتحليل شجرة البنية المجردة (AST).
بيئة تجريبية مصغّرة لتوضيح هروب تعبيرات JavaScript من صندوق الرمل وتطوّر التصحيحات.
عبر إصدارات متعددة من صندوق الرمل، ننتقل من:
قابل للهروب بالكامل ← تصحيح this ← تصحيح destructuring
مع الإبقاء على طرق تجاوز جديدة، لفهم ديناميكية الصراع بين الثغرات والتصحيحات في العالم الحقيقي.
.
├── payload.js # حمولات الهجوم المختلفة
├── sandbox_v0.js # النسخة الأصلية القابلة للاختراق
├── sandbox_v1.js # إصلاح سلسلة this
├── sandbox_v2.js # إصلاح destructuring
نريد محاكاة واقع كهذا:
وهكذا في حلقة لا تنتهي.
هذا المشروع ليس لصنع VM آمن حقًا. بل لملاحظة:
كيف يتم اختراق كل تصحيح "يبدو منطقيًا" بالتقنية التالية.
npm install vm2 acorn acorn-walk
node sandbox_vX.js
استبدل X بـ 0 / 1 / 2.
يحتوي payload.js على أربع طرق وصول:
| الاسم | التقنية |
|---|---|
| CVE-2025-68613 / this | الحصول على process عبر this |
| CVE-2026-25049 / destructuring | الحصول على constructor عبر تفكيك الكائن |
| Reflect.get | استخدام واجهة Reflect API |
| Dynamic Reflect | الوصول الديناميكي للخصائص |
الخصائص:
النتيجة: جميع الحمولات تنجح.
المهاجم سعيد للغاية.
التغييرات:
"use strict".call(undefined)وبالتالي:
this === undefined
المهاجم يومئ برأسه ويواصل عبر مسار آخر.
الجديد:
ObjectPatternconstructorالتصحيحات القائمة على القوائم السوداء عادةً ما تتميز بـ:
✔ إصلاح مسارات محددة ✔ تكلفة منخفضة ✔ سهولة النشر
ولكن في نفس الوقت:
❌ تغطية دفاعية محدودة ❌ سهولة تجاوزها بطرق وصول أخرى مكافئة دلاليًا
وهذا هو السبب في أن صناديق الرمل المشابهة لـ vm2 شهدت تاريخيًا حالات هروب متكررة.