Разработчики Django выпустили обновления 6.0.8 и 5.2.17, закрывающие четыре уязвимости. Наиболее серьёзная из них, связанная с модулем GeoDjango, позволяет злоумышленнику записывать файлы на сервер, а в некоторых случаях - добиться выполнения произвольного кода. Кроме того, исправлены две проблемы, ведущие к отказу в обслуживании, и одна, допускающая межсайтовый скриптинг (XSS) в административной панели.
Детали уязвимостей
Уязвимость с идентификатором CVE-2026-15307 получила уровень опасности high. Она затрагивает пространственные запросы GeoDjango - модуля для работы с географической информацией. Проблема в том, что значения, переданные в таких запросах, могли интерпретироваться как растровые данные. Если в системе установлен соответствующий драйвер, это позволяло процессу Django записать файл на диск или инициировать сетевой запрос от имени сервера. В определённых конфигурациях запись файла могла привести к выполнению кода.
Особенность в том, что атака была доступна через стандартную панель администратора. Сотрудник с правом просмотра любой модели, содержащей пространственное поле, мог отправить специально сформированные параметры фильтрации в список записей. Теперь Django отклоняет словари и строки, которые не являются корректными геометрическими объектами GEOSGeometry, при использовании в пространственных запросах. Это изменение обратно несовместимо: приложения, полагавшиеся на передачу сериализованных словарей, потребуют доработки. Сами поля моделей продолжают принимать такие значения, но разработчикам рекомендуется проверять любые поступающие извне данные перед обработкой.
Вторая проблема, CVE-2026-15337, имеет низкий уровень опасности. Она связана с функцией проверки языковых кодов. При обработке большого количества уникальных и очень длинных кодов процесс потреблял избыточный объём памяти, что потенциально приводило к отказу в обслуживании. Такие значения могли передаваться через POST-запросы на конечную точку set_language(), которая не активна по умолчанию. Разработчики отмечают, что ограничения на размер запроса и лимиты кэша снижали практический риск, однако после исправления коды длиннее 500 символов отклоняются до обращения к кэшу.
Ещё одна уязвимость, CVE-2026-15830, оценивается как moderate. Она касается обработки глубоко вложенных объектов GEOMETRYCOLLECTION библиотекой GEOS, которая используется для работы с геометрическими данными. Вредоносная геометрия могла вызвать аварийное завершение процесса из-за ошибки сегментации. Теперь введены ограничения: не более 198 уровней вложенности для текстового формата WKT и не более 198 объектов в сумме для бинарного формата WKB. Администраторы могут настроить эти значения с помощью нового аргумента max_geom_collections. Формат GeoJSON не затронут, поскольку обрабатывается через GDAL, а не через GEOS.
Последняя уязвимость, CVE-2026-15920, также имеет уровень moderate. Она связана с отображением значений URLField в административной панели. Django выводил такие значения как кликабельные ссылки в списках записей и в полях, доступных только для чтения, не проверяя схему URL. Это позволяло сохранить в базе вредоносную ссылку опасной схемы, которая затем отображалась как активная. Теперь перед созданием ссылки значение проходит проверку с помощью URLValidator, а невалидные адреса отображаются обычным текстом.
Затронуты все поддерживаемые ветки: Django 6.0 и 5.2, а также главная ветка и кандидат на выпуск 6.1. Исправления уже внесены во все перечисленные ветки. Пользователям рекомендуется как можно скорее обновиться до версий 6.0.8 или 5.2.17. Особое внимание стоит уделить организациям, использующим GeoDjango и пространственные запросы: администраторам необходимо проверить, какие модели с пространственными полями доступны сотрудникам через админку, и ограничить доступ к интерфейсам управления при необходимости.
Изменения, внесённые для устранения CVE-2026-15307, могут нарушить работу приложений, которые использовали словари в пространственных запросах. Разработчикам следует убедиться, что все данные, передаваемые в такие запросы, проходят валидацию. В остальных случаях обновление не требует дополнительных действий со стороны администраторов, однако общий доступ к админ-панели стоит пересмотреть, поскольку часть уязвимостей эксплуатировалась именно через неё.
Выпущенные релизы не только закрывают конкретные проблемы, но и вводят новые ограничения, которые стоит учитывать при дальнейшей разработке. В частности, ужесточение правил для пространственных запросов отражает общий тренд на усиление контроля над вводом данных в геоинформационных системах. Пользователям, работающим с WKT и WKB, полезно заранее проверить совместимость своих данных с новыми лимитами вложенности.
Ссылки