---
title: "Três falhas no Pillow: atualize para o 13.0.0"
description: "Três falhas no Pillow, a biblioteca de imagens do Python, podem levar à execução de código a partir de uma imagem. Veja quem está exposto e como corrigir."
canonical: https://wmj.com.br/insights/tres-falhas-no-pillow-atualize-para-o-13-0-0/
date: 2026-10-20
---

# Três falhas no Pillow: atualize para o 13.0.0

Três falhas no Pillow, a biblioteca de imagens do Python, podem levar à execução de código a partir de uma imagem. Veja quem está exposto e como corrigir.

**Em resumo:** Em 19 de outubro de 2026, três falhas no Pillow, a biblioteca de imagens mais usada no Python, ganharam nota 9.2 de 10: a CVE-2026-112900, a CVE-2026-112393 e a CVE-2026-112403. Em certas condições, uma imagem preparada estoura a memória do processo ou executa código no servidor. As três só estão corrigidas no Pillow 13.0.0, lançado em 16 de outubro, que exige Python 3.11 ou mais novo. Não há correção na linha 12.

## O que aconteceu

Na sexta-feira, 16 de outubro, o Pillow lançou a versão 13.0.0. No sábado, publicou os avisos de segurança: são mais de 40 falhas corrigidas, a maioria de gravidade média. Na segunda-feira, três delas receberam número de CVE com nota 9.2 no CVSS, a escala usada para medir a gravidade de vulnerabilidades.

A gravidade muda conforme a fonte. Os registros CVE dão 9.2 às três. Nas notas da versão, o próprio Pillow classifica a do JPEG como crítica, a do TIFF como alta e a do EPS como média, porque cada uma depende de um uso específico da biblioteca. Os avisos trazem código de prova de conceito, o que encurta o caminho de quem quer atacar. Até 20 de outubro, não havia relato de ataques.

O Pillow está por trás de quase todo tratamento de imagem em Python: miniatura de foto enviada, o `ImageField` do Django, geração de PDF com imagens. Se o seu sistema recebe imagens de fora, vale conferir.

## As três falhas

### Imagem EPS e o Ghostscript (CVE-2026-112900)

Para abrir arquivos EPS, um formato antigo de imagem vetorial, o Pillow chama o Ghostscript, um programa externo. Até a versão 12.3.0, ele passava o nome do arquivo ao Ghostscript sem tratamento. Um nome que começa com hífen vira uma opção do programa, e um nome que começa com arroba vira uma lista de opções lida de outro arquivo. Por esse caminho, o atacante roda comandos no servidor, mesmo com o modo seguro do Ghostscript (`-dSAFER`) ligado.

O ataque exige três coisas: o Ghostscript instalado no servidor, um arquivo com conteúdo EPS (o Pillow reconhece o formato pelo conteúdo, não pela extensão) e um nome de arquivo escolhido pelo atacante. Sistema que grava o upload com um nome gerado por ele mesmo não fica exposto por esse caminho.

### TIFF salvo em memória (CVE-2026-112393)

Ao salvar uma imagem TIFF comprimida num destino em memória, como um `io.BytesIO` ou o corpo de uma resposta HTTP, o Pillow podia gravar além do espaço reservado. Uma imagem de origem preparada, com metadados de tamanho calculado, provoca o estouro. Mesmo sem imagem preparada, qualquer TIFF comprimido acima de 64 KiB salvo assim vaza pedaços antigos da memória do processo. Segundo o aviso, salvar num arquivo em disco não passa pelo trecho com defeito.

### JPEG em miniatura (CVE-2026-112403)

Um JPEG sem perdas (lossless, um tipo raro, mas válido) fazia o decodificador escrever linhas mais largas que o espaço reservado quando a aplicação pedia uma versão reduzida da imagem, com `draft()` ou `thumbnail()`. É o caso típico de quem gera miniatura de foto enviada. A falha depende da libjpeg-turbo 3.0 ou mais nova, a que vem embutida nos pacotes oficiais do Pillow instalados pelo pip.

## Quem está exposto

Toda versão do Pillow anterior à 13.0.0 tem as três falhas no código. O risco real está nos sistemas que abrem imagens vindas de fora: upload de usuários, imagens baixadas de outros sites, anexos de e-mail. Quem só processa imagens geradas pela própria equipe tem pouco a temer, mas deve atualizar do mesmo jeito.

## Como verificar

Descubra a versão no mesmo ambiente em que a aplicação roda (o ambiente virtual, ou dentro do container):

```bash
python -m pip show pillow
```

Para saber se o Ghostscript está instalado no servidor, rode `command -v gs`. Se nada aparecer, a falha do EPS não tem como acontecer ali.

Se você usa o pacote da distribuição (`python3-pil` no Debian e no Ubuntu), a correção depende dela. Até 20 de outubro, só o Debian unstable tinha recebido a versão 13.0.0.

## O que fazer

- **Atualize para o 13.0.0.** No ambiente da aplicação, rode `python -m pip install --upgrade "pillow>=13.0.0"`, atualize o arquivo de dependências (`requirements.txt`, `poetry.lock` ou `uv.lock`), reconstrua as imagens de container e reinicie o serviço.
- **Confira o que a versão quebra.** É uma versão principal: exige Python 3.11 ou mais novo e remove algumas funções, como `Image._show` e `ExifTags.IFD.Makernote` (o substituto é `MakerNote`). Rode os testes antes de subir.
- **Se você está preso ao Python 3.10,** não há correção para você. O Python 3.10 chegou ao fim do suporte no começo de outubro, e o Pillow parou de suportá-lo. Use as medidas abaixo enquanto planeja a troca de versão.

Se não dá para atualizar hoje:

- **Miniaturas de JPEG:** o aviso oficial indica chamar `img.load()` antes de `thumbnail()`, ou usar `thumbnail(tamanho, reducing_gap=None)`. Restringir os formatos aceitos a JPEG não protege dessa falha.
- **EPS:** se a aplicação não precisa de EPS, tire o Ghostscript do servidor que processa upload, ou desligue o uso dele no Pillow com `EpsImagePlugin.gs_binary = False`. E nunca passe ao `Image.open()` um nome de arquivo escolhido pelo usuário.
- **Formatos em geral:** aceite só os formatos de que precisa, com `Image.open(arquivo, formats=["JPEG", "PNG"])`, como recomenda o manual de segurança do Pillow. Se puder, processe as imagens num processo separado, com permissões mínimas.

## Próximos passos

Atualizar uma biblioteca com versão principal nova pede testes, e um sistema antigo em Python 3.10 pede um plano. Se quiser ajuda com o seu, fale com a gente sobre [desenvolvimento web sob medida](/servicos/desenvolvimento-web/). Para manter os servidores atualizados e sem programas que não precisam estar lá, veja a nossa [gestão de servidores](/servicos/gestao-de-servidores/).

## Fontes

- [Pillow 13.0.0: notas da versão, com a lista de falhas corrigidas](https://github.com/python-pillow/Pillow/blob/13.0.0/docs/releasenotes/13.0.0.rst)
- [GHSA-w889-685w-c8fh: injeção de argumentos no Ghostscript (CVE-2026-112900)](https://github.com/python-pillow/Pillow/security/advisories/GHSA-w889-685w-c8fh)
- [GHSA-332p-7hrc-92wf: estouro de memória ao salvar TIFF em BytesIO (CVE-2026-112393)](https://github.com/python-pillow/Pillow/security/advisories/GHSA-332p-7hrc-92wf)
- [GHSA-8g5g-8vmr-9782: estouro de memória no decodificador JPEG (CVE-2026-112403)](https://github.com/python-pillow/Pillow/security/advisories/GHSA-8g5g-8vmr-9782)
- [Manual de segurança do Pillow](https://pillow.readthedocs.io/en/stable/handbook/security.html)
