blog conviso

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

October 27, 2022

By

Conviso

Application Security

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

Sobre o autor

Conviso
Application Security

Bachelor's degree in Computer Science from the Federal University of Alagoas. He has spoken at events such as the NullByte Security Conference and Hackers to Hackers Conference, and presented research projects at national and international events. He has experience in application security, exploit development, and vulnerability research in both userland and kernel land, having discovered vulnerabilities for companies like Microsoft, AMD, and Intel. His interests include operating system internals, compilers, malware development, vulnerability research, and EDR evasion.

Saiba mais