Versionsinformation för Django 5.2.17¶
4 augusti 2026
Django 5.2.17 åtgärdar ett säkerhetsproblem med allvarlighetsgraden ”hög”, två säkerhetsproblem med allvarlighetsgraden ”måttlig” och ett säkerhetsproblem med allvarlighetsgraden ”låg” i 5.2.16.
CVE-2026-15307: Skrivning av filer på serversidan och begärandeförfalskning via spatiala uppslag¶
Spatiala uppslag tillät att uppslagsvärden av typen str och dict skickades till GDALRaster när de representerade raster. Beroende på rasterdrivrutinen kunde detta skriva en fil till disk (och i vissa fall möjliggöra fjärrkörning av kod) eller utfärda en nätverksbegäran som Django-processens användare. Eftersom adminens ändringslista tillåter filtrering via lookup_allowed() kunde felet nås av personalanvändare med visningsbehörighet till en registrerad modell som innehöll ett spatialt fält.
Följande typer är nu otillåtna i spatiala uppslag:
dictEn
strsom inte är en giltigGEOSGeometry, till exempel en serialiserad ordbok
Detta är en bakåtinkompatibel ändring. Som en påminnelse ska alla otillförlitliga användardata valideras före användning. Därför påverkas inte tilldelningar till modellfält och de accepterar fortfarande dessa indatatyper.
Vägledning om hur dessa typer fortsätter att användas i spatiala uppslag, om validering av otillförlitliga indata och ytterligare säkerhetsöverväganden finns i säkerhetsöverväganden för raster.
Problemet har allvarlighetsgraden ”hög” enligt Djangos säkerhetspolicy.
CVE-2026-15337: Möjlig överbelastningssårbarhet i check_for_language()¶
Funktionen check_for_language() var sårbar för en möjlig överbelastningsattack vid kontroll av många olika, mycket långa språkkoder. Varje kod användes som en nyckel i en cache i minnet och förbrukade processminne.
Värdet language når funktionen via vyn django.views.i18n.set_language() (som inte är aktiv som standard) från POST-data. Eftersom begärandedata begränsas av DATA_UPLOAD_MAX_MEMORY_SIZE och cachen är konfigurerad för att lagra högst ett visst antal poster var minnet som kunde förbrukas begränsat.
För att mildra denna sårbarhet avvisas nu språkkoder längre än 500 tecken före den cachelagrade uppslagningen.
Problemet har allvarlighetsgraden ”låg” enligt Djangos säkerhetspolicy.
CVE-2026-15830: Möjlig överbelastningssårbarhet via nästlade geometrisamlingar¶
GEOSGeometry var sårbar för en möjlig överbelastningsattack när den fick djupt nästlade GEOMETRYCOLLECTION-objekt, vilket ledde till segmenteringsfel i GEOS. Ett maximalt djup på 198 GEOMETRYCOLLECTIONs tillämpas nu för textformatet well-known text (WKT), och ett maximalt totalt antal på 198 GEOMETRYCOLLECTIONs (bredd och djup) tillämpas för well-known binary (WKB).
Uppslag mot spatiala fält och formulärfältet GeometryField påverkades också.
Gränsen kan anpassas med det nya argumentet max_geom_collections, som är tillgängligt för GEOSGeometry, formulärfältet och modellfältet. Gränsen tillämpas inte på GeoJSON-indata eftersom de tolkas av GDAL och inte påverkas.
Problemet har allvarlighetsgraden ”måttlig” enligt Djangos säkerhetspolicy.
CVE-2026-15920: Möjlig cross-site scripting via URLField-värden i admin¶
Admin renderar URLField-värden som klickbara länkar i vyer för ändringslistor och skrivskyddade fält. Länken skapades utan att värdet validerades som en säker URL, vilket gjorde att ett lagrat värde med ett potentiellt farligt schema renderades som en länk.
URLField-värden som visas via display_for_field valideras nu med URLValidator innan en länk renderas och visas som vanlig text om valideringen misslyckas.
Problemet har allvarlighetsgraden ”måttlig” enligt Djangos säkerhetspolicy.