World Of Security
4.64K subscribers
39 photos
9 videos
21 files
599 links
Download Telegram
🚨THREAT INTEL: Django SQL Injection 🆔 CVE-2026-1207 | VT-2026-1207 🔥 Severity: High / Critical
آسیب‌پذیریSQL Injection  در ماژول django.contrib.gis  شناسایی شد. اگر در پروژه خود از PostGIS  و فیلدهای RasterField  استفاده می‌کنید، دیتابیس شما در خطر است.
🔬 تحلیل فنی (Technical Deep Dive) مشکل در کلاس RasterField و متدهای مربوط به جستجوی مکانی (Lookups) نهفته است. زمانی که روی یک فیلد رستری کوئری می‌زنید (مثل bbcontains یا سایر عملگرهای GIS)، جنگو به شما اجازه می‌دهد پارامتر band index را مشخص کنید. در نسخه‌های آسیب‌پذیر، این ورودی بدون اعتبارسنجی (Sanitization) و بدون اجبار به نوع Integer، مستقیماً وارد تابع SQL در PostGIS می‌شود.
💀 منطق اکسپلویت (PoC Logic)
فرض کنید دولوپر کدی دارد که ورودی کاربر را به کوئری GIS پاس می‌دهد:
Python
band_idx = request.GET.get('idx') # Untrusted Input
# Passing input directly to lookup
qs = MapLayer.objects.filter(
    raster__bbcontains=(geom, band_idx)
)

در سطح دیتابیس، جنگو این را به تابعی شبیه به این تبدیل می‌کند:
ST_Contains(raster, [band_index], ...)

🔻 بردار حمله (Attack Vector):

مهاجم به جای ارسال عدد (مثلاً 1)، یک رشته مخرب ارسال می‌کند تا پرانتز تابع PostGIS را ببندد و دستور SQL جدید تزریق کند.
Payload Concept:
Input:  1) OR 1=1; --
Result: ST_Contains(raster, 1) OR 1=1; --, ...)

این کار باعث Bypass شدن منطق فیلتر یا اجرای دستورات سنگین (Stacking Queries) می‌شود.

🎯 نسخه‌های آسیب‌پذیر:

• Django 6.0 < 6.0.2 • Django 5.2 < 5.2.11 • Django 4.2 < 4.2.28

🛡 راهکارهای امنیتی (Mitigation)

1️⃣ آپدیت فوری (Recommended): تیم جنگو در پچ‌های جدید ورودی این بخش را Validate می‌کند.
Bash
pip install -U django
2️⃣ هات‌فیکس دستی (Temporary):

اگر امکان آپدیت ندارید، قبل از ارسال متغیر به کوئری، حتماً آن را به int تبدیل کنید:

int(request.GET['idx'])

#Exploit #Django #SQLi #CVE_2026_1207 #Python #RedTeam #PostGIS #BlueTeam
🔥62