
O rápido avanço da tecnologia criou uma elevada procura por programadores qualificados. O software de código aberto (OSS) tornou-se uma ferramenta essencial para esta força de trabalho em crescimento. Existem atualmente centenas de milhares de pacotes de OSS bem estabelecidos em várias linguagens de programação. Mais de 90% dos programadores utilizam estes componentes de código aberto nas suas aplicações proprietárias, o que destaca a eficiência e a proposta de valor do OSS. Para sublinhar ainda mais a sua importância, prevê-se que o mercado global de OSS atinja os 80,7 mil milhões de dólares até 2030, refletindo uma taxa de crescimento projetada 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

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_evalfunçã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çãoeval()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.

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.

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

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.

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.

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.

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, uma vez que a biblioteca ReportLab substitui as funções integradas e as transforma em variáveis globais no contexto «eval», o investigador poderia tirar partido desta implementação para aceder a uma das funções integradas originais. Isto poderia permitir-lhe contornar o ambiente de sandbox e executar código malicioso.

A carga útil é preparada da seguinte forma:

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:

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.

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.

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.


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).

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.

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 além da análise de vulnerabilidades. Estas soluções proporcionam deteção de ameaças em tempo real, segurança de dados e proteção de terminais, salvaguardando as organizações contra uma vasta gama de ameaças cibernéticas. Ao adotarem uma abordagem de segurança em camadas que inclui ferramentas como MetaDefender Core , as organizações podem tirar partido dos benefícios do OSS, minimizando simultaneamente os riscos de segurança associados.
