Django: обмеження довжини рядка під час перевірки IPv6

2 хв читання

14 січня 2025 року Django випустила оновлення безпеки, що обмежує довжину рядка до 39 символів для перевірки IPv6. Це виправлення усуває потенційну вразливість до відмови в обслуговуванні (DoS) у функціях clean_ipv6_address, is_valid_ipv6_address та полі GenericIPAddressField.

Проблема виникала через відсутність обмеження довжини рядка при перевірці IPv6 у django.forms.GenericIPAddressField та пов'язаних приватних функціях. Обробка надзвичайно довгих рядків призводила до вичерпання ресурсів. Важливо зазначити, що поля django.db.models.GenericIPAddressField, які використовуються на рівні моделей бази даних, не були вразливими до цієї атаки.

Рекомендації:

  • Оновіть версію Django до випуску, що містить виправлення CVE-2024-56374.
  • Проведіть аудит форм, які приймають IP-адреси, та переконайтеся, що вони використовують оновлені компоненти валідації.
  • Розрізняйте використання django.forms.GenericIPAddressField (де потрібна валідація довжини) та django.db.models.GenericIPAddressField (де ризик відсутній).

Запобігання DoS-атакам через валідацію IPv6-адрес у Django

Ця вразливість створює ризик відмови в обслуговуванні (DoS) для веб-додатків на базі Django, які обробляють IPv6-адреси через форми. Хоча моделі бази даних залишаються в безпеці, вразливі поля форм можуть стати вектором атаки, що призводить до вичерпання системних ресурсів. Для ІТ-менеджерів це сигнал переглянути стабільність мережевих сервісів, які приймають вхідні дані від користувачів.

Практичний крок: Оновіть Django до версії з виправленням CVE-2024-56374. Замовте у Softline аудит вашого коду та форм, щоб виявити потенційно вразливі компоненти та забезпечити коректну валідацію мережевих даних у ваших проектах.

Використані джерела

  1. djangoproject.com (djangoproject.com)