Os ciber ataques estão aumentando, especialmente entre pequenas e médias empresas: um relatório descobriu que 70% das empresas menores já sofreram um ataque.
Muitas pequenas e médias empresas não estão preparadas para o aumento das ameaças à segurança. De fato, 45% dessas empresas relatam ter medidas de segurança insuficientes para evitar ciber ataques. Este artigo discute um possível ponto fraco: superfícies de ataque em aplicações de software.
Pequenas e médias empresas podem mapear possíveis fragilidades e implementar um programa de gerenciamento de superfície de ataque para reduzir a vulnerabilidade e aumentar a cibersegurança. Em última análise, a implementação de um plano de gerenciamento de superfície de ataque protege os dados confidenciais do cliente e outros ativos valiosos de ciber ataques.
Superfície de ataque de uma aplicação de software
Uma superfície de ataque é a soma de todas as possíveis exposições a riscos de segurança no ambiente de software de uma organização. Em outras palavras, é o conjunto de todas as possíveis vulnerabilidades (conhecidas e desconhecidas) e controles em todos os componentes de hardware, software e rede.
As superfícies de ataque podem ser categorizadas em três tipos básicos:
- Superfície de ataque digital. A superfície de ataque digital abrange todo o ambiente de rede e software de uma organização. Pode incluir aplicação, código, portas e outros pontos de entrada e saída.
- Superfície de ataque física. As superfícies de ataque físicas incluem todos os dispositivos endpoint de uma organização: sistemas desktop, laptops, dispositivos móveis e portas USB.
- Superfície de ataque de engenharia social. A engenharia social ataca a vulnerabilidade de usuários humanos. Os tipos mais comuns de ataque contra organizações incluem spear phishing, pretexting e outras técnicas de manipulação usadas para enganar indivíduos e fazê-los fornecer acesso a informações confidenciais.
Embora a organização deva estar ciente de toda possível vulnerabilidade, aqui nos concentramos na superfície de ataque de aplicações de software. Isso se refere a todas as funções possíveis em qualquer código em um ambiente de software que podem ser acessadas por um usuário não autenticado ou por um malware.
Identificando a superfície de ataque de uma aplicação
Identificar a superfície de ataque de uma aplicação de software requer o mapeamento de todas as funções que precisam ser revisadas e testadas quanto à vulnerabilidade. Isso significa atender a todos os pontos de entrada ou saída no código fonte da aplicação. Quanto maior a superfície de ataque de uma aplicação de software, mais fácil será para um invasor ou malware acessar e executar código em uma máquina alvo.
Implementando o gerenciamento de superfície de ataque
O gerenciamento de superfície de ataque em aplicações de software visa detectar fragilidades em um sistema e reduzir o número de vulnerabilidades exploráveis. O objetivo de analisar a superfície de ataque é conscientizar desenvolvedores e especialistas em segurança sobre todas as áreas de risco em uma aplicação. A conscientização é o primeiro passo para encontrar maneiras de minimizar os riscos.
Por fim, as empresas podem usar a análise de superfície de ataque para implementar o que é conhecido como segurança Zero Trust por meio de conceitos básicos como segmentação de rede e estratégias semelhantes.
Superfícies de ataque primárias
As superfícies de ataque flutuam constantemente à medida que uma empresa adiciona novos componentes, como sites, nuvem e aplicações móveis, hosts etc. No entanto, geralmente os tipos de vulnerabilidade permanecem os mesmos.
Localizando vulnerabilidades de software
A criação de um modelo de superfície de ataque é um dos primeiros passos para melhorar a cibersegurança. Ele revelará os pontos mais vulneráveis de uma aplicação de software específica, que variam significativamente de empresa para empresa.
Fique atento a estas vulnerabilidades comuns de software:
- Problemas de controle de acesso. O controle de acesso é difícil quando os funcionários têm diferentes meios de acessar o sistema (no escritório e remotamente, por exemplo). Muitas vezes, os desenvolvedores de software acabam inserindo regras em vários locais do código — falhas que podem ser facilmente expostas e exploradas. Atacar vulnerabilidades de controle de acesso pode permitir que hackers alterem ou excluam conteúdo ou até mesmo assumam a administração do website.
- Falhas de injeção. Falhas de injeção incluem chamadas para o sistema operacional e chamadas para bancos de dados de backend via SQL. Ataques de injeção ocorrem frequentemente por meio de campos de entrada que se comunicam com bancos de dados e diretórios. Muitas vezes esses campos não possuem um filtro de entrada, o que os torna vulneráveis a ataques.
- Problemas de autenticação. Quando as funções do app relacionadas ao gerenciamento de sessão e autenticação são implementadas incorretamente, o invasor pode obter acesso a um sistema com as mesmas permissões que os usuários alvo. Eles podem então comprometer chaves, senhas, etc.
- Problemas de entidade externa XML. A configuração fraca dos analisadores XML que processam entradas XML contendo referências a entidades externas pode levar a problemas como exposição de informações confidenciais e negação de serviço (DoS).
- API personalizada. A API adiciona vulnerabilidade por meio de autenticação de usuário falha, autorização de nível de objeto falha, exposição excessiva de dados e outros problemas.
- Formulários da Web. Adicionar formulários da web fornece mais maneiras de enviar dados diretamente para seu servidor. Uma ameaça comum de formulário da web é o ataque cross-site scripting (XSS), no qual um invasor faz com que um script malicioso seja executado no navegador de um usuário. Outro é o ataque de falsificação de solicitação entre websites, onde o invasor engana o usuário para que ele envie uma solicitação involuntariamente.
- Compatibilidade com versões anteriores. Quanto mais versões de um software existem, mais fácil é introduzir vulnerabilidade.
Identificando superfícies primárias comuns de ataque
Geralmente, as superfícies de ataque primárias mais comuns em aplicações de software são pontos de entrada e saída remotos. Esses pontos de alto risco incluem interfaces com sistemas externos e a Internet, especialmente onde o sistema permite acesso anônimo:
- Números de sistema autônomo (ASNs)
- Endereço IP e bloqueios de IP
- Certificados SSL e atribuição
- Registros, contatos e histórico do WHOIS
- Portas TCP/IP
- Nuvem pública e privada
- Domínios e subdomínios
- Serviços de servidor web, como e-mail e bancos de dados
Superfícies de ataque x vetores de ataque
Para atingir uma inteligência de ameaças adequada, é necessário entender a diferença entre superfície de ataque e vetores de ataque. Com esse entendimento, as empresas podem criar um plano de gerenciamento de superfície de ataque para se proteger contra ciber ataques.
Definindo vetores de ataque
Vetores de ataque são todos os métodos pelos quais usuários não autorizados podem obter acesso aos dados. A aplicação bem-sucedida de vetores de ataque por um ator mal-intencionado pode resultar em comprometimento de dados ou pior.
Os vetores de ataque podem ser agrupados em dois tipos diferentes: ataque passivo e ataque ativo.
Vetores de ataque passivos são caminhos explorados para obter acesso ao sistema sem afetar os recursos dele. Eles incluem técnicas de escuta, como captura de sessão, varredura de porta ou análise de tráfego.
Vetores de ataque ativos são caminhos explorados que afetam a operação de um sistema. Eles incluem ransomware, ataque de phishing e ataque de negação de serviço distribuído (DDoS).
Distinguindo a superfície de ataque dos vetores de ataque
Simplificando, a superfície de ataque é o total de todos os pontos que um ator mal-intencionado poderia explorar em uma aplicação (ou, mais amplamente, um sistema). Um vetor de ataque é o método pelo qual um ator mal-intencionado explora um desses pontos individuais.
Mapear uma superfície de ataque fornece uma ampla visão geral de todas as possíveis fragilidades de uma aplicação de software. A análise de vetores de ataque individuais fornece à equipe de segurança informações sobre o que precisa ser corrigido ou reforçado.
Identificando superfícies de ataque e vetores de ataque
A superfície de ataque digital é constituída por dois tipos de ativos: fatores conhecidos e fatores desconhecidos. Fatores conhecidos são aqueles ativos que os desenvolvedores conhecem e monitoram. Isso inclui subdomínios e processos gerais de segurança.
Fatores desconhecidos, também chamados de ativos de shadow IT, são aplicações e dispositivos não sancionados conectados à rede de uma organização. Eles podem incluir dispositivos físicos (como smartphones e tablets de usuários), aplicativos de mensagens, armazenamento em nuvem e aplicativos de eficiência no local de trabalho. Como esses ativos não foram formalmente integrados ou examinados pelos departamentos de TI, eles ficam fora do radar de segurança dos desenvolvedores, deixando os sistemas vulneráveis.
O gerenciamento da superfície de ataque é importante para que as empresas descubram todos os fatores na superfície de ataque, tanto conhecidos quanto desconhecidos.
Gerenciar superfícies de ataque físicas e digitais
Reduzir uma superfície de ataque requer primeiro saber o que é a superfície de ataque. Uma análise de superfície de ataque revelará todos os fatores conhecidos e desconhecidos que constituem a possível vulnerabilidade do ambiente de software de uma organização.
Um princípio a ter em mente: quando se trata de segurança, é mais fácil ser proativo e defensivo para afastar possíveis ataques do que resolver o problema depois.
Reduzindo superfícies de ataque
Quando se trata de reduzir a superfície de ataque, comece sistematicamente com as soluções de segurança mais básicas. Por exemplo, como portas TCP/IP abertas são vulneráveis, certifique-se de que um firewall esteja instalado para limitar o número de portas TCP/IP acessíveis. Aplique atualizações de segurança e correções relevantes e use criptografia com certificados HTTPS e SSL.
Mas há coisas mais específicas que você pode fazer, dependendo do ambiente de software que precisa ser protegido.
Por exemplo, limite a quantidade de código exposto. Todo código tem vulnerabilidades que podem ser possivelmente exploradas e, quanto mais código, maior o potencial para falhas. Minimizar a quantidade de código, então, é uma boa maneira para as empresas reduzirem a superfície de ataque. À medida que sua aplicação de software amadurece e você adiciona funcionalidades, seus módulos principais podem adicionar mais e mais funcionalidades. Ocultar parâmetro não utilizado para fornecer menos coisas para o ator mal-intencionado atacar. E se você não estiver usando o parâmetro, pergunte-se se ele poderia ser removido. Revise cuidadosamente cada módulo para identificar qualquer código morto.
Da mesma forma, geralmente aplicações de terceiros podem ser perigosas porque seu código fonte amplamente disponível aumenta a superfície de ataque. Se você usar uma aplicação de terceiros, revise e teste o código cuidadosamente. Para proteger o código deles, você também pode tentar renomeá-los ou ocultar sua identidade.
Minimizando os pontos de entrada disponíveis
Você também deve considerar cuidadosamente qual funcionalidade pode ser acessada pelos usuários não autenticados. Por exemplo, como as demonstrações on-line disponibilizam todo o seu código, limite o acesso aos clientes ou usuários registrados. Limite também o acesso aos módulos de administração ou gerenciamento de conteúdo, bem como aos módulos de intranet ou extranet. Aplique restrições de IP, use certificados de porta e cliente obscuros e mova módulos de administração para um website separado.
Além disso, considere tomar as seguintes medidas para limitar o acesso aos pontos de entrada:
- Valide e higienize entradas de formulários da web. Isso protege contra ataques de injeção SQL.
- Colete apenas os dados necessários e torne-os anônimos sempre que possível.
- Crie uploads de arquivos seguros limitando os tipos de arquivos que podem ser carregados, validando o tipo de arquivo e permitindo que somente usuários autenticados carreguem os arquivos.
- Aumente a segurança da nuvem com a proteção de workload na nuvem, que oferece proteção contra ataques para workloads, containers e Kubernetes.
Desativando funcionalidades desnecessárias
Normalmente, novos ativos digitais, como servidores e sistemas operacionais, chegam desconfigurados. Por padrão, todos os serviços de aplicações estão ativados e todas as portas estão abertas. Além disso, essas aplicações e portas normalmente não são atualizadas. Como tal, elas representam uma fonte de vulnerabilidade. Então, parte do procedimento de segurança deveria ser revisar esses ativos digitais e desativar aplicações, funções e serviços desnecessários. Novamente, quanto menor for a superfície de ataque, menor será a probabilidade de um ator mal-intencionado conseguir uma base de apoio.
Para saber mais sobre como proteger sua empresa contra ciber ataques, confira nosso banco de dados 101 de cibersegurança. Ou entre em contato com a CrowdStrike para ajudar a melhorar sua cibersegurança.