1. ==========================
    
  2. Django 2.0.2 release notes
    
  3. ==========================
    
  4. 
    
  5. *February 1, 2018*
    
  6. 
    
  7. Django 2.0.2 fixes a security issue and several bugs in 2.0.1.
    
  8. 
    
  9. CVE-2018-6188: Information leakage in ``AuthenticationForm``
    
  10. ============================================================
    
  11. 
    
  12. A regression in Django 1.11.8 made
    
  13. :class:`~django.contrib.auth.forms.AuthenticationForm` run its
    
  14. ``confirm_login_allowed()`` method even if an incorrect password is entered.
    
  15. This can leak information about a user, depending on what messages
    
  16. ``confirm_login_allowed()`` raises. If ``confirm_login_allowed()`` isn't
    
  17. overridden, an attacker enter an arbitrary username and see if that user has
    
  18. been set to ``is_active=False``. If ``confirm_login_allowed()`` is overridden,
    
  19. more sensitive details could be leaked.
    
  20. 
    
  21. This issue is fixed with the caveat that ``AuthenticationForm`` can no longer
    
  22. raise the "This account is inactive." error if the authentication backend
    
  23. rejects inactive users (the default authentication backend, ``ModelBackend``,
    
  24. has done that since Django 1.10). This issue will be revisited for Django 2.1
    
  25. as a fix to address the caveat will likely be too invasive for inclusion in
    
  26. older versions.
    
  27. 
    
  28. Bugfixes
    
  29. ========
    
  30. 
    
  31. * Fixed hidden content at the bottom of the "The install worked successfully!"
    
  32.   page for some languages (:ticket:`28885`).
    
  33. 
    
  34. * Fixed incorrect foreign key nullification if a model has two foreign keys to
    
  35.   the same model and a target model is deleted (:ticket:`29016`).
    
  36. 
    
  37. * Fixed regression in the use of ``QuerySet.values_list(..., flat=True)``
    
  38.   followed by ``annotate()`` (:ticket:`29067`).
    
  39. 
    
  40. * Fixed a regression where a queryset that annotates with geometry objects
    
  41.   crashes (:ticket:`29054`).
    
  42. 
    
  43. * Fixed a regression where ``contrib.auth.authenticate()`` crashes if an
    
  44.   authentication backend doesn't accept ``request`` and a later one does
    
  45.   (:ticket:`29071`).
    
  46. 
    
  47. * Fixed a regression where ``makemigrations`` crashes if a migrations directory
    
  48.   doesn't have an ``__init__.py`` file (:ticket:`29091`).
    
  49. 
    
  50. * Fixed crash when entering an invalid uuid in ``ModelAdmin.raw_id_fields``
    
  51.   (:ticket:`29094`).