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
- 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. - Padrões de Projeto Seguros: Adote e implemente bibliotecas que ofereçam
padrões de projeto seguros ou componentes “paved road” prontos para uso. - 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. - 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. - 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. - 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. - 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. - Isolamento Robusto dos Tenants: Garanta que os tenants sejam separados de
maneira robusta e segura em todas as camadas da infraestrutura. - 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:
- 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. - Funções ou recursos não essenciais estiverem habilitados ou implementados,
como portas, serviços, páginas, contas ou privilégios não requeridos. - Contas padrão permanecerem ativas com suas senhas originais e sem
modificações. - O sistema, ao gerenciar erros, exibe rastreamentos de pilha ou mensagens de
erro que fornecem informações em excesso ao usuário final. - Em sistemas recentemente atualizados, as funções de segurança mais
modernas estão inativas ou mal configuradas. - 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. - O servidor não emite cabeçalhos ou diretivas de segurança, ou estes não estão
devidamente configurados para salvaguarda. - O software se encontra obsoleto ou com pontos vulneráveis (veja A06: 2021 –
Componentes Vulneráveis e Desatualizados). - 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:
- 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. - Uma plataforma mínima sem recursos, componentes, documentação e outros
desnecessários. Remova ou não instale recursos e estruturas não utilizados. - 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). - 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). - Envio de diretivas de segurança para clientes, por exemplo, Security Headers.
- 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: - 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. - 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. - 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. - 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. - 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. - 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:
- Eliminar dependências, recursos, componentes, arquivos e documentações que
não sejam essenciais ou que não estejam em uso. - 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. - 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). - 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. - 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
Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente: