Code FightersNotíciasSegurança de Aplicação

Pesquisa CVE-2021-43076 e os Riscos causados pelo Insecure Design

O OWASP TOP 10 é um projeto com o intuito de divulgar a desenvolvedores e especialistas de segurança uma lista com 10 categorias das vulnerabilidades mais recorrentes em aplicações web, a partir da submissão de reports. Com a divulgação da última edição do OWASP TOP 10 Vulnerabilities 2021, três novas categorias foram adicionadas e outras quatro tiveram o escopo alterado. Neste artigo, vamos analisar um estudo de caso de uma CVE encontrada no Produto da Fortinet – FortiADC, que consiste em uma vulnerabilidade da categoria A4 – Insecure Design (design inseguro).

Esta categoria esta relacionada aos riscos gerados por uma arquitetura incorretamente planejada ou mal construída. A categoria expõe as inúmeras fraquezas que uma aplicação pode apresentar em relação à sua construção, evidenciando questões desde a geração de mensagens de erros, armazenamento de credenciais, como também, demais limites de confiança do software.

Existem dezenas de CWEs relacionadas a este tópico, abordando uso inadequado de APIs, funções de aplicativos, execução de comandos de entrada em URLs (IDOR), integridade na comunicação do aplicativo e muitas outras fragilidades, como no caso da CVE-2021-43076 explicada mais à frente.

O Design Inseguro pode resultar em graves consequências, uma vez que ataques a este tipo de fraqueza podem interferir na execução lógica da aplicação e resultar em possíveis vazamentos de dados sensíveis.

Estudo de Caso

Foi identificada uma vulnerabilidade no Produto da Fortinet – FortiADC , classificada com [CWE-269] gerenciamento de privilégios impróprios. Essa fraqueza pode ser classificada como A4 – Insecure Design.

Em linhas gerais, é possível acessar um CLI e usar o fnsysctl para fazer muitas coisas, por exemplo, fazer upload de arquivos usando FTP e colocar arquivos HTML no sistema de arquivos. O principal problema é a escalada de privilégios, que, consequentemente, pode trazer outros problemas. Neste caso, é possível usar comandos como mv e cp, onde um atacante, autenticado com perfil de usuário restrito, consegue modificar os arquivos do sistema usando o acesso ao shell.

Mas qual seria o erro de design neste caso? Inicialmente foi identificado que a Fortinet disponibiliza um comando Unix customizado chamado fnsysctl. Ele é utilizado em determinados casos, como por exemplo, para configurar modems 3g e 4g no Fortigate.

Este mesmo comando foi identificado no FortiADC, possibilitando algumas ações criticas, como no caso de upload via FTP. Portanto para exploração da vulnerabilidade foram realizados os seguintes passos.

  1. Acesso com usuário restrito;
  2. Acesso Web console do equipamento;
  3. Execução do comando fnsysctl;
  4. Execução do comando fnsysctl ls / , para listar os arquivos do sistema.
  5. Execução do comando fnsysctl ftp client, para realizar upload dos arquivos maliciosos com o mesmo nome dos arquivos de sistema.
  6. Upload de arquivos maliciosos na pasta tmp.
  7. Execução do fnsysctl mv Source > destination para movimentação dos arquivos dentro do FortiADC.

Como resultado, identificamos os seguintes impactos:

  • Movimentação de arquivos com usuário restrito;
  • Modificação da interface web;
  • Alteração de alguns comportamentos da aplicação.

E as soluções são:

  • Atualize para o FortiADC versão 6.2.2 ou superior.
  • Atualize para o FortiADC versão 7.0.0 ou superior

Mitigações

Para evitar vulnerabilidades de design inseguro, é necessário considerar aspectos de segurança desde as fases iniciais de desenvolvimento de software, isso é: análise de requisitos, arquitetura de software, desenvolvimento, testes e implementação.

É imprescindível também implementar processos seguros desde a concepção do projeto. Falamos aqui da prática conhecida como Shift-Left, que consiste em mover o início da fase de testes para a esquerda, ou seja, ao invés dos testes ocorrerem apenas na fase final da esteira, os testes passam a pendurar durante todo o ciclo de desenvolvimento.

A OWASP recomenda uma série de medidas que devem ser levadas em consideração para prevenir a ocorrência de vulnerabilidades de design inseguro, tais como:

  • Implementar um programa de AppSec para avaliar e projetar controles de segurança e privacidade.
  • Utilizar ferramentas automatizadas para análises de código como SAST, SCA e DAST.
  • Realizar modelagem de ameaça em processos críticos para identificar possíveis vetores de ataque.
  • Utilizar apenas bibliotecas atualizadas e confiáveis.
  • Implementar controles de segurança em diferentes camadas da arquitetura.
  • Considerar o conceito de privilégio mínimo na definição de permissões de usuários.
  • Realizar testes de unidade para validar requisitos de segurança em funções críticas da aplicação considerando o modelo de ameaças.

Além dos pontos elencados acima, um grande aliado no processo de desenvolvimento seguro é o framework OWASP SAMM, que foi projetado visando fornecer um conjunto de práticas de segurança que atende todo o ciclo de vida do software considerando diferentes níveis de maturidade.

Vale reforçar que nenhuma aplicação é completamente segura. Entretanto, durante o projeto de software, devemos nos certificar de que o design do projeto implementa as melhores práticas de segurança. Utilizar um ciclo de desenvolvimento seguro, ter atenção com os padrões e realizar testes periódicos contribuem para a criação de uma aplicação confiável e madura.

Autores:
Fernando Vasques – Information Security Analyst
Danilo Costa – Appsec Consultant
Luiz Henrique Custódio – Application Security Analyst 

Nova call to action
About author

Articles

Uma equipe de profissionais, altamente conectados com as notícias, técnicas e informações sobre a segurança de aplicações.
Related posts
Segurança de Aplicação

Design segundo SAMM: Modelagem de Ameaças em Segurança de Aplicações

Neste artigo será abordado o tema modelagem de ameaças em segurança de aplicações, segundo o…
Read more
Segurança de Aplicação

Design segundo SAMM - Arquitetura Segura em Segurança de Aplicações

“The security architecture practice focuses on managing architectural risks for the software…
Read more
ProdutoSegurança de Aplicação

AppSec: Integrações com ferramentas CI/CD através da Conviso Platform

Dentro dos times de desenvolvimento, gerenciar resultados em ferramentas de CI/CD, obter…
Read more

Deixe um comentário