انتشار Django 6.1.3، 6.0.10 و 5.2.19 برای رفع شش مشکل امنیتی

چرا مهم است

اگر از Django استفاده می‌کنی، این اصلاح‌ها به مصرف حافظه، افشای داده و درخواست شبکه از سمت برنامه مربوط‌اند. در بخش SpatialReference، تنها به‌روزرسانی Django برای محافظت کامل کافی نیست؛ نسخه GDAL هم اهمیت دارد.

قبل از خواندن، این‌ها را بدان۴ مفهوم
CVE

شناسه‌ای استاندارد برای ارجاع به یک آسیب‌پذیری امنیتی شناخته‌شده.

بیشتر درباره این مفهوم

log injection

ورود داده کنترل‌شده توسط مهاجم به log به شکلی که بتواند ظاهر یا ساختار آن را دست‌کاری کند.

بیشتر درباره این مفهوم

Server-side request forgery

آسیب‌پذیری‌ای که در آن مهاجم برنامه سمت server را وادار به ارسال درخواست به مقصد موردنظر خود می‌کند.

بیشتر درباره این مفهوم

cache

نگهداری داده یا پاسخ برای استفاده مجدد، به‌جای تولید یا دریافت دوباره آن در هر درخواست.

بیشتر درباره این مفهوم

تیم Django نسخه‌های 6.1.3، 6.0.10 و 5.2.19 را برای رفع شش مشکل امنیتی منتشر کرده و از همه کاربران خواسته است هرچه زودتر به‌روزرسانی کنند. طبق سیاست امنیتی Django، پنج مورد شدت «low» دارند و مشکل مربوط به CRS در GeoJSON با شدت «moderate» ارزیابی شده است.

در CVE-2026-108147، هنگام استفاده از MultiPartParser، فایل‌های multipart با Content-Transfer-Encoding: base64 ممکن بود پیش از رسیدن به upload handler به‌طور کامل در حافظه قرار بگیرند. این رفتار مستقل از FILE_UPLOAD_MAX_MEMORY_SIZE بود و می‌توانست حافظه زیادی مصرف کند. در CVE-2026-111211 نیز GeometryField و widget‌های آن مقدارهای نامعتبر را مستقیماً در log می‌نوشتند؛ وجود control character می‌توانست به log injection و دست‌کاری ظاهر یا ساختار log منجر شود.

مشکل CVE-2026-111362 از ارجاع CRS به منبع خارجی در GeoJSON ناشی می‌شد. چون GDAL این ارجاع‌ها را پردازش می‌کند، ساخت geometry از ورودی کاربر می‌توانست به Server-side request forgery یا خواندن فایل با دسترسی کاربرِ process مربوط به Django منجر شود. اکنون lookup روی spatial field، فیلد GeometryField و GEOSGeometry این ارجاع‌ها را رد می‌کنند؛ DataSource و LayerMapping برای بارگذاری داده قابل‌اعتماد همچنان آن‌ها را می‌پذیرند.

در CVE-2026-113593، UpdateCacheMiddleware و cache_page() برای دو درخواست، یکی بدون header مشخص‌شده در Vary و دیگری با همان header اما مقدار خالی، cache key یکسان تولید می‌کردند. این وضعیت ممکن بود داده خصوصی را افشا کند. اکنون این دو حالت جدا هستند و پاسخ‌های قبلاً cached برای حالت فاقد header، در درخواست بعدی دوباره cache می‌شوند. CVE-2026-113733 نیز نمایش کامل password hash به کاربر admin با مجوز view و بدون change را در برخی حالت‌های custom user model پوشش می‌دهد.

مشکل CVE-2026-114582 به ورودی string در SpatialReference و چند مسیر مرتبط با transform و srs مربوط است؛ URL یا مسیر فایل می‌توانست باعث درخواست شبکه یا خواندن فایل شود. SpatialReference اکنون روی GDAL 3.9 و بالاتر، دسترسی شبکه و فایل را هنگام پردازش string غیرفعال می‌کند. ارجاع‌های DICT:، از جمله حالت دارای پیشوند ESRI::، در همه نسخه‌های GDAL رد می‌شوند.

محافظت کامل این بخش به GDAL 3.9 یا بالاتر نیاز دارد و بررسی gis.W001 درباره نسخه پایین‌تر هشدار می‌دهد. Django برای ورودی غیرقابل‌اعتماد استفاده از SRID عددی را توصیه می‌کند؛ اگر در GDAL قدیمی‌تر استفاده از string ضروری باشد، باید مقدار با allow list مقایسه شود.

نکته کلیدی

Django را به نسخه اصلاح‌شده ارتقا بده و اگر SpatialReference داری، GDAL 3.9 یا بالاتر را بررسی کن. برای ورودی غیرقابل‌اعتماد SRID عددی را ترجیح بده؛ در GDAL قدیمی‌تر، string ضروری را با allow list مقایسه کن.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۳)