Podatności Django
24 znanych podatności CVE w Django, przetłumaczonych i ocenionych.
- 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-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-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-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.
- CVE-2026-15830Średnie
W Django 5.2 przed 5.2.17 i 6.0 przed 6.0.8 wykryto problem w GeoDjango, gdzie parsowanie głęboko zagnieżdżonych obiektów GEOMETRYCOLLECTION (w formacie WKT, WKB lub hex-WKB) może prowadzić do nieograniczonej rekurencji i błędu segmentacji w bibliotece GEOS, co może powodować odmowę usługi. Dotyczy to również wyszukiwań pól przestrzennych i pola formularza GeometryField.
- CVE-2026-15337Średnie
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.
- CVE-2026-15307Wysokie
W Django 5.2 przed 5.2.17 i 6.0 przed 6.0.8 odkryto problem w zapytaniach przestrzennych GeoDjango. Wartości po prawej stronie są optymistycznie parsowane jako raster przez konstruktor GDALRaster, co pozwala na zapis pliku o wybranej nazwie i zawartości lub wykonanie żądania sieciowego. Może to prowadzić do zdalnego wykonania kodu, jeśli plik zostanie zapisany w lokalizacji importowanej przez aplikację.
- CVE-2026-53878Średnie
W Django 6.0 przed 6.0.7 i 5.2 przed 5.2.16 wykryto podatność w walidatorze `DomainNameValidator`, który nie blokuje znaków nowej linii w nazwach domen. Jeśli aplikacja używa takich wartości w odpowiedziach HTTP, może dojść do wstrzyknięcia nagłówków, choć samo Django jest chronione przez `HttpResponse`.
- CVE-2026-53877Średnie
W Django 6.0 przed 6.0.7 i 5.2 przed 5.2.16 wykryto podatność w `django.contrib.gis.gdal.GDALRaster`. Podczas konstruowania obiektu z bajtów dochodzi do odczytu poza buforem pamięci, co może ujawnić sąsiednią pamięć lub spowodować degradację usługi przez błąd segmentacji przy dostępie do właściwości `vsi_buffer`.
- CVE-2026-48588Niskie
W Django 6.0 przed 6.0.7 i 5.2 przed 5.2.16 wykryto podatność w `UpdateCacheMiddleware` i dekoratorze `cache_page()`. Mechanizmy te buforują odpowiedzi zależne od ciasteczek nawet wtedy, gdy żądanie przychodzące zawiera niezwiązane ciasteczka, co umożliwia zdalnemu atakującemu odczytanie prywatnych danych ze współdzielonej pamięci podręcznej.
- CVE-2026-8404Niskie
W Django 5.2 przed 5.2.15 i 6.0 przed 6.0.6, `django.middleware.cache.UpdateCacheMiddleware` nie porównuje dyrektyw `Cache-Control` w odpowiedziach w sposób niewrażliwy na wielkość liter. Zdalny atakujący może odczytać odpowiedzi, które zostały nieprawidłowo zapisane w pamięci podręcznej, ponieważ ich dyrektywy `Cache-Control` używały wielkich lub mieszanych liter.
- CVE-2026-7666Niskie
W Django (wersje 6.0 przed 6.0.6 i 5.2 przed 5.2.15) `EmailBackend` nie zapobiega ponownemu użyciu częściowo zainicjowanego połączenia po nieudanym uzgadnianiu STARTTLS, gdy `fail_silently=True`. Pozwala to atakującym w sieci na odczyt treści e-maili w postaci czystego tekstu.
- CVE-2026-6873Niskie
Podatność w Django (wersje 6.0 przed 6.0.6 i 5.2 przed 5.2.15) w funkcji `get_signed_cookie` powoduje, że atakujący może użyć podpisanego ciasteczka w innym kontekście niż zamierzony, poprzez manipulację nazwą ciasteczka i argumentem salt. Wynika to z nieiniektywnego wyprowadzania soli.
- CVE-2026-48587Niskie
W Django 5.2 przed 5.2.15 i 6.0 przed 6.0.6, `django.utils.cache.has_vary_header()` nie usuwa białych znaków z początku i końca wartości nagłówka `Vary` przed porównaniem. Umożliwia to zdalnym atakującym odczytanie odpowiedzi z pamięci podręcznej poprzez żądania do URL-i, których odpowiedzi zawierają wartości nagłówka Vary z białymi znakami.
- CVE-2026-35193Niskie
W Django 5.2 przed 5.2.15 i 6.0 przed 6.0.6, `django.middleware.cache.UpdateCacheMiddleware` nie dodaje nagłówka `Authorization` do nagłówka odpowiedzi `Vary` dla żądań z tym nagłówkiem bez `Cache-Control: public`. Umożliwia to zdalnym atakującym odczytanie prywatnych odpowiedzi z pamięci podręcznej poprzez nieuwierzytelnione żądania do tego samego URL-a.
- CVE-2026-25673Wysokie
W Django 6.0 przed 6.0.3, 5.2 przed 5.2.12 i 4.2 przed 4.2.29 funkcja `URLField.to_python()` wywołuje `urllib.parse.urlsplit()`, która na Windows wykonuje normalizację NFKC. Dla niektórych znaków Unicode jest ona nieproporcjonalnie wolna, co umożliwia zdalnemu atakującemu przeprowadzenie ataku typu odmowa usługi (DoS) poprzez przesłanie dużych URL-i zawierających te znaki.
- CVE-2026-1312Średnie
W Django wykryto podatność na iniekcję SQL w metodzie `.QuerySet.order_by()`. Problem występuje, gdy alias kolumny zawiera kropkę i jest używany z `FilteredRelation` przy rozwijaniu słownika. Luka dotyczy wersji 6.0 przed 6.0.2, 5.2 przed 5.2.11 oraz 4.2 przed 4.2.28; starsze, niewspierane serie również mogą być podatne.
- CVE-2026-1287Średnie
W Django 6.0 przed 6.0.2, 5.2 przed 5.2.11 oraz 4.2 przed 4.2.28 wykryto podatność na wstrzykiwanie SQL w aliasach kolumn w `FilteredRelation`. Atakujący może wykorzystać kontrolowane znaki w słowniku przekazanym jako `**kwargs` do metod `annotate()`, `aggregate()`, `extra()`, `values()`, `values_list()` i `alias()`.

