Django 2.0.3 release notes¶
6 mars 2018
Django 2.0.3 åtgärdar två säkerhetsproblem och flera buggar i 2.0.2. Dessutom har de senaste strängöversättningarna från Transifex införlivats.
CVE-2018-7536: Denial-of-service-möjlighet i mallfiltren urlize
och urlizetrunc
¶
Funktionen django.utils.html.urlize()
var extremt långsam när den utvärderade vissa inmatningar på grund av katastrofala sårbarheter för backtracking i två reguljära uttryck. Funktionen urlize()
används för att implementera mallfiltren urlize
och urlizetrunc
, som därmed var sårbara.
De problematiska reguljära uttrycken ersätts med parsinglogik som beter sig på liknande sätt.
CVE-2018-7537: Denial-of-service-möjlighet i mallfiltren truncatechars_html
och truncatewords_html
¶
Om django.utils.text.Truncator
’s chars()
och words()
metoder fick argumentet html=True
, var de extremt långsamma att utvärdera vissa indata på grund av en katastrofal backtracking-sårbarhet i ett reguljärt uttryck. Metoderna chars()
och words()
används för att implementera mallfiltren truncatechars_html
och truncatewords_html
, som därmed var sårbara.
Backtracking-problemet i det reguljära uttrycket är åtgärdat.
Buggrättningar¶
Åtgärdat en regression som orsakade att skivad
QuerySet.distinct().order_by()
följt avcount()
kraschade (#29108).Prioriterade inmatningsformaten för datetime och tid utan
%f
för den thailändska språkdräkten för att åtgärda widgeten för tidsväljare i admin som visade ”undefined” (#29109).Fixad krasch med
QuerySet.order_by(Exists(...))
(#29118).Gjorde
Q.deconstruct()
deterministisk med flera nyckelordsargument (#29125). Du kan behöva ändraQ
i befintliga migreringar, eller acceptera en autogenererad migrering.Åtgärdade en regression där ett
When()
-uttryck med ett listargument kraschade (#29166).Korrigerad krasch vid användning av ett
Window()
-uttryck i en underfråga (#29172).Fixade kraschen i
AbstractBaseUser.normalize_username()
om argumentetusername
inte är en sträng (#29176).