OWASP Top 10 de 2021 – Parte 03

O OWASP Top 10 2021 é uma valiosa referência que identifica as principais vulnerabilidades em aplicações web e fornece orientações sobre como preveni-las.

Por
5 min. de leitura

Olá, querido (a) aluno(a)!
Continuando o estudo sobre o OWASP Top 10 (Este é o terceiro artigo sobre o tema!)
As vulnerabilidades de segurança em aplicações web são uma ameaça constante que
pode comprometer a integridade, confidencialidade e disponibilidade dos dados. O
OWASP Top 10 2021 é uma valiosa referência que identifica as principais
vulnerabilidades em aplicações web e fornece orientações sobre como preveni-las.
Neste artigo, focaremos em três das principais vulnerabilidades destacadas no OWASP
Top 10 2021: A04:2021 – Design Inseguro, A05:2021 – Configuração Incorreta de
Segurança, A06:2021 – Componentes Vulneráveis e Desatualizados.


A04:2021 – Design Inseguro
O design inseguro de segurança representa uma abordagem e filosofia que identifica e
responde proativamente às ameaças, assegurando que o código seja construído e
avaliado de maneira sólida para resistir a métodos de ataque reconhecidos. A Análise
de Riscos deve ser incorporada em sessões de aprimoramento e outras atividades
similares; esteja atento às alterações nos padrões de dados e nos mecanismos de
controle de acesso ou outros protocolos de segurança. Ao elaborar a narrativa do
usuário, estabeleça o processo ideal e os cenários de erro, garantindo que sejam claros
e aceitos por todos os envolvidos. Revise as premissas e contextos para os fluxos
padrão e de erro, garantindo que permaneçam relevantes e apropriados. Estabeleça
formas de confirmar essas premissas e garantir a aderência às condições para um
comportamento seguro. Assegure-se de que tais insights sejam integrados na narrativa
do usuário. Valorize o aprendizado proveniente de desafios e incentive práticas que
conduzam a melhorias. O design inseguro de segurança não é um mero complemento
ou uma ferramenta adicional ao software.


Ciclo de Vida de Desenvolvimento Seguro
O software seguro requer um ciclo de vida de desenvolvimento seguro, alguma forma
de padrão de projeto seguro, metodologia de paved road, bibliotecas de componentes
protegidos, ferramentas e modelagem de ameaças. Procure seus especialistas em
segurança no início de um projeto de software, durante todo o projeto e durante a
manutenção de seu software. Considere aproveitar o OWASP Software Assurance
Maturity Model (SAMM) para ajudar a estruturar seus esforços de desenvolvimento de
software seguro.


Como Prevenir

  1. Ciclo de Vida de Desenvolvimento Seguro: Estabeleça e use um ciclo de vida
    de desenvolvimento seguro, trabalhando em conjunto com profissionais de
    AppSec para avaliar e desenhar controles voltados à segurança e privacidade.
  2. Padrões de Projeto Seguros: Adote e implemente bibliotecas que ofereçam
    padrões de projeto seguros ou componentes “paved road” prontos para uso.
  3. Modelagem de Ameaças: Utilize a modelagem de ameaças para áreas críticas
    como autenticação, controle de acesso, lógica de negócios e gestão de chaves.
  4. Linguagem e Controles de Segurança: Integre terminologias e controles de
    segurança diretamente nas histórias de usuários durante o planejamento de
    desenvolvimento.
  5. Verificações de Plausibilidade: Implemente verificações de plausibilidade em
    todas as camadas da aplicação, do front-end ao back-end, para garantir a
    integridade dos processos.
  6. Testes e Validações: Escreva testes de unidade e integração direcionados a
    validar a resistência de todos os fluxos críticos contra modelos de ameaça. Crie
    cenários de uso correto e incorreto para cada camada da aplicação.
  7. Separação de Camadas: Estruture as camadas do sistema e da rede de forma
    isolada, baseando-se nas respectivas necessidades de exposição e proteção.
  8. Isolamento Robusto dos Tenants: Garanta que os tenants sejam separados de
    maneira robusta e segura em todas as camadas da infraestrutura.
  9. Limitação de Consumo de Recursos: Imponha limites ao consumo de recursos
    por usuário ou serviço, evitando sobrecargas ou abusos.

A05:2021 – Configuração Incorreta de Segurança
A aplicação pode apresentar vulnerabilidades se:

  1. Não houver salvaguardas de segurança adequadas em qualquer segmento da
    pilha de aplicações ou se as permissões em serviços na nuvem estiverem mal
    configuradas.
  2. Funções ou recursos não essenciais estiverem habilitados ou implementados,
    como portas, serviços, páginas, contas ou privilégios não requeridos.
  3. Contas padrão permanecerem ativas com suas senhas originais e sem
    modificações.
  4. O sistema, ao gerenciar erros, exibe rastreamentos de pilha ou mensagens de
    erro que fornecem informações em excesso ao usuário final.
  5. Em sistemas recentemente atualizados, as funções de segurança mais
    modernas estão inativas ou mal configuradas.
  6. As definições de segurança em servidores de aplicações, frameworks (como
    Struts, Spring, ASP.NET), bibliotecas, bancos de dados e similares não estão
    estabelecidas para proteger adequadamente.
  7. O servidor não emite cabeçalhos ou diretivas de segurança, ou estes não estão
    devidamente configurados para salvaguarda.
  8. O software se encontra obsoleto ou com pontos vulneráveis (veja A06: 2021 –
    Componentes Vulneráveis e Desatualizados).
  9. Sem um protocolo consistente e iterativo de configuração de segurança para
    aplicações, os sistemas enfrentam riscos elevados.

Como Prevenir
Devem ser implementados processos de instalação segura, incluindo:

  1. Um processo de proteção repetível torna mais rápido e fácil implantar outro
    ambiente que esteja devidamente bloqueado. Os ambientes de
    desenvolvimento, controle de qualidade e produção devem ser todos
    configurados de forma idêntica, com credenciais diferentes usadas em cada
    ambiente. Este processo deve ser automatizado para minimizar o esforço
    necessário para configurar um novo ambiente seguro.
  2. Uma plataforma mínima sem recursos, componentes, documentação e outros
    desnecessários. Remova ou não instale recursos e estruturas não utilizados.
  3. Uma tarefa para revisar e atualizar as configurações apropriadas para todas as
    notas de segurança, atualizações e patches como parte do processo de
    gerenciamento de patch (consulte A06: 2021-Componentes Vulneráveis e
    Desatualizados). Revise as permissões de armazenamento em nuvem (por
    exemplo, S3 bucket permissions).
  4. Uma arquitetura de aplicação segmentada fornece separação eficaz e segura
    entre componentes ou tenants, com segmentação, conteinerização ou grupos
    de segurança em nuvem (ACLs).
  5. Envio de diretivas de segurança para clientes, por exemplo, Security Headers.
  6. Um processo automatizado para verificar a eficácia das configurações em todos
    os ambientes.
    A06:2021 – Componentes Vulneráveis e Desatualizados
    Você pode estar exposto a vulnerabilidades:
  7. Se estiver incerto sobre as versões de todos os componentes que utiliza, seja
    do lado cliente ou servidor. Isso engloba tanto os componentes usados
    diretamente quanto suas dependências associadas.
  8. Se o software em uso for suscetível a falhas, não tiver mais suporte ou estiver
    obsoleto. Isso se aplica a sistemas operacionais, servidores web/aplicativos,
    sistemas de gestão de bases de dados (DBMS), aplicações, APIs, bem como
    todos os outros componentes, ambientes de execução e bibliotecas.
  9. Se não realizar verificações periódicas para identificar vulnerabilidades ou se
    não estiver subscrito a boletins informativos de segurança referentes aos
    componentes em utilização.
  10. Se não proceder com correções ou atualizações na infraestrutura, nos
    frameworks ou nas dependências de forma ágil e com base em avaliações de
    risco. Em muitos contextos, correções são efetuadas em ciclos mensais ou
    trimestrais, sob um regime de gestão de mudanças, expondo as organizações a
    períodos prolongados de vulnerabilidade já conhecida e corrigível.
  11. Se os profissionais responsáveis pelo desenvolvimento do software não
    avaliarem a compatibilidade de bibliotecas recém-atualizadas, de novas
    versões ou de patches.
  12. Se não assegurar a correta configuração de segurança dos componentes em
    uso (veja A05: 2021 – Configuração de Segurança Inadequada).

Como Prevenir
É imprescindível estabelecer um protocolo de gestão de dependências que contemple:

  1. Eliminar dependências, recursos, componentes, arquivos e documentações que
    não sejam essenciais ou que não estejam em uso.
  2. Manter um registro atualizado das versões dos componentes tanto do lado
    cliente quanto do lado servidor (como frameworks e bibliotecas) e de suas
    respectivas dependências. Utilize ferramentas como “versions”, “OWASP
    Dependency Check”, “retire.js”, entre outras. Acompanhe constantemente
    fontes como Common Vulnerability and Exposures (CVE) e National
    Vulnerability Database (NVD) em busca de possíveis vulnerabilidades nos
    componentes. Utilize ferramentas de análise de software para automatizar
    essa verificação. Cadastre-se para receber notificações sobre possíveis
    vulnerabilidades relacionadas aos componentes em uso.
  3. Adquira componentes exclusivamente de fontes oficiais e por meio de
    conexões seguras. Opte por pacotes com assinatura digital para minimizar o
    risco de incorporar um componente mal-intencionado ou alterado (veja A08:
    2021 – Falhas de Software e Integridade de Dados).
  4. Fique atento a bibliotecas e componentes que não recebam manutenção
    adequada ou que não disponibilizem correções de segurança para versões
    anteriores. Caso não seja possível aplicar uma correção, avalie a possibilidade
    de implementar um patch virtual para monitorar, identificar ou se precaver
    contra o problema identificado.
  5. Toda organização deve se comprometer com um plano de supervisão contínua,
    seleção e implementação de atualizações ou modificações de configuração ao
    longo da vida útil da aplicação ou do conjunto de aplicações.

    • Vamos ver como essa teoria poderá vir ou já vieram em questões de concurso?
      1) Ano: 2023 Banca: FGV Órgão: PGM – Niterói Prova: FGV – 2023 – PGM – Niterói –
      Analista de Tecnologia da Informação

    • Os analistas de TI da PGM de Niterói foram incumbidos de revisar a segurança dos
      servidores de aplicação com base nas recomendações do ranking de vulnerabilidades
      OWASP Top Ten 2021. O analista José focou sua revisão nos sistemas recém-
      atualizados, verificando se os recursos de segurança que ficaram disponíveis após
      atualizações de software estavam habilitados e corretamente configurados. Agindo
      assim, José mitigou uma vulnerabilidade apresentada pelo OWASP Top Ten 2021
      especificamente na categoria de:
      A) design inseguro;
      B) quebra de controle de acesso;
      C) configuração incorreta de segurança;
      D) componentes desatualizados e vulneráveis;
      E) falhas de integridade de dados e de software.
      Gabarito: C.

Comentário: A categoria do OWASP Top Ten 2021 que se relaciona com essa ação é a
“configuração incorreta de segurança”. Essa vulnerabilidade ocorre quando as
configurações de segurança não são definidas, são definidas incorretamente ou são
incompletas, deixando espaços abertos para ataques ou exposições de dados. Esta
categoria enfatiza a importância de não apenas confiar nas configurações padrão e de
garantir que todas as configurações sejam revisadas e ajustadas conforme necessário.


2) Ano: 2023 Banca: CESPE / CEBRASPE Órgão: SERPRO Prova: CESPE / CEBRASPE –
2023 – SERPRO – Analista – Especialização: Tecnologia


Quanto ao OWASP Top 10, julgue o item seguinte.
Quando os desenvolvedores de software não testam a compatibilidade de bibliotecas
atualizadas ou corrigidas, isso caracteriza um problema de segurança que o OWASP
nomeia como componentes vulneráveis e desatualizados.


Gabarito: Certo.
Comentário: É o item 4 onde se fala em como prevenir. Veja:
Fique atento a bibliotecas e componentes que não recebam manutenção adequada ou
que não disponibilizem correções de segurança para versões anteriores. Caso não seja
possível aplicar uma correção, avalie a possibilidade de implementar um patch virtual
para monitorar, identificar ou se precaver contra o problema identificado.


Então é isso!
Bons estudos e até o nosso próximo artigo.
Prof. Jósis Alves
Analista de TI no Supremo Tribunal Federal


Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil?
Clique nos links abaixo:

CONCURSOS ABERTOS

CONCURSOS 2023

Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente:

TELEGRAM

Por
5 min. de leitura