Code FightersNotíciasSegurança de Aplicação

Estudo de caso: Plone CVE-2021-33512 e Modelagem de Ameaças com Conviso Platform

Um projeto interno do time de Consulting da Conviso, chamado ConsultingLabs, foi criado com o objetivo de explorar vulnerabilidades. Saiba mais sobre a CVE-2021-33512.

Você também pode ouvir esse conteúdo:

Em uma de suas atividades, investigando fraquezas CWE-79 e CWE-434, foi feito um estudo de caso explorando uma vulnerabilidade pré-existente no Plone CMS, que possibilita upload de arquivos maliciosos na versão 5.2.4. Vale ressaltar que em versão mais recente esse CVE já se encontrava corrigido.

Sendo assim, vemos quão necessária é uma ação proativa em relação às possíveis ameaças, levando em consideração temas como AppSec e segurança em todas as fases do ciclo de desenvolvimento

Objetivo

O objetivo deste artigo é demonstrar a importância da Modelagem de Ameaças na prática, pois através dela são construídos os requisitos de segurança a serem implementados.

A seguir será abordado em mais detalhes o ambiente vulnerável, a identificação da vulnerabilidade, a correção e principalmente a modelagem de ameaças, a qual poderia mapear os requisitos necessários para evitar a existência dessa vulnerabilidade.

Ambiente de testes

Iniciar Docker Vulnerável

docker pull plone:5.2.4-alpine<br>
docker run -d -p 8081:8080 plone:5.2.4-alpine

Iniciar Docker com Correção

docker pull plone
docker run -d -p 8082:8080 plone 
Figura 1 – imagem dos containers dockers em execução

Explicação da vulnerabilidade

O Plone é um sistema de gerenciamento de conteúdo que utiliza a linguagem Python e tem por objetivo a construção de portais de informação em intranets, extranets e Internet. Nessa pesquisa foi utilizada o Plone, porém existem outros tipos de sistemas que disponibilizam esses mesmos recursos. Um atacante poderia mapear componentes relevantes e em seguida realizar tentativas de ataque conforme seu mapeamento. Os testes foram realizados especificamente no componente de upload de imagens do Plone, que por sua vez já existia um CVE mapeado para essa versão vulnerável.

Sobre o XSS, o ataque mais comum realizado com scripts entre sites envolve a divulgação de informações armazenadas em cookies do usuário. Normalmente, um usuário mal-intencionado cria um script do lado do cliente, que executa alguma atividade (como enviar todos os cookies do site para um determinado endereço de e-mail). Esse script será carregado e executado por cada usuário que visitar o site. Como o site que solicita a execução do script tem acesso aos cookies em questão, o script malicioso também tem.

Durante os testes, foi feito o upload de uma imagem SVG que possuía comandos javascript embutidos, caracterizando assim um ataque de XSS. [1]

Passos do Ataque

A primeira ação foi criar um arquivo SVG e editá-lo para inserir a seguinte linha:

<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.cookie)"/>

Após a criação do arquivo SVG, a imagem foi adicionada no Plone conforme figura 2.

Figura 2 – Upload de imagens plone.

Após o upload, enquanto o sistema Plone carregava a imagem, ele executava o código javascript adicionado dentro da imagem, no caso, exibindo um alert com os dados do cookie do usuário, conforme pode ser visualizado na figura 3.

Figura 3 – Alert com os cookies do usuário.

Identificação da vulnerabilidade (por ferramentas)

Nesse caso, a vulnerabilidade foi detectada de forma manual, porém existem ferramentas tipo SAST que poderiam ter ajudado na detecção, como por exemplo a da Conviso Platfrom.

Na figura 4 é possível notar que, ao verificar a imagem da versão 5.2.4, ela mostra a vulnerabilidade de XSS identificada pela Engine de SAST do Conviso Platform. Adicionalmente, podem ser vistas outras possíveis vulnerabilidades com a interação do time Conviso (OffSec Team e Consulting Team) com atividades de Pentest , Codereview, e através da engine de SCA Platform, e as outras integrações existentes.

Figura 4 – Ferramenta exibindo CVE

Correção da vulnerabilidade

Após a detecção da vulnerabilidade e a descoberta de sua correção, foi verificada a tratativa dada a essa vulnerabilidade. Sendo assim, foi encontrada uma alteração no arquivo “namedfile.py“, onde foi adicionado um filtro para que arquivos svg não fossem executados pelo servidor, conforme ilustra a figura 5.

Todas as correções desse hotfix encontram-se neste link: https://plone.org/security/hotfix/20210518.

Figura 5 – Correção da vulnerabilidade

Evitando vulnerabilidades semelhantes

Abaixo será ilustrado o mapeamento de ameaças através de uma Modelagem de Ameaças e com isso definir os requisitos de segurança necessários para que essas ameaças sejam mitigadas. (Obs.: Foi utilizado o produto “Threat Modeling” do Conviso Platform para esta atividade).

Primeiramente foi definida a área de “Adicionar Imagem” como um componente da aplicação e depois os possíveis ataques para esse item. Como pode ser visto na figura 6, foi inserido “File Upload” em Architecture item – somente como exemplo, poderia ser “Adicionar Imagem” – e depois os ataques “Stored XSS”, e “Upload a Web Shell to a Web Server” foram acrescentados.

Figura 6 – Modelagem Conviso Platform

Após adicionar os ataques, os requisitos necessários para mitigar os ataques selecionados foram listados, como é visto na figura 7. Vale frisar que são requisitos sugeridos, então é necessário analisar e refinar se eles fazem sentido para sua aplicação. Nesse caso foi levantado os seguintes requisitos.

Figura 7 – Requisitos de acordo com possíveis ataques
Figura 8- Execução e Refinamento dos requisitos

Abaixo, na figura 9, um dos requisitos sugeridos mais detalhadamente:

Figura 9 – Exemplo de Requisito Store XSS expandido

Conclusão

Como foi visto na exploração deste estudo de caso, a modelagem de ameaças é uma prática que viabiliza um ciclo de desenvolvimento seguro, pois ao identificar possíveis ataques, os requisitos de segurança são gerados automaticamente ou criados de forma mais intuitiva, evitando assim diversas vulnerabilidades nas aplicações e ações reativas.

Referências

  1. CVE-2021-33512
  2. Conviso Platform

Autores:
Danilo Costa – Appsec Consultant
Luciene Oliveira – Analista de Segurança da Informação
Tiago Zaniquelli – AppSec Specialist

Related posts
Segurança de Aplicação

A Importância da Supply Chain para a Segurança das Aplicações

Para iniciar, quando pensamos em desenvolvimento de software, geralmente associamos essa área a…
Read more
Segurança de Aplicação

O que é WAAP (Web Application and API Protection)

Primeiramente, bem-vindo ao mundo da Proteção de Aplicativos Web e API (WAAP – Web…
Read more
Segurança de Aplicação

Os desafios em segurança de aplicações no uso da inteligência artificial por desenvolvedores

À medida que a inteligência artificial (IA) se torna cada vez mais presente em nosso dia a dia…
Read more

Deixe um comentário