Falha do Python de 15 anos desliza para o software em todo o mundo

0 0
Read Time:7 Minute, 33 Second

Uma falha de 15 anos na linguagem de programação de código aberto Python permaneceu sem correção em muitos lugares, chegando a centenas de milhares de projetos de código aberto e de código fechado em todo o mundo. Isso está criando inadvertidamente uma cadeia de suprimentos de software amplamente vulnerável que a maioria das organizações afetadas desconhece, alertaram os pesquisadores.

Isso está de acordo com o Trellix Advanced Research Center, cujos analistas descobriram que uma vulnerabilidade relacionada à passagem de caminho, rastreada como CVE-2007-4559 , atualmente permanece sem correção em mais de 350.000 repositórios exclusivos de código aberto, deixando os aplicativos de software vulneráveis ​​à exploração.

Em uma postagem no blog publicada em 21 de setembro, o engenheiro principal e diretor de pesquisa de vulnerabilidades Douglas McKee disse que a base de código em questão está presente em softwares que abrangem um grande número de indústrias – principalmente desenvolvimento de software, inteligência artificial/aprendizado de máquina e desenvolvimento de código. , mas também inclui setores tão diversos como segurança, gerenciamento de TI e mídia. 

O módulo Python tarfile também existe em um módulo padrão em qualquer projeto usando Python e atualmente é encontrado extensivamente em estruturas criadas pela AWS, Facebook, Google, Intel e Netflix, bem como em aplicativos usados ​​para aprendizado de máquina, automação e conteinerização do Docker , disseram os pesquisadores.

Embora o bug permita que os invasores escapem do diretório para o qual um arquivo deve ser extraído, os atores também podem explorar a falha para executar código malicioso, disseram os pesquisadores.

“Hoje, se não for verificada, essa vulnerabilidade foi adicionada involuntariamente a centenas de milhares de projetos de código aberto e fechado em todo o mundo, criando uma superfície de ataque substancial na cadeia de suprimentos de software”, disse McKee.

Novo problema, velha vulnerabilidade

Depois de descobrir que o módulo tarfile do Python não estava verificando corretamente as vulnerabilidades de passagem de caminho em um dispositivo corporativo recentemente, os pesquisadores do Trellix pensaram ter encontrado uma nova vulnerabilidade do Python de dia zero, escreveu McKee no post. No entanto, eles logo perceberam que a falha já havia sido descoberta.

Pesquisas adicionais e cooperação posterior do GitHub revelaram que existem cerca de 2,87 milhões de arquivos de código aberto que contêm o módulo tarfile do Python em cerca de 588.000 repositórios exclusivos. Os resultados da análise do Trellix descobriram que cerca de 61% dessas instâncias são vulneráveis, o que levou os pesquisadores a uma estimativa atual de 350.000 repositórios Python vulneráveis.

Em código aberto, não há ninguém para culpar

Há uma série de razões pelas quais a falha foi capaz de se espalhar por todo o software sem verificação por tanto tempo; no entanto, seria injusto colocar a culpa específica no projeto Python, vários mantenedores do projeto ou qualquer desenvolvedor usando a plataforma, observou McKee.

“Vamos começar sendo explicitamente claros – não há uma parte, organização ou pessoa para culpar pelo estado atual do CVE-2007-4559, mas aqui estamos nós de qualquer maneira”, escreveu ele.

Como projetos de código aberto como o Python são executados e mantidos por um grupo nebuloso de voluntários e não por uma organização federada – e, neste caso, uma fundação sem fins lucrativos – é mais difícil rastrear e corrigir até mesmo problemas conhecidos em tempo hábil, observou McKee .

Além disso, “não é incomum que bibliotecas ou kits de desenvolvimento de software … considerem a responsabilidade de alavancar com segurança suas APIs como parte da responsabilidade do desenvolvedor”, disse ele.

De fato, o Python colocou um aviso em sua documentação da função tarfile sobre os riscos de usá-la, dizendo explicitamente aos desenvolvedores para nunca “extrair arquivos de fontes não confiáveis ​​sem inspeção prévia” devido ao problema de passagem de diretório.

Embora um aviso seja “um passo positivo” para divulgar o problema, ele claramente não impediu que a vulnerabilidade fosse perpetuada, já que ainda depende dos desenvolvedores aproveitar a base de código para garantir que o software que eles constroem seja seguro, observou McKee .

Ele acrescentou que agravando o problema é o fato de que a maioria dos tutoriais Python para desenvolvedores sobre como usar os módulos da plataforma – incluindo a própria documentação do Python e sites populares como tutorialspoint , geeksforgeeks e askpython.com – não são claros sobre como evitar uso inseguro do módulo tarfile, observou ele.

Essa discrepância permitiu que a vulnerabilidade fosse programada na cadeia de suprimentos, uma tendência que provavelmente continuará nos próximos anos, a menos que haja uma conscientização mais ampla do problema, observou McKee.

‘Incrivelmente fácil’ explorar a falha

Na frente técnica, o CVE-2007-4559 é um ataque de passagem de caminho no módulo tarfile do Python que permite que um invasor sobrescreva arquivos arbitrários, adicionando a sequência “..” aos nomes de arquivos em um arquivo TAR. 

A falha real surge de duas ou três linhas de código usando tarfile.extract() não sanitizado ou os padrões internos de tarfile.extractall(), observou o pesquisador de vulnerabilidades Trellix Charles McFarland em um  post separado no blog sobre o problema publicado na quarta-feira.

“A falha em escrever qualquer código de segurança para limpar os arquivos dos membros antes de chamar ou tarfile.extract() tarfile.extractall() resulta em uma vulnerabilidade de travessia de diretório, permitindo que um agente mal-intencionado acesse o sistema de arquivos”, escreveu ele.

Para um invasor aproveitar essa vulnerabilidade, ele precisa adicionar “..” com o separador do sistema operacional (“/” ou “\”) no nome do arquivo para escapar do diretório para o qual o arquivo deve ser extraído, Schulz detalhado. O módulo tarfile do Python permite que os desenvolvedores façam exatamente isso, observou ele.

O estagiário de pesquisa de vulnerabilidades do Trellix, Kasimir Schulz – cuja pesquisa em um problema separado é realmente responsável por trazer à luz o extenso bug tarfile do Python – descreveu em detalhes em um terceiro post separado no blog Trellix que ele escreveu publicado na quarta-feira como “incrivelmente fácil” é explorar o CVE -2007-4559.

Os arquivos tar em Python contêm uma coleção de vários arquivos e metadados diferentes que são usados ​​posteriormente para desarquivar o próprio arquivo tar, explicou Schulz em seu post. Os metadados contidos em um arquivo TAR incluem, mas não se limitam a, informações como o nome do arquivo, o tamanho e a soma de verificação do arquivo e informações sobre o proprietário do arquivo quando o arquivo foi arquivado.

“O módulo tarfile permite que os usuários adicionem um filtro que pode ser usado para analisar e modificar os metadados de um arquivo antes de ser adicionado ao arquivo TAR”, escreveu Schulz. Isso permite que os invasores criem suas explorações com apenas seis linhas de código, disse ele.

Schulz continua em seu post para explicar em detalhes como ele usou a falha e um script personalizado chamado Creosote – que pesquisa em diretórios procurando e analisando arquivos Python – para executar código malicioso dentro do Spyder IDE, um software científico gratuito e de código aberto. ambiente escrito para Python que pode ser executado em Windows e macOS.

Destaque na Cadeia de Suprimentos

A questão do tarfile mais uma vez destaca a cadeia de suprimentos de software como uma superfície de ataque, que ganhou destaque nos últimos anos devido ao amplo impacto que os invasores podem ter ao direcionar o código defeituoso que está presente em várias plataformas e, portanto, em ambientes corporativos. Isso pode servir para ampliar amplamente o impacto de campanhas maliciosas sem trabalho extra por parte dos agentes de ameaças.

Já existem vários exemplos do que pode acontecer em toda a cadeia de suprimentos nesses tipos de ataques, com os agora infames cenários SolarWinds e Log4J entre os mais proeminentes. O primeiro começou no final de dezembro de 2020 com uma violação no software SolarWinds Orion e se espalhou até o ano seguinte com vários ataques em várias organizações. A última saga se desenrolou no início de dezembro de 2021 com a descoberta de uma falha apelidada de Log4Shell em uma ferramenta de log Java amplamente usada que estimulou várias explorações e tornou milhões de aplicativos vulneráveis ​​a ataques, muitos dos quais permanecem sem correção hoje.

Ultimamente, os invasores começaram a ver o benefício de ir diretamente atrás de repositórios de código-fonte aberto para plantar seu próprio código malicioso que pode ser explorado posteriormente para ataques à cadeia de suprimentos. Na verdade, o projeto Python se encontrou diretamente na mira.

No final de agosto, os invasores visaram os usuários do Python Package Index (PyPI)com seu primeiro ataque de phishing com o objetivo de roubar as credenciais dos usuários para que os agentes de ameaças pudessem carregar pacotes comprometidos no repositório. No início daquele mês, o PyPI já havia removido 10 pacotes de códigos maliciosos do registro depois que um fornecedor de segurança alertou que os agentes de ameaças estavam incorporando códigos maliciosos no script de instalação do pacote .

FONTE: DARK READING

POSTS RELACIONADOS