CVE-2026-15337
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 42 - wyżej niż 42% wszystkich znanych CVE
Streszczenie
W Django 5.2 przed 5.2.17 i 6.0 przed 6.0.8 wykryto podatność na odmowę usługi w funkcji django.utils.translation.check_for_language(), która przy wielu różnych, bardzo długich kodach językowych może prowadzić do nadmiernego zużycia pamięci. Kody te mogą trafiać do funkcji przez widok django.views.i18n.set_language(), który nie jest domyślnie routowany. Zużycie pamięci jest ograniczone przez ustawienie DATA_UPLOAD_MAX_MEMORY_SIZE (domyślnie 2,5 MB) i stałą maksymalną liczbę wpisów w pamięci podręcznej.
Ocena ryzyka
Ryzyko polega na możliwości przeprowadzenia ataku DoS na aplikacje Django, co może prowadzić do wyczerpania pamięci i niedostępności usług.
Rekomendacja
Zaleca się aktualizację Django do wersji 5.2.17 lub 6.0.8 (lub nowszej) oraz monitorowanie zużycia pamięci.
Inne podatności w Django
Zobacz wszystkie- CVE-2016-9014Wysokie
Django w wersjach przed 1.8.16, 1.9.11 i 1.10.3, gdy ustawienie DEBUG jest włączone, umożliwia zdalnym atakującym przeprowadzenie ataków DNS rebinding z powodu braku walidacji nagłówka HTTP Host względem ustawienia ALLOWED_HOSTS.
- CVE-2016-7401Wysokie
Kod parsowania ciasteczek w Django przed wersją 1.8.15 oraz 1.9.x przed wersją 1.9.10, używany na stronie z Google Analytics, pozwala zdalnym atakującym na obejście zamierzonego mechanizmu ochrony CSRF poprzez ustawienie dowolnych ciasteczek.
- CVE-2016-2512Wysokie
Funkcja utils.http.is_safe_url w Django przed wersją 1.8.10 oraz 1.9.x przed wersją 1.9.3 umożliwia zdalnym atakującym przekierowywanie użytkowników na dowolne strony internetowe. Może to prowadzić do ataków phishingowych lub potencjalnie do ataków typu cross-site scripting (XSS) za pomocą URL zawierającego podstawową autoryzację.
- CVE-2015-5143Wysokie
Wersje Django przed 1.4.21, 1.5.x do 1.6.x, 1.7.x przed 1.7.9 oraz 1.8.x przed 1.8.3 są podatne na atak typu denial of service. Atakujący mogą wykorzystać unikalne klucze sesji do zapełnienia pamięci przechowującej sesje.
- CVE-2014-0474Wysokie
W wersjach Django przed 1.4.11, 1.5.x przed 1.5.6, 1.6.x przed 1.6.3 oraz 1.7.x przed 1.7 beta 2 klasy pól modelu FilePathField, GenericIPAddressField i IPAddressField nie wykonują prawidłowej konwersji typów. To może umożliwić zdalnym atakującym wywołanie nieokreślonego wpływu związane z 'typowaniem MySQL'.
- CVE-2026-5766Średnie
W wersjach 6.0 przed 6.0.5 oraz 5.2 przed 5.2.14 odkryto problem związany z żądaniami ASGI, które mogą omijać limit `FILE_UPLOAD_MAX_MEMORY_SIZE` w przypadku brakującego lub niedostatecznego nagłówka `Content-Length`. Może to prowadzić do załadowania dużych plików do pamięci, co skutkuje degradacją usługi.
- CVE-2026-35192Niskie
W wersjach 6.0 przed 6.0.5 oraz 5.2 przed 5.2.14 zidentyfikowano problem związany z nagłówkami odpowiedzi, które nie różnią się w przypadku ciasteczek, jeśli sesja nie została zmodyfikowana, a `SESSION_SAVE_EVERY_REQUEST` jest ustawione na `True`. Zdalny atakujący może przejąć sesję użytkownika po odwiedzeniu przez niego publicznej strony z pamięci podręcznej.
- CVE-2026-1207Średnie
W Django 6.0 przed 6.0.2, 5.2 przed 5.2.11 oraz 4.2 przed 4.2.28 odkryto podatność na iniekcję SQL w operacjach rasterowych na polu RasterField (dostępnym tylko z PostGIS). Atakujący zdalnie może wstrzyknąć kod SQL poprzez parametr indeksu pasma (band index).
- CVE-2016-9013Krytyczne
Django w wersjach 1.8.x przed 1.8.16, 1.9.x przed 1.9.11 oraz 1.10.x przed 1.10.3 używa twardo zakodowanego hasła dla tymczasowego użytkownika bazy danych, co ułatwia zdalnym atakującym uzyskanie dostępu do serwera bazy danych.
- CVE-2026-15920Średnie
W Django 5.2 przed 5.2.17 i 6.0 przed 6.0.8 odkryto problem: funkcja django.contrib.admin.utils.display_for_field() renderuje wartości URLField jako klikalne linki w panelu administracyjnym bez walidacji URL. Wartość zapisana z niebezpiecznym schematem jest wyświetlana jako link na stronach changelist i tylko do odczytu, co umożliwia atak XSS na pracowników, którzy klikną link. Eksploatacja wymaga, aby niebezpieczna wartość była już zapisana w bazie danych. Walidacja URLField przez ModelForm lub panel administracyjny odrzuca niebezpieczne schematy, więc dotyczy to aplikacji, które zapisują dane URLField bez uruchamiania walidacji modelu, na przykład przez bezpośrednie zapisy queryset, deserializację lub masowy import niezaufanych danych.
Oryginalny opis (angielski, źródło NVD)
An issue was discovered in Django 5.2 before 5.2.17 and 6.0 before 6.0.8. `django.utils.translation.check_for_language()` is subject to a potential denial-of-service attack when given many distinct, very long language codes, which are retained as keys in an in-memory cache and consume process memory. Such codes reach the function through the `django.views.i18n.set_language()` view, which is not routed by default. The consumed memory is bounded, since request data is limited by the `DATA_UPLOAD_MAX_MEMORY_SIZE` setting (default 2.5 MB) and the cache holds a fixed maximum number of entries. Earlier, unsupported Django series (such as 5.1.x, 5.0.x, and 4.2.x) were not evaluated and may also be affected. Django would like to thank Jaeyoung Jang for reporting this issue.

