A Pillow, uma das bibliotecas de imagens mais usadas em Python, pode executar comandos do sistema operacional em um servidor se receber o nome de um arquivo que deve abrir.
A falha, identificada como
CVE-2026-112900
, está na forma como a Pillow processa imagens EPS. Para abri-las, a biblioteca envia o nome do arquivo ao Ghostscript, um programa separado que converte a imagem em pixels, sem validar esse nome.
O Ghostscript pode interpretar um nome escolhido por um invasor como instruções, em vez de tratá-lo como o caminho de um arquivo, e usá-lo para apontar para outro arquivo que contém comandos a serem executados. A equipe responsável pela Pillow corrigiu o problema na versão 13.0.0, lançada em 16 de outubro.
A Pillow é usada em diversos contextos nos quais o Python processa imagens: formulários de envio pela web, ferramentas para criar avatares e miniaturas, fluxos de processamento de documentos e PDFs, além da maioria dos projetos de aprendizado de máquina. A OX Security, empresa cujo relatório chamou atenção para as falhas, estima que a biblioteca registra cerca de 436 milhões de downloads por mês.
A versão 13.0.0 reúne correções de segurança para falhas com diferentes níveis de gravidade, de baixo a crítico. Duas delas foram classificadas como críticas pela equipe responsável. Não há registro de que alguma esteja sendo explorada em ataques.
O problema está no nome do arquivo, não na imagem. “A falha é acionada pelo nome do arquivo, não por qualquer elemento do documento PostScript”, informa o comunicado. Isso significa que até um arquivo EPS inofensivo pode causar danos se um invasor controlar seu nome. Por isso, pontos de acesso que recebem arquivos e mantêm ou criam seus nomes com base em dados fornecidos pelo usuário são alvos prováveis.
A falha só chega ao Ghostscript em sistemas com o programa `gs` instalado, requisito para que a Pillow abra arquivos EPS. O problema afeta versões da Pillow a partir da 2.6.0 até a 12.3.0.
A equipe responsável classificou a falha como moderada, pois o invasor precisa controlar o nome do arquivo. Já o registro CVE atribuído pelo GitHub deu a ela nota 9,2 de 10 e também descreveu essa condição.
Duas falhas foram classificadas na categoria mais alta da equipe, “crítica”. Uma envolve o reaproveitamento de dados antigos de imagem após uma mudança de modo, conforme descrito nas notas da versão. A outra corrige duas falhas de estouro de buffer no processamento de imagens JPEG pela Pillow.
Uma dessas falhas, no formato FlashPix (FPX), foi demonstrada como capaz de executar um comando do invasor com uma única chamada a `Image.open()` em um arquivo preparado para esse fim, desde que o pacote opcional `olefile` esteja instalado. Como a Pillow identifica esses arquivos pelo conteúdo, e não pela extensão, um servidor que abra envios não confiáveis pode ser atacado sem qualquer ação do usuário.
A outra falha,
CVE-2026-112403
, causa um estouro de buffer quando um programa cria uma miniatura de uma imagem JPEG sem perdas especialmente preparada. O comunicado relata uma interrupção do programa, mas não a execução de código. Segundo o aviso, a falha foi “encontrada pela Anthropic com o uso do Claude para estudar a segurança de programas de código aberto e validada manualmente pela Ada Logics”. O caso faz parte de uma iniciativa mais ampla da empresa, que já identificou centenas de falhas em bibliotecas de código aberto.
Uma terceira falha,
CVE-2026-112393
, está na Pillow desde 2013. Ela causa um estouro de buffer quando um programa salva uma imagem TIFF compactada na memória, em vez de gravá-la em um arquivo no disco. Esse é um padrão comum em serviços que convertem um arquivo enviado e o devolvem ao usuário. O comunicado informa que os responsáveis pelo relato provocaram uma interrupção do processo e só conseguiram transformá-la em execução de código com a ajuda de uma segunda falha, independente, que revelou endereços de memória. Salvar a imagem em um arquivo no disco não é afetado.
Os registros CVE atribuídos pelo GitHub classificam as falhas de EPS, TIFF e miniaturas JPEG com nota 9,2 de 10, considerada crítica. Cada uma depende de condições que a pontuação não leva em conta, e as avaliações da equipe responsável pela Pillow vão de moderada a crítica. Nos registros CVE, analistas da CISA indicam que não há exploração conhecida da falha de EPS e que existe uma prova de conceito pública para a falha de TIFF.
O que fazer
Atualize para a Pillow 13.0.0, que corrige todas essas falhas, e recrie os contêineres, pacotes wheel ou imagens-base que incluam uma cópia antiga da biblioteca. A Pillow 13 deixa de oferecer suporte ao Python 3.10. Portanto, instalações que ainda usam essa versão também precisam migrar para o Python 3.11 ou mais recente.
```bash
pip install -U "Pillow>=13.0.0"
```
Até ser possível atualizar, as orientações de segurança da Pillow e os comunicados recomendam medidas para reduzir os riscos em cada cenário:
- **EPS e Ghostscript:** não instale o programa `gs` em sistemas que processam envios não confiáveis e nunca use `Image.open()` com um nome de arquivo controlado por um invasor para abrir um EPS.
- **Miniaturas JPEG:** evite usar `draft()` e `thumbnail()` com arquivos JPEG não confiáveis. Como alternativa, chame `load()` antes ou use `reducing_gap=None`.
- **TIFF:** trate o salvamento na memória de uma imagem TIFF, por exemplo, em `io.BytesIO`, como uma operação sensível quando a imagem tiver sido enviada por um usuário.
Publicidade
Nossa audiência é formada por analistas, pentesters, decisores e entusiastas que consomem nossas notícias todo dia pelo Site, Newsletter e Instagram. Fale com quem realmente importa para o seu negócio. Anuncie aqui. Saiba mais...