Угрозы

SQL-инъекция в Django (CVE-2026-1207): уязвимость в PostGIS и RasterField

Артем Сафонов
By Артем Сафонов , Аналитик угроз
SQL-инъекция в Django (CVE-2026-1207): уязвимость в PostGIS и RasterField
Image by Anonhaven

Разработчики популярного веб-фреймворка Django выпустили экстренные обновления безопасности, устраняющие серьезную уязвимость в модуле работы с геоданными. Уязвимость, получившая идентификатор CVE-2026-1207, позволяет злоумышленникам внедрять произвольные SQL-команды через запросы к полям типа RasterField. Проблема затрагивает проекты, использующие базу данных PostGIS, и актуальна для веток 4.2, 5.2 и новейшей 6.0.

Корень проблемы кроется в методе проверки растровых данных внутри движка GeoDjango. Разработчики допустили классическую ошибку при формировании SQL-запроса: параметры индексов каналов (band index) подставлялись в строку команды напрямую через форматирование, минуя механизмы параметризации. Это открыло возможность для атаки: передав специально сформированную строку, хакер может "вырваться" из синтаксиса функции ST_Intersects и выполнить собственный код на уровне базы данных.

Технически атака реализуется через манипуляцию параметрами поиска lookup. Если приложение принимает пользовательские данные и передает их в фильтры ORM без должной валидации, атакующий может отправить полезную нагрузку, которая закроет скобку легитимного запроса и добавит вредоносную часть. Результатом такой инъекции может стать полное компрометирование базы данных: от кражи конфиденциальной информации до её модификации или полного удаления.

Для защиты своих проектов необходимо как можно скорее обновить Django до безопасных версий 6.0.2, 5.2.11 или 4.2.28. Если немедленное обновление невозможно, в качестве временной меры рекомендуется внедрить жесткую валидацию входных данных, убедившись, что передаваемые значения индексов являются исключительно целыми числами, прежде чем они попадут в ORM-запросы.

CVE-2026-1207 Django GeoDjango PostGIS Python SQL-инъекция