Django 1.3.4 release notes¶
17 oktober 2012
Detta är den fjärde utgåvan i Django 1.3-serien.
Förgiftning av värdhuvud¶
Vissa delar av Django - oberoende av slutanvändarskrivna applikationer - använder sig av fullständiga webbadresser, inklusive domännamn, som genereras från HTTP Host-headern. Vissa attacker mot detta är bortom Djangos förmåga att kontrollera och kräver att webbservern är korrekt konfigurerad; Djangos dokumentation har under en tid innehållit anteckningar som ger användarna råd om sådan konfiguration.
Djangos egen inbyggda parsning av Host-headern är dock fortfarande sårbar, vilket rapporterades till oss nyligen. Host-header-parsningen i Django 1.3.3 och Django 1.4.1 - specifikt django.http.HttpRequest.get_host()
- hanterade felaktigt information om användarnamn/lösenord i headern. Således skulle till exempel följande Host-header accepteras av Django när det körs på validsite.com
:
Host: validsite.com:random@evilsite.com
Med hjälp av detta kan en angripare få delar av Django - särskilt mekanismen för återställning av lösenord - att generera och visa godtyckliga webbadresser för användare.
För att åtgärda detta har parsningen i HttpRequest.get_host()
ändrats; Host-rubriker som innehåller potentiellt farligt innehåll (t.ex. par av användarnamn/lösenord) ger nu upphov till undantaget django.core.exceptions.SuspiciousOperation
.
Detaljer om detta problem publicerades ursprungligen online som en ”säkerhetsrådgivning”.