Django: atualizar a dependência também exige testar parsing, GIS e autorização
As versões de segurança corrigem DoS, SSRF em raster e abuso de formsets. A integração GIS traz mudança incompatível.
O Django publicou as versões de segurança 6.1.2, 6.0.9 e 5.2.18 e recomenda atualizar o quanto antes.[4] O boletim reúne problemas de consumo de recursos, parsing de cabeçalhos, consultas GIS e autorização em model formsets.[4] A decisão não deveria parar em trocar o número no arquivo de dependências: alguns comportamentos precisam de regressão específica.
O que muda para quem desenvolve
Na CVE-2026-77050, códigos de idioma numerosos e muito longos podiam ocupar o cache e consumir memória excessiva; a correção limita os códigos antes da consulta ao cache.[4] A lição de projeto é estabelecer o limite antes de criar estado, não depois que a entrada já consumiu o recurso.
A CVE-2026-84429 envolve complexidade quadrática em parâmetros de cabeçalhos com muitos separadores.[4] O caminho podia ser alcançado sem autenticação por cabeçalhos como Accept e Content-Type, e o tamanho combinado de cabeçalhos repetidos merecia atenção.[4] O parser passou a usar email.message.Message, com possíveis diferenças para valores incomuns ou malformados.[4]
No GIS, bytes de raster podiam conter um documento VRT que apontasse para uma origem externa e provocasse requisições com a identidade do processo Django.[4] A correção exige encapsular rasters em bytes explicitamente em GDALRaster, introduzindo uma mudança incompatível com usos anteriores.[4] Encapsular não substitui validar entrada não confiável.[4]
A CVE-2026-87975 afeta model formsets quando a chave primária é editável: um POST forjado podia excluir objetos fora do queryset limitador ou criar registros em um conjunto configurado apenas para edição.[4] Modelos com a chave padrão BigAutoField não são afetados por esse problema.[4]
Como aplicar
Faça o upgrade da linha suportada usada pelo projeto e proponha quatro grupos de testes, escolhidos pelo código realmente presente:
- Idiomas: entradas longas e variadas, observando resposta e crescimento de memória.
- Cabeçalhos: parâmetros entre aspas, separadores e campos repetidos, comparando interpretação e custo.
- GIS: chamadas que recebem bytes, distinguindo raster de geometria e verificando a política de acesso externo.
- Formsets: tentativa de editar ou excluir um objeto fora do conjunto permitido e de criar um registro no modo apenas edição.
Para autorização, escreva primeiro a expectativa de negócio: qual usuário pode agir sobre qual objeto? Só depois associe essa expectativa ao queryset. O teste deve conferir que nenhum objeto não autorizado foi alterado, não apenas que a resposta HTTP parece aceitável.
No GIS, use arquivos sintéticos e destinos controlados. Não transforme a investigação em requisições contra redes de terceiros ou serviços sensíveis.
Cuidados e limites
Os problemas têm severidades e superfícies diferentes: a falha de idioma é baixa, enquanto as de cabeçalhos, raster e formsets são moderadas.[4] Isso ajuda a organizar a triagem, mas não justifica ignorar a atualização recomendada.
As regressões propostas aqui não foram executadas. Elas são um roteiro para validar a aplicação depois do patch. Especialmente no parser e no GIS, confirme tanto o bloqueio do caso indevido quanto a continuidade dos usos legítimos.
Fonte
[4] Fonte: Django Weblog. Data/hora no feed: 06/10/2026 às 10:00:00.