Fundamentos de Segurança de Aplicações

Os problemas de segurança geralmente surgem como resultado de aplicações que estão sendo implementadas de forma rápida, sem verificações e proteções adequadas. Quais são os principais riscos de segurança às aplicações e o que as organizações podem fazer para proteger seu pipeline de DevOps?

A transformação digital é uma etapa importante que as organizações precisam realizar para acompanhar a evolução de cenário do setor. Enquanto atualmente o mundo luta com a interrupção provocada pela pandemia do novo coronavírus, a necessidade de tal transformação tornou-se não apenas mais aparente, como também mais urgente. Com as empresas dinamizando suas pegadas digitais e modernizando processos para que seus funcionários trabalhem em qualquer lugar, as organizações também estão tendo que reconsiderar como atender às demandas dos clientes e agilizar as mudanças. Essa transformação digital já se tornou evidente nos últimos meses, com o uso de aplicações experimentando um aumento notável em vários setores.

As aplicações agora desempenham um papel integral, com muitas empresas e usuários contando com uma ampla variedade delas para trabalho, educação, entretenimento, varejo e outros usos. Na realidade atual, as equipes de desenvolvimento desempenham um papel fundamental a fim de garantir que os apps possam fornecer aos usuários ótima usabilidade e desempenho, bem como segurança contra os agentes de ameaças que estão sempre à procura de fraquezas, vulnerabilidades, configurações incorretas e outras lacunas de segurança que podem abusar para conduzir atividades criminosas. 

Os riscos de segurança tornaram-se ainda mais evidentes à medida que as organizações tiveram que apressar as aplicações para o mercado com o intuito de manter os processos de negócios e de geração de receita. Os riscos de privacidade apresentados por apps de rastreamento de contato lançados recentemente exemplificam melhor os perigos do desenvolvimento e deploy apressados de aplicações. Em maio, o The Washington Post relatou que as aplicações de rastreamento de contato, embora úteis para governos e pesquisadores em seus esforços para conter o surto de pandemia, podem inadvertidamente fornecer aos hackers detalhes confidenciais de pessoas com teste positivo para Covid-19.

Os sérios riscos apresentados por apps inseguros destacam a necessidade de segurança nas aplicações ou o processo de achar, corrigir e aprimorar a segurança delas nas fases de design, desenvolvimento e pós-implantação. Este artigo discute os riscos e ameaças à segurança aos quais as aplicações podem estar suscetíveis, como as organizações podem integrar proteções de cibersegurança adequadas em seu pipeline de DevOps e muito mais.

 

Principais Riscos de Segurança para Aplicações

A crescente complexidade das aplicações e sua dependência de bibliotecas de terceiros, entre outras preocupações, as tornam vulneráveis a riscos e ameaças à segurança. Os profissionais de segurança revelaram que a maioria dos ataques externos são realizados por meio da exploração de uma vulnerabilidade de software ou de um aplicação da web, conforme declarado em um relatório da Forrester de 2020. O mesmo relatório descreve o software de código aberto como uma preocupação principal na segurança de aplicações, citando o aumento de 50% nas vulnerabilidades de segurança de código aberto desde o ano passado.

A maior adoção de contêineres e a necessidade de APIs também introduziram novos riscos às aplicações. Um relatório de 2020 da Snyk revela que nove das 10 principais imagens de contêiner oficiais no Docker Hub continham mais de 50 vulnerabilidades. Enquanto isso, um relatório da F5 de 2019 encontrou violações de API que surgiram de grandes plataformas que oferecem diversas integrações de terceiros, apps móveis e configurações incorretas de aplicações.

A lista abaixo detalha os riscos mais comuns para as aplicações que os desenvolvedores de software precisam se atentar a fim de proteger o código que produzem. A Fundação Open Web Application Security Project (OWASP) tem uma lista abrangente de riscos para aplicações da web e APIs. É importante que os desenvolvedores estejam cientes dos riscos de segurança mais comuns de aplicações – aqueles que geralmente resultam de código não seguro – para que possam verificar as bases que precisam cobrir em cada estágio do pipeline de desenvolvimento.

  •         Usando componentes com vulnerabilidades conhecidas. Os desenvolvedores usam componentes como bibliotecas, frameworks e outros módulos de software em suas aplicações para evitar trabalho redundante e fornecer a funcionalidade necessária. No entanto, os agentes de ameaças procuram vulnerabilidades conhecidas nesses componentes para erodir as defesas da aplicação e conduzir vários ataques.
  •         Vazamento de dados e exposição. As aplicações da Web que não protegem adequadamente os dados confidenciais podem permitir que os agentes de ameaças roubem ou modifiquem dados com proteção insuficiente. Eles também podem realizar atividades maliciosas, como fraude de cartão de crédito e roubo de identidade, entre outras. APIs configuradas ou codificadas incorretamente também podem levar a uma violação de dados.
  •         Controles de acesso de backend fracos. Controles fracos de acesso ao backend resultam de restrições aplicadas indevidamente sobre o que os usuários autenticados têm permissão para fazer. Os agentes de ameaças podem explorar essas falhas para acessar funcionalidades não autorizadas, que incluem acessar outras contas de usuário, visualizar arquivos confidenciais, modificar dados de outros usuários e alterar direitos de acesso.
  •         Injeção. Falhas ou configuração imprópria de SQL, NoSQL, OS e LDAP podem ser exploradas em ataques de injeção, por exemplo, quando dados não confiáveis ​​são enviados a um intérprete de código por meio de uma entrada de formulário ou outros métodos de envio de dados para uma aplicação da web. Os atacantes podem usar dados hostis para enganar o intérprete, levando-o a executar comandos maliciosos ou fornecer acesso não autorizado aos dados.
  •         Configuração incorreta de segurança. Essa é a preocupação mais comum para aplicações da web. Isso ocorre devido a configurações padrão inseguras, cabeçalhos HTTP mal configurados, configurações incompletas ou ad hoc, armazenamento em nuvem aberta e mensagens de erro detalhadas que contêm informações confidenciais. Os sistemas operacionais, bibliotecas, frameworks e apps não devem apenas ser configurados com segurança para permanecer protegidos dos agentes de ameaças, mas também corrigidos em tempo hábil.
  •         Autenticação e autorização quebradas. Quando as funções da aplicação relacionadas a autenticação e gerenciamento de sessão são implementadas incorretamente, agentes de ameaças podem explorá-las para comprometer senhas e chaves ou tokens de sessão. Por sua vez, invasores podem sequestrar contas de usuário ou administrador que podem ser usadas para comprometer um sistema inteiro.
  •         Scripts entre sites (XSS). Os agentes de ameaças podem abusar das falhas XSS para executar scripts em um navegador e sequestrar sessões de usuários, desfigurar sites ou redirecionar o usuário para sites maliciosos. As falhas de XSS ocorrem se um app incluir dados não confiáveis em uma nova página da web sem validação ou escape adequados. Essas falhas também podem ocorrer se um app atualizar uma página da web existente com dados fornecidos pelo usuário por meio de uma API de navegador de criação de HTML ou JavaScript.
  •         Desserialização insegura. Essa falha, que é a conversão imprópria de dados serializados de volta em objetos que a aplicação pode usar, geralmente leva à execução remota de código (RCE). Isso também pode permitir que agentes de ameaças executem ataques de reprodução, injeção e escalonamento de privilégios.
  •         Registro e monitoramento insuficientes. A falta de capacidade de detecção de ameaças pode permitir que agentes mal-intencionados adulterem, extraiam ou destruam dados, bem como atacar ainda mais os sistemas, manter a persistência e se transformar em mais sistemas.

 

Integrando Camadas de Cibersegurança Adequadas no Pipeline de DevOps

A segurança tende a se tornar uma reflexão tardia para os desenvolvedores que trabalham em equipes de desenvolvimento tradicionais porque estão muito focados em criar aplicações e cumprir as datas de lançamento. Os processos tradicionais resultam em segurança insuficiente e lacunas de comunicação entre as equipes de desenvolvimento e segurança e, por sua vez, representam o risco de enormes perdas financeiras para as empresas devido a violações de dados. Além disso, as vulnerabilidades descobertas na fase de implementação podem custar seis vezes mais para remediar do que as detectadas na fase de design, de acordo com uma pesquisa da IBM.

Para construir aplicações seguras, as equipes de desenvolvimento devem integrar camadas de cibersegurança adequadas que conduzam análises no contêiner, código-fonte e dependências, entre outros componentes. Em particular, essas são as camadas de segurança que eles precisam examinar:

  •         Verificação de contêineres. As tecnologias de contêiner aumentam a velocidade e a eficiência do processo de desenvolvimento, mas sua crescente adoção também significa que pode haver uma ampla gama de riscos e ameaças potenciais dos quais as equipes de desenvolvimento precisam proteger o processo de desenvolvimento. Ferramentas para análise de imagens de contêiner podem ajudar as equipes de desenvolvimento a verificar vulnerabilidades conhecidas, chaves, segredos, listas de verificação de compliance e variantes de malware em todos os estágios do ciclo de vida de desenvolvimento de software (SDLC). Essas ferramentas podem fornecer visibilidade e insights sobre as questões de segurança dentro do contêiner antes de serem enviadas para o ambiente de produção. Para minimizar ainda mais os riscos aos contêineres, as equipes de desenvolvimento também podem reduzir o uso de software de terceiros e usar outros verificáveis para garantir que o software malicioso não penetre no ambiente do contêiner.
  •         Análise de composição de software. Partes de código, que são potencialmente originados de fora da organização e geralmente não verificados durante a fase de análise estática, são incorporados e executados dentro do ambiente DevOps. Para verificar se há bibliotecas desatualizadas ou vulneráveis em seu código, ferramentas como a verificação de dependência do OWASP podem ser usadas. A Snyk, líder em segurança aberta focada em desenvolvedores, também fornece verificação gratuita de terceiros para projetos de código aberto.
  •         Teste estático de segurança de aplicações (SAST). Também conhecido como “revisão de código de segurança” ou “auditoria de código”, o SAST ajuda os desenvolvedores a encontrar vulnerabilidades e outros problemas de segurança no código-fonte da aplicação mais cedo no SDLC. Encontrar problemas de segurança neste estágio pode ajudar as empresas a economizar dinheiro e corrigir o código mais rapidamente.
  •         Teste de segurança de aplicação dinâmica (DAST). Também chamado de teste de “caixa preta”, o DAST pode encontrar vulnerabilidades e fraquezas de segurança em aplicações, empregando técnicas de injeção de falha em um app, como injeção de SQL, script entre sites (XSS) e falsificação de solicitação entre sites (CSRF). As soluções DAST podem ajudar a testar a resiliência de aplicações, contêineres e clusters quando submetidos a técnicas maliciosas que os agentes de ameaças usam para encontrar vulnerabilidades e pontos fracos em potencial.
  •         Teste de segurança de aplicação interativa (IAST). O IAST realiza testes de tempo de execução para aplicações da web a fim de detectar vulnerabilidades de segurança. As bases que o SAST e o DAST podem não ser capazes de cobrir podem ser preenchidas pelo IAST, pois ele combina elementos de ambas as abordagens, permitindo abranger mais código, fornecer resultados mais precisos e verificar uma gama mais ampla de regras de segurança. As soluções IAST conduzem todas as suas análises na aplicação em tempo real e em qualquer lugar nas seguintes áreas: IDE de processo de desenvolvimento, QA, ambiente integrado contínuo, ou mesmo em produção.

 

Melhores Práticas de Segurança de Aplicações

Com o mundo cada vez mais dependente de aplicações para uma infinidade de propósitos, as organizações têm a tarefa de criar apps que sejam seguros o suficiente para resistir a uma variedade de riscos e ameaças aos quais podem estar expostos. Abaixo estão algumas práticas recomendadas a serem seguidas para garantir que as aplicações sejam desenvolvidas com segurança. Enquanto algumas dessas práticas se concentram na adoção de ferramentas de verificação e teste, outras práticas também envolvem o incentivo de uma cultura que prioriza a privacidade e segurança dos dados.

  •         Implementar o Princípio do Menor Privilégio (POLP). O POLP deve ser implementado dentro das organizações. Esta política limita os direitos de acesso dos usuários apenas às permissões necessárias para que realizem suas tarefas, reduzindo assim o risco de abuso de conta ou sequestro e vazamento de dados confidenciais.
  •         Adote testes automatizados. Como o número de vulnerabilidades de software tem aumentado desde 2017, as equipes de desenvolvimento devem empregar testes automatizados no início do estágio de desenvolvimento para detectar erros ou falhas enquanto eles ainda são fáceis de gerenciar.
  •         Procure vulnerabilidades regularmente. Os desenvolvedores costumam usar bibliotecas externas ou pacotes de projetos de código aberto ao desenvolver software, mas essas bibliotecas podem estar repletas de vulnerabilidades conhecidas. Para detectar e corrigir as vulnerabilidades o mais cedo possível, uma varredura regular deve ser realizada nessas dependências.
  •         Empregue soluções de Runtime Application Self-Protection (RASP). As equipes de desenvolvimento devem usar soluções RASP para monitorar o tráfego para aplicações, contêineres e arquitetura serverless. As soluções RASP são projetadas para detectar ataques em tempo real. A adoção de soluções RASP permite a interceptação de todos os tipos de tráfego, incluindo aqueles que indicam comportamento malicioso, como injeção de SQL, cross-site scripting (XSS), vulnerabilidades, bots e outros ataques a aplicações da web.
  •         Treine equipes multifuncionais para o desenvolvimento da cultura DevSecOps. Uma cultura DevSecOps deve ser promovida dentro das organizações. Isso pode ser feito criando equipes multifuncionais especializadas em treinar desenvolvedores em disciplina de segurança, bem como ensinar profissionais de segurança sobre o processo de desenvolvimento de software. Isso pode permitir que as equipes de segurança obtenham um melhor entendimento das linguagens de programação e aprendam mais sobre como as APIs podem ser usadas para automatizar processos simples. Além disso, essas habilidades que as equipes de segurança podem adquirir com o treinamento, em última análise, reduzem suas tarefas e permitem que se concentrem em tarefas mais críticas.
  •         Inclua a segurança de aplicações na estratégia de compliance de privacidade de dados. A segurança de aplicações faz parte dos esforços gerais de uma organização para cumprir os regulamentos de privacidade de dados e padrões de TI. As empresas podem usar uma estratégia de compliance eficiente que segue a abordagem de “privacy by design”. Por exemplo, uma estratégia de compliance adequada para o Regulamento Geral de Proteção de Dados (GDPR) inclui a execução de verificações de privacidade e segurança por meio da implementação de controles de identidade e autenticação e controles de acesso apropriados, proteção de dados via POLP, além de criptografia, o uso de bibliotecas e frameworks seguros, entre outros. As mesmas práticas podem ser seguidas por organizações para cumprir outras leis de privacidade e proteção de dados, como a Lei de Portabilidade e Responsabilidade de Seguro Saúde (HIPAA).

 

Seguir essas práticas recomendadas pode ajudar as organizações a fortalecer sua abordagem à segurança de aplicações. Conforme ilustrado anteriormente, é fundamental que as organizações executem varreduras regulares e empreguem ferramentas de segurança avançadas para detectar malware, vulnerabilidades e outras ameaças. Além disso, elas também devem implementar políticas que possibilitem uma forte cultura de segurança – que capacite equipes de desenvolvimento e segurança por meio de treinamento e evite que as organizações paguem multas pesadas, garantindo que as aplicações permaneçam em compliance com as exigências de proteção de dados.

 

Soluções Trend Micro

A plataforma de serviços de segurança Trend Micro Cloud One™, que faz parte da Trend Micro™ Hybrid Cloud Security, permite que os desenvolvedores de software criem e executem aplicações à sua maneira. Ela tem controles de segurança que funcionam em toda a infraestrutura existente ou fluxos de código modernos, conjuntos de ferramentas de desenvolvimento e requisitos multiplataforma.

O Application Security, que é oferecido pela Cloud One, fornece detalhes completos de diagnóstico sobre vulnerabilidades de código e proteção de tempo de execução contra ataques automatizados e as ameaças mais comuns, como injeção de SQL e RCE. Ele também oferece cobertura e relatórios completos de cada instância de ataque, bem como informações sobre a identidade de um invasor e metodologia de ataque.

A Cloud One também oferece as seguintes tecnologias de segurança em nuvem para ajudar ainda mais os desenvolvedores a identificar e resolver problemas de segurança mais cedo e melhorar o tempo de entrega para as equipes de DevOps:

  •       Workload Security: proteção de tempo de execução para workloads
  •       Container Security: verificação automatizada de imagem de contêiner e de registro
  •       File Storage Security: segurança para serviços de armazenamento de arquivos e objetos em nuvem
  •       Network Security: segurança IPS da camada de rede em nuvem
  •       Conformity: segurança em tempo real para infraestrutura em nuvem — proteger, otimizar, cumprir