Katalog CVE

CVE-2026-15920

ŚrednieCVSS 6.1
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.30%

Percentyl 23 - wyżej niż 23% 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
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