Ciberataques com IA: Como detetar, prevenir e defender-se contra ameaças inteligentes

Ler agora
Utilizamos inteligência artificial para as traduções dos sítios e, embora nos esforcemos por garantir a exatidão, estas podem nem sempre ser 100% precisas. Agradecemos a sua compreensão.

Analisando a vulnerabilidade CVE-2023-33733 com MetaDefender Core

por OPSWAT
Partilhar esta publicação
Principais investigadores de segurança que discutem a vulnerabilidade CVE-2023-33733
Participantes do programa de bolsas de estudo OPSWAT

O rápido crescimento da tecnologia criou uma grande procura de programadores qualificados. O software de fonte aberta (OSS) tornou-se uma ferramenta vital para esta força de trabalho em crescimento. Atualmente, existem centenas de milhares de pacotes OSS bem estabelecidos em várias linguagens de programação. Mais de 90% dos programadores utilizam estes componentes de fonte aberta nas suas aplicações proprietárias, o que realça a eficiência e a proposta de valor do OSS. Para realçar ainda mais a sua importância, prevê-se que o mercado global de OSS atinja 80,7 mil milhões de dólares até 2030, reflectindo uma taxa de crescimento projectada de 16,7% ao ano. 

No entanto, a adoção generalizada de OSS introduz também um novo nível de complexidade: as vulnerabilidades de segurança. O grande número de componentes OSS interligados cria uma superfície de ataque mais ampla para ser explorada por agentes maliciosos. A gestão de dependências entre vários pacotes OSS pode ser complexa, dificultando a identificação e correção imediata de vulnerabilidades. Além disso, a segurança do OSS depende frequentemente da vigilância e das contribuições da comunidade de programadores. Isto pode levar a atrasos na correção de vulnerabilidades, especialmente em projectos menos populares.  

Neste artigo, os bolseiros de pós-graduação OPSWAT examinam a CVE-2023-33733, uma falha de segurança descoberta na popular biblioteca de código aberto ReportLab. A sua análise é acompanhada por um ataque simulado que utiliza o MetaDefender Core com o seu Software Bill of Materials (SBOM) para identificar vulnerabilidades nas dependências de uma aplicação, incluindo a vulnerável biblioteca ReportLab. 

Introdução à biblioteca do Reportlab

Ilustração do ReportLab

O ReportLab, uma biblioteca Python poderosa e de código aberto, permite aos utilizadores gerar PDFs ricos em funcionalidades a partir de código Python. Oferece aos programadores uma combinação vencedora: flexibilidade, facilidade de utilização e extensas opções de personalização para a criação de documentos dinâmicos. A biblioteca oferece ao desenvolvedor um controle aprimorado sobre seus PDFs, permitindo a incorporação precisa de texto, imagens, tabelas e gráficos com precisão meticulosa. Esse nível de personalização torna o ReportLab uma ferramenta valiosa para a geração de documentos dinâmicos, como faturas e relatórios orientados por dados. 

CVE-2023-33733 Contexto

O CVE-2023-33733 destaca uma vulnerabilidade de segurança na biblioteca ReportLab, afectando várias versões da biblioteca ReportLab.

  • Verificou-se que as versões do ReportLab anteriores à versão 3.6.13 eram vulneráveis à evasão da caixa de areia, especificamente dentro do "rl_safe_eval função. A exploração foi conseguida através do atributo de cor das etiquetas HTML, que foi diretamente avaliado como uma expressão Python utilizando a função eval() que, em última análise, conduz à execução remota de código. 
  • Os analistas da NVD atribuíram uma pontuação CVSS de 7,8 HIGH ao CVE-2023-33733. 
A gravidade e as métricas do CVSS 3.x mostram uma pontuação base de 7,8 para o CVE-2023-33733, classificado como de alto risco.

Análise da vulnerabilidade de segurança do ReportLab

Os bolseiros de pós-graduação OPSWAT efectuaram uma análise profunda do fluxo de trabalho do ReportLab, identificando a causa principal da vulnerabilidade de segurança CVE-2023-33733.

O fluxo de trabalho da biblioteca ReportLab 

O ReportLab permite que os programadores criem PDFs de forma eficiente. A biblioteca permite uma integração sem esforço: importar a biblioteca, definir o conteúdo HTML e gerar o PDF numa única linha de código utilizando a função de resultado. 

Código Python que demonstra a criação de um modelo de documento simples utilizando a biblioteca ReportLab

Os nossos bolseiros graduados descobriram um processo em 5 passos para criar PDFs a partir de HTML com o ReportLab. 

Diagrama que ilustra o fluxo do processo desde o HTML de entrada até ao PDF de saída utilizando o ReportLab e as funções associadas

No processo de 5 etapas para criar PDFs a partir de HTML com o ReportLab, três processos principais se destacam: processamento de parágrafo, processamento de paraparser e o processo de manipulação de HTML. 

Captura de ecrã de um processo de depuração que destaca o tratamento de HTML, o processo de parágrafo e o processo de paraparser num script Python

Como ilustrado na figura acima, o processo de manipulação de HTML no ReportLab utiliza o eval() especificamente no atributo cor. Servindo como um ponto focal para a execução de código malicioso, o eval() leva os investigadores a procurar o controlo da sua entrada para explorar a aplicação. No entanto, isto é um desafio devido à caixa de areia imposta pelo __rl_safe_eval__ no ReportLab. 

Trecho de código mostrando uma função de avaliação segura com verificações de métodos permitidos e tempos limite
Vulnerabilidade de segurança na análise do ReportLab 

O ReportLab implementou uma sandbox chamada __rl_safe_eval__. Esta caixa de areia exclui todas as funções Python incorporadas e inclui várias funções incorporadas substituídas. Esta restrição permite a execução de código seguro dentro da biblioteca, impedindo o acesso a funções e bibliotecas perigosas que poderiam ser utilizadas para fins maliciosos (por exemplo, acesso ao sistema de ficheiros, comunicação em rede). 

O rl_safe_eval implementa várias condições para garantir que o atributo invocado é seguro antes de usar a função de caixa de areia integrada do Python getattr() para o obter e devolver o resultado. 

Exemplo de código que demonstra uma função que verifica se os nomes dos métodos são permitidos num contexto de segurança

A função safe eval tem como objetivo proteger o ambiente, excluindo funções perigosas e impedindo acções maliciosas. No entanto, se for encontrada uma forma de contornar as suas condições e aceder a uma poderosa função incorporada, esta pode ser explorada.  

Com base nesta ideia, os investigadores de segurança tentaram contornar as restrições. Inicialmente, eles exploraram a injeção de objetos usando o tipo() para construir um objeto e redefinir os seus atributos e métodos para contornar as verificações no __rl_safe_eval__. Além disso, como a biblioteca ReportLab substitui as funções incorporadas e as torna globais no contexto eval, o investigador pode aproveitar esta implementação para aceder a uma das funções incorporadas originais. Isto poderia permitir-lhes contornar o ambiente da caixa de areia e executar código malicioso. 

Trecho de código que demonstra a redefinição de funções incorporadas

A carga útil é preparada da seguinte forma: 

Exemplo de código que mostra uma classe de atacante e uma exploração de atributo global

No entanto, não é possível executar uma expressão de várias linhas num contexto eval. No entanto, um truque de compreensão de lista pode ser empregado, e o payload para explorar este CVE é o seguinte: 

Estrutura de código complexa que ilustra a exploração do CVE-2023-33733

RelatórioSimulação de exploração de laboratório 

Os investigadores publicaram uma prova de conceito (POC) para o CVE-2023-33733, demonstrando que as aplicações criadas com versões vulneráveis do ReportLab podem ser susceptíveis a ciberataques. Para avaliar esta potencial ameaça, os bolseiros de pós-graduação da OSPWAT realizaram um ataque simulado a uma aplicação Web. Utilizaram MetaDefender Core com capacidades SBOM para identificar as vulnerabilidades de segurança nas dependências de software da aplicação, incluindo a presença da biblioteca ReportLab afetada. 

Simular a vulnerabilidade de segurança 

Para simular esta exploração como um cenário do mundo real, os bolseiros OPSWAT desenvolveram uma aplicação Web utilizando Python e a versão vulnerável da biblioteca ReportLab. Esta aplicação imita um caso de utilização típico: os utilizadores podem carregar um ficheiro HTML e convertê-lo num ficheiro PDF. 

Captura de ecrã de uma interface de carregamento de ficheiros maliciosa que pede para procurar um ficheiro para carregar

Um atacante pode criar um ficheiro HTML malicioso que contenha código concebido para explorar 33733. Este código poderia contornar a sandbox e comprometer o servidor web accionando uma reverse shell através do eval() função.  

Trecho de código mostrando um ataque de injeção de comando em andamento

Um carregamento bem sucedido de um ficheiro malicioso permitiria ao atacante assumir o controlo do servidor de aplicações devido à vulnerabilidade da biblioteca ReportLab desactualizada. 

Carregador de ficheiros malicioso que apresenta evil.html carregado
Terminal que apresenta uma shell inversa ativa

A importância do SBOM e da segurança proactiva 

A investigação dos OPSWAT Graduate Fellows sobre o CVE-2023-33733 sublinha os potenciais riscos de segurança associados ao OSS. Embora o OSS ofereça benefícios inegáveis em termos de eficiência de desenvolvimento e rentabilidade, vulnerabilidades como a encontrada no ReportLab podem deixar as organizações expostas a ciberataques. 

OPSWAT SBOM 

OPSWAT SBOM protege a cadeia de fornecimento de software, fornecendo um inventário abrangente de componentes para código-fonte e contentores. Suporta mais de 10 linguagens, incluindo Java, JavaScript, Go, PHP e Python, mais de 5 milhões de componentes de software de código aberto de terceiros e utiliza uma base de dados de mais de 17 mil vulnerabilidades provenientes da National Vulnerability Database (NVD) e do GitHub (GHSA). 

Painel de segurança MetaDefender Core mostrando um ficheiro bloqueado e a sua análise de vulnerabilidade

OPSWAT MetaDefender Core, com as suas capacidades SBOM integradas, permite que as organizações abordem proactivamente estes riscos. MetaDefender Core analisa aplicações de software e dependências, identificando a presença de vulnerabilidades conhecidas como CVE-2023-33733 nos componentes listados. Isto permite aos programadores e às equipas de segurança dar prioridade aos esforços de correção e mitigar os riscos de segurança antes de estes poderem ser explorados. 

Painel de segurança MetaDefender Core mostrando resultados detalhados da verificação de vulnerabilidades para o CVE-2023-33733

Reflexões finais

A investigação dos OPSWAT Graduate Fellows sobre a vulnerabilidade do ReportLab (CVE-2023-33733) serve como um valioso lembrete da importância de medidas de segurança proactivas no ciclo de vida do desenvolvimento de software. Ao tirar partido de ferramentas como oMetaDefender Core OPSWAT , as organizações podem obter informações cruciais sobre as suas dependências de software e identificar potenciais vulnerabilidades antes de serem exploradas por atacantes. 

Além disso, OPSWAT oferece um conjunto abrangente de soluções de cibersegurança que vão para além da análise de vulnerabilidades. Estas soluções fornecem deteção de ameaças em tempo real, segurança de dados e proteção de endpoints, salvaguardando as organizações de uma vasta gama de ameaças cibernéticas. Ao adotar uma abordagem de segurança em camadas que inclui ferramentas como o MetaDefender Core, as organizações podem aproveitar os benefícios do OSS, minimizando os riscos de segurança associados. 

Mantenha-se atualizado com OPSWAT!

Inscreva-se hoje para receber as últimas actualizações da empresa, histórias, informações sobre eventos e muito mais.