BLOGUE

Alterando regras de segurança em tempo real com aprendizado de máquina

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 26 de novembro de 2018

Visibilidade — ou falta dela — é uma reclamação comum em todos os domínios operacionais e de desenvolvimento hoje em dia. Os desenvolvedores lamentam a falta de visibilidade do desempenho dos aplicativos uma vez implantados no nether que é a "produção" - seja no local ou em uma nuvem pública. Operações de todos os tipos — de infraestrutura a rede e segurança — lamentam a incapacidade de espiar as brechas do tráfego de aplicativos e extrair de seu fluxo sinais de um ataque.

A visibilidade, como é usada em segurança, é necessariamente alcançada pela implantação de serviços de rede e aplicativos que estão logicamente na frente do aplicativo. Essa prática surgiu por muitos motivos, mas a verdade é que um aplicativo não tem o contexto necessário para reconhecer muitas formas de ataque. Isso ocorre porque as pilhas de aplicativos restringem os desenvolvedores às informações disponíveis por conexão. Esta é uma medida de segurança por si só, pois o isolamento impede que um agente mal-intencionado em uma conexão tenha acesso a um agente bom em outra conexão.

Mas essa restrição limita a capacidade do aplicativo — e sua plataforma — de entender conexões e tráfego de aplicativos em contexto. Ao mover essa responsabilidade para o upstream — na frente — do aplicativo, a rede e os serviços do aplicativo têm a oportunidade de avaliar cada conexão e sua carga útil no contexto de todas as conexões e cargas úteis trocadas com esse aplicativo.

É importante reconhecer isso quando analisamos como lidar com a crescente ameaça de ataques DoS na camada de aplicação. 

É desconcertante notar que esses ataques à camada de aplicação estão aumentando em volume e frequência. É ainda mais preocupante saber que 43% dos ataques DoS na camada de aplicação conseguem escapar da detecção baseada em assinatura e reputação. Assinaturas estáticas se tornam rapidamente obsoletas pela rápida evolução da capacidade dos criminosos de personalizar e atingir aplicativos específicos.

Assinaturas estáticas são como vacinas contra gripe. As vacinas contra a gripe são desenvolvidas para proteger contra uma cepa específica da gripe, com base na experiência anterior com o vírus. É essencialmente uma assinatura biológica que identifica um vírus específico. Ele não é capaz de identificar uma nova cepa do mesmo vírus, o que nos deixa vulneráveis a sofrer com mais um surto de gripe.

Os maus atores são tão hábeis quanto um vírus da gripe em se adaptar e evoluir para evitar detecção e eliminação. Para enfrentar esse desafio, precisamos ser capazes de identificar os maus atores com base em seu comportamento, e não em uma assinatura específica. Para fazer isso , precisamos de visibilidade e do contexto que ela pode nos dar. 

Proteção DoS comportamental L7

Essencialmente, a proteção comportamental L7 DoS é uma vacina contra gripe capaz de detectar o vírus responsável com base em seu comportamento, e não em sua composição real. Essa capacidade é especialmente importante na camada 7 (aplicação) porque esses ataques não são meramente volumétricos. Alguns são projetados apenas para bloquear conexões e drenar a capacidade do aplicativo de atender usuários legítimos, negando-lhes o serviço. Outros são mais sutis, tentando elaborar solicitações de modo que o aplicativo trave e cause uma interrupção.

Para detectar as diversas cepas de ataques DoS L7, é necessária a capacidade de avaliar solicitações individuais em relação ao que é considerado normal. Mas simplesmente definir um comportamento "normal" é como criar uma assinatura. O que é normal para um aplicativo de hiperescala baseado em API não é normal para um aplicativo baseado na web usado por uma única unidade de negócios ou departamento.

Portanto, determinar o que é "normal" é o primeiro passo. O DoS comportamental faz isso coletando informações específicas de cada pacote que passa pelo sistema. Esses bits são retirados dos dados de rede, transporte e aplicação. Uma linha de base é estabelecida a partir de coisas como atributos ou tamanhos normais de cabeçalho, qual é o estresse normal no servidor ou tempos de resposta e latência normais. Usando um modelo estatístico, o sistema calcula um limite de normalidade para esses valores a partir de milhares de observações por segundo.

Quando o aplicativo mostra sinais de estresse com desempenho degradado ou carga pesada, ele aciona o sistema para entrar em "modo de ataque". Neste modo, várias coisas acontecem: 

  • A limitação de taxa começa enquanto uma assinatura dinâmica é criada com base na descoberta de anomalias.
  • Dependendo das suas configurações, a nova assinatura personalizada pode aguardar sua aprovação ou ativar automaticamente a mitigação.
  • Você pode personalizar ainda mais o desempenho da mitigação de ataques quando o tráfego corresponde à nova assinatura.
    • Conservador – bloqueia apenas os maus conhecidos
    • Padrão – bloqueia apenas os ataques conhecidos como ruins, a menos que o estresse do servidor esteja muito alto e, então, limita a taxa de todo o tráfego durante o ataque
    • Agressivo – limita automaticamente a taxa de todo o tráfego conforme necessário para garantir a boa saúde do servidor
  • Quando a assinatura dinâmica é executada por tempo suficiente para identificar a origem do ataque, a mitigação muda da limitação de taxa para o bloqueio baseado na camada 3.

Esse processo inclui garantir que haja menos de 5% de sobreposição de características com "bons fluxos" para evitar falsos negativos. Quando a integridade do aplicativo retornar ao normal, o sistema poderá relaxar.

A vantagem do L7 Behavioral DoS é que ele se concentra em aprender constantemente o que é normal e identificar o que não é. Isso permite detectar ataques L7 que são novos ou evoluíram de ataques anteriores que os sistemas baseados em assinaturas estáticas não notarão até que sejam atualizados.

A análise comportamental é possível graças a modelos de aprendizado de máquina muito focados. Esses modelos estão permitindo que a proteção de aplicativos evolua em tempo real, oferecendo a agilidade que o domínio da segurança tanto precisa para se manter atualizado hoje. Os criminosos estão constantemente ajustando e modificando os ataques para evitar a detecção. Para proteger melhor os aplicativos, os serviços de segurança precisam mudar suas premissas e operar no contexto do ambiente em que estão. Simplesmente não é razoável pedir que profissionais de segurança criem limites para cada aplicação no portfólio da empresa.

À medida que a carga sobre segurança e operações aumenta com a adição de novos aplicativos e ambientes, é importante transferir esse fardo das pessoas para a tecnologia sempre que possível. O DoS comportamental como parte de um WAF avançado é uma das maneiras de colocar as máquinas para trabalhar para você , em vez de contra você.