Skip to main content

Vulnerabilidade de execução arbitrária de código no NumPy

Escrito por
Headshot of Hayley Denbraver

Hayley Denbraver

NumPy Arbitrary Code Execution Vulnerability small

4 de fevereiro de 2019

0 minutos de leitura

Uma vulnerabilidade descoberta recentemente no NumPy, pacote de código aberto amplamente usado para computação científica em Python, permite a execução de código arbitrário potencialmente malicioso.

NumPy

O NumPy faz parte do ecossistema SciPy, que reúne pacotes de software de código aberto para matemática, ciências e engenharia. O NumPy é usado tanto na indústria quanto na academia e tem mais de 9 mil estrelas no GitHub e mais de 700 colaboradores. De acordo com os registros disponíveis no BigQuery do PyPI, o NumPy foi baixado quase 4 milhões de vezes nos últimos três meses.

A vulnerabilidade

Em 16 de janeiro de 2019, o usuário do GitHub nanshihui abriu uma issue informando que a função numpy.load era vulnerável à execução de código arbitrário devido à forma como usava o módulo pickle do Python. O módulo pickle do Python serializa e desserializa objetos Python. O “pickling” converte a hierarquia de objetos Python em um fluxo de bytes, enquanto o “unpickling” recebe um fluxo de bytes e o converte novamente em uma hierarquia de objetos. Aceitar arrays serializados com pickle de fontes não confiáveis é perigoso, pois não há como verificá-los antes da desserialização. Se um código malicioso de shell for fornecido como entrada, ele poderá ser executado durante a desserialização.

A vulnerabilidade está presente nas versões do NumPy entre a 1.10 (lançada em outubro de 2015) e a versão mais recente, a 1.16. Confira mais detalhes sobre essa vulnerabilidade no banco de dados da Snyk.

Por padrão, as versões afetadas do NumPy permitem o carregamento de arrays de objetos serializados com pickle. Isso só deve ser feito quando a fonte for confiável, mas adotar esse comportamento como padrão é uma prática inadequada.

Até o momento, não há casos conhecidos de exploração dessa vulnerabilidade, mas isso pode mudar à medida que o problema se tornar mais conhecido. A exploração não exige autenticação nem muito conhecimento técnico.

Até a publicação deste artigo, ainda não havia sido disponibilizado um patch nem uma atualização, embora a equipe do NumPy esteja trabalhando nisso. Para garantir que você não esteja vulnerável, passe allow_pickle=False a qualquer chamada de numpy.load que carregue dados de uma fonte não confiável.

Você foi afetado?

Se você usa a Snyk, receberá notificações nos alertas de rotina caso tenha projetos com dependências vulneráveis do NumPy.

Se você ainda não experimentou a Snyk, conheça nossa interface fácil de usar ou use nossa CLI para executar testes localmente.

Leia mais

illustration hero ai
Blog

PHP corrige duas vulnerabilidades críticas de RCE sem autenticação (CVE-2026-109618, CVE-2026-109619): atualize agora

Duas falhas críticas no ciclo de requisições do PHP podem permitir execução remota de código sem autenticação. Atualize para uma versão corrigida ou instale um backport do fornecedor para versões mais antigas.

blog feature ai lilac
Blog

Transforme seu backlog de vulnerabilidades em pull requests com remediação agentiva

O Evo Remediation Agent está em Open Preview e traz a resolução automatizada de dependências para o Evo Agentic AppSec. Agora, as equipes de AppSec podem executar campanhas contínuas de remediação

AI Background min crop
Blog

A IA está acionando todos os riscos que você aceitou: sete insights do painel de segurança de IA sem filtros

A IA está tornando os ataques mais baratos e rápidos, expondo riscos que as organizações já carregam. Quatro líderes de segurança explicam por que a defesa na velocidade das máquinas e a correção mais rápida são essenciais.