Django: SQL-ін’єкція в псевдонімах стовпців FilteredRelation

1 хв читання

3 вересня 2025 року розробники Django повідомили про виправлення вразливості SQL-ін'єкції в псевдонімах стовпців FilteredRelation, яка виникала при використанні спеціально сформованих словників у методах QuerySet.annotate() або QuerySet.alias().

Проблема, оприлюднена 3 вересня 2025 року, пов'язана з компонентом FilteredRelation. Вразливість виникала при передачі спеціально сформованих словників через аргумент **kwargs у методах QuerySet.annotate() або QuerySet.alias(). Зловмисник міг використати псевдоніми стовпців для впровадження шкідливого SQL-коду, що створює ризик несанкціонованого доступу до даних або їх модифікації.

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

  • Перевірте кодову базу на предмет використання FilteredRelation з динамічними ключами в **kwargs.
  • Оновіть Django до версії, що містить виправлення цієї вразливості.
  • Проведіть аудит методів annotate() та alias(), щоб переконатися, що вхідні дані для псевдонімів стовпців належним чином валідуються та не походять безпосередньо від користувача.

Захист від SQL-ін'єкцій у FilteredRelation

Вразливість у Django, що дозволяє SQL-ін'єкції через `FilteredRelation`, створює пряму загрозу витоку або модифікації даних у ваших веб-додатках. Розробникам необхідно переглянути код, де використовуються методи анотації, щоб уникнути несанкціонованого доступу до бази даних через маніпуляції з псевдонімами стовпців.

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

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

  1. djangoproject.com (djangoproject.com)