CVE-2026-15920
ŚrednieCVSS 6.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 29 - wyżej niż 29% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ryzyko obejmuje możliwość wykonania skryptów w kontekście pracownika administracyjnego, co może prowadzić do kradzieży sesji, nieautoryzowanych działań lub dalszej kompromitacji systemu.
Rekomendacja
Zaleca się aktualizację Django do wersji 5.2.17 lub 6.0.8. Należy również zapewnić, aby dane URLField były walidowane przed zapisem do bazy danych.
Inne podatności w Django
Zobacz wszystkie- CVE-2026-87975Średnie
W Django 6.1 przed 6.1.2, 6.0 przed 6.0.9 i 5.2 przed 5.2.18, funkcja django.forms.models.BaseModelFormSet.save_existing_objects() używa obecności klucza głównego na instancji formularza jako dowodu przynależności do queryset. Obiekt spoza queryset może zostać usunięty przez uwierzytelnionego użytkownika bez uprawnień do tego obiektu, poprzez sfałszowane dane formularza. Modele z domyślnym AutoField nie są dotknięte.
- CVE-2026-87890Średnie
W Django 6.1 przed 6.1.2, 6.0 przed 6.0.9 i 5.2 przed 5.2.18, niekompletna poprawka dla CVE-2026-15307 w przestrzennych zapytaniach (spatial lookups) pozwala atakującemu, który może dostarczyć wartości bytes, na spowodowanie, że proces Django wykona żądania sieciowe poprzez spreparowany dokument VRT odwołujący się do zewnętrznego źródła rastrowego.
- CVE-2026-84429Średnie
W Django 6.1 przed 6.1.2, 6.0 przed 6.0.9 i 5.2 przed 5.2.18, funkcja django.utils.http.parse_header_parameters() jest podatna na atak DoS z powodu kwadratowej złożoności czasowej podczas parsowania wartości z wieloma separatorami w cytowanym parametrze. Nieuwierzytelnione żądanie może dotrzeć do tego parsowania przez nagłówki takie jak Accept lub Content-Type.
- CVE-2026-77050Średnie
W Django 6.1 przed 6.1.2, 6.0 przed 6.0.9 i 5.2 przed 5.2.18, funkcja django.utils.translation.get_supported_language_variant() jest podatna na atak DoS podczas przetwarzania wielu różnych, bardzo długich kodów językowych, które są przechowywane jako klucze w pamięci podręcznej i zużywają pamięć procesu.
- 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-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).
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.contrib.admin.utils.display_for_field()` renders `URLField` values as clickable links in the admin without validating the URL. A value stored with an unsafe scheme is displayed as a link on changelist and read-only admin pages, which allows cross-site scripting against staff users who click the link. Exploitation requires the unsafe value to already be stored in the database. `URLField` validation through a `ModelForm` or the admin rejects unsafe schemes, so this affects applications that persist `URLField` data without running model validation, for example through direct queryset writes, deserialization, or bulk import of untrusted input. Django would like to thank Egor Saltykov for reporting this issue.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

