Django 4.2.6 versionsinformation¶
4 oktober 2023
Django 4.2.6 åtgärdar ett säkerhetsproblem med allvarlighetsgrad ”måttlig” och flera buggar i 4.2.5.
CVE-2023-43665: Denial-of-service-möjlighet i django.utils.text.Truncator¶
Efter korrigeringen för CVE 2019-14232 reviderades och förbättrades de reguljära uttryck som används i implementeringen av django.utils.text.Truncator’s chars() och words() metoder (med html=True). Dessa reguljära uttryck uppvisade dock fortfarande linjär backtracking-komplexitet, så när de fick en mycket lång, potentiellt missbildad HTML-ingång, skulle utvärderingen fortfarande vara långsam, vilket ledde till en potentiell sårbarhet för övergrepp i tjänsten.
Metoderna chars() och words() används för att implementera mallfiltren truncatechars_html och truncatewords_html, som därmed också var sårbara.
Den indata som behandlas av Truncator, när den arbetar i HTML-läge, har begränsats till de första fem miljoner tecknen för att undvika potentiella prestanda- och minnesproblem.
Buggrättningar¶
Fixade en regression i Django 4.2.5 där åsidosättande av de föråldrade inställningarna
DEFAULT_FILE_STORAGEochSTATICFILES_STORAGEi tester orsakade att huvudinställningenSTORAGESmuterades (#34821).Fixade en regression i Django 4.2 som orsakade onödig casting av strängbaserade fält (
CharField,EmailField,TextField,CICharField,CIEmailFieldochCITextField) som används med__isnull-uppslagningen på PostgreSQL. Som en konsekvens skulle index som använder ett__isnulluttryck eller villkor som skapats före Django 4.2 inte användas av frågeplaneraren, vilket leder till en prestandaregression (#34840).Du kan behöva återskapa sådana index som skapats i din databas med Django 4.2 till 4.2.5, eftersom de innehåller onödig
::textcasting. Hitta kandidatindex med den här frågan:SELECT indexname, indexdef FROM pg_indexes WHERE indexdef LIKE '%::text IS %NULL';