Informacje o wydaniu Django 1.10.3

1 listopada 2016

Django 1.10.3 naprawia dwa problemy bezpieczeństwa i kilka błędów z wydania 1.10.2.

Użytkownik tworzony z zahard-code’owanym hasłem podczas uruchamiania testów na Oracle’u

Podczas uruchamiania testów z bazą danych Oracle, Django tworzy tymczasowego użytkownika bazy danych. W starszych wersjach, jeśli hasło nie zostało podane ręcznie w słowniku TEST ustawień bazy danych, używane jest hasło zahard-code’owane. To mogło pozwalać atakującemu z dostępem sieciowym do serwera bazy danych na połączenie.

Ten użytkownik jest zazwyczaj usuwany po tym, jak zestaw testów skończy się wykonywać, lecz nie gdy używa się opcji manage.py test --keepdb lub kiedy użytkownik ma aktywną sesję (taką jak połączenie atakującego).

Losowo generowane hasło jest teraz używane przy każdym uruchomieniu testu.

Słabość rebindingu DNS, gdy DEBUG=True

Older versions of Django don’t validate the Host header against settings.ALLOWED_HOSTS when settings.DEBUG=True. This makes them vulnerable to a DNS rebinding attack.

Jako że Django nie dostarcza modułu, który zezwala na zdalne wykonywanie kodu, jest to co najmniej wektor cross-site scriptingu, który może być całkiem poważny, jeśli deweloperzy ładują kopię produkcyjnej bazy danych w dewelopmencie lub łączą się do jakiś produkcyjnych usług, które na przykład nie mają deweloperskich instancji. Jeśli projekt używa pakietu takiego jak django-debug-toolbar, wtedy atakujący mógł wykonać własny SQL, który mógł być szczególnie zły, jeśli deweloperzy łączą się do bazy danych kontem superusera.

settings.ALLOWED_HOSTS jest teraz walidowane bez względu na DEBUG. Dla wygody, jeśli ALLOWED_HOSTS jest puste i DEBUG=True, następujące wariacje localhosta są dopuszczone ['localhost', '127.0.0.1', '::1']. Jeśli twoje lokalne ustawienia mają twoją produkcyjną wartość ALLOWED_HOSTS, musisz teraz ją ominąć, aby uzyskać wypisane wartości fallback.

Poprawki błędów

  • Można sprawdzać przynależność własności User.is_authenticated i User.is_anonymous w obiektach klasy set (#27309).
  • Naprawiona wydajnościowa regresja przy uruchamianiu migrate w projektach z operacjami RenameModel (#27279).
  • Dodane model_name do wywołań allow_migrate() w makemigrations (#27200).
  • Sprawiono, że widok JavaScriptCatalog bierze pod uwagę argument packages; wcześniej go ignorował (#27374).
  • Naprawiono QuerySet.bulk_create() dla PostgreSQL-a, kiedy liczba obiektów jest o jeden większa od batch_size (#27385).
  • Nie dopuszczamy użycia w i18n_patterns() zbyt dużej ilości URL-a jako języka, aby naprawić przypadek użycia dla prefix_default_language=False (#27063).
  • Zastąpiono potencjalnie niepoprawne przekierowanie z SessionMiddleware, kiedy sesja jest niszczona we współbieżnym żądaniu, przez SuspiciousOperation, aby sygnalizować, że żądanie nie może być ukończone (#27363).
Back to Top