Poprawki bezpieczeństwa dla Django 1.3 i 1.4

Oficjalna strona Stowarzyszenia Polska Grupa Użytkowników Pythona

Niedawno światło dzienne ujrzały dwie wersje Django - 1.3.2 i 1.4.1 mające na celu poprawę błędów bezpieczeństwa zgłaszanych przez społeczność.

Główne obszary, w których dokonano aktualizacji:

  • Cros-site-scripting w widokach uwierzytelniających; Widoki login() i logout() dostarczane wraz z Django używają popularnego przekierowania "POST-GET" - konfigurowalnego parametru, który może być wykorzystany do określenia docelowej lokalizacji po poprawnym zalogowaniu/wylogowaniu. W poprzednich wersjach widoki te dokonywały tylko prostego sprawdzenia, czy docelowa lokalizacja nie znajduje się w innej domenie. Walidacja nie sprawdzała protokołu docelowego adresu www, co pozwalało atakującemu spreparowanie protokołu URL wykonującego JavaScript.
  • Denial-of-service w funkcjach walidujących obrazy; Formularze Django dostarczają typy pól umożliwiające przesyłanie plików, wliczając django.forms.ImageField do przesyłania obrazów. Pole to posiada pewne domyślne opcje weryfikacji przesyłanych danych. Jednym z elementów standardowej walidacji jest użycie PIL-a do wykrycie czy przesyłana grafika jest poprawna. Atakujący może łatwo wykorzystać taką walidację do przygotowania grafiki (o przeciętnym rozmiarze pliku), która przy dekompresji pochłania ogromne ilości zasobów, co może prowadzić do ataku Denial-Of-Service.
  • Denial-of-service w funkcji get_image_dimensions(); Django dostarcza wielu funkcji ułatwiających obróbkę/obsługę obrazów. Jedną z takich funkcji jest get_image_dimensions(), która pozwala na określenie wymiarów obrazu. Obecnie proces polega na przekazaniu 1024 bajtowych bloków do PIL-a, który na tej podstawie stara się określić rozmiar. W większości przypadków nie trzeba zbyt wielu bloków do określenia rozmiarów, jednakże dla niektórych plików (np. dużych TIFF) proces ten może być bardzo czasochłonny - czasem zbyt czasochłonny, co może prowadzić do ataku Denial-Of-Service.

Sposób aktualizacji.

Poprawki zostały wprowadzone do gałęzi master dla Django 1.3 i 1.4 oraz gałęzi development. Mogą być pobrane bezpośrednio z changesetów:

Programiści pracujący z Pythonem 2.5+, mogą skorzystać z bezpośrednich changesetów:

Dodał: Przemysław Kukulski, Kategorie: News
Data: 2012-08-03 23:20:55


Copyright © 2007-2014 by Polish Python Coders Group
Język programowania Python  Open Source

Powered by Pigmej CMSv.0.2
Hosted by DmTEC