Ao longo do ano de 2021, decidimos começar a expor algumas das evoluções em nossa plataforma de CDN e WAF, como essas evoluções sempre ficavam “escondidas” e em “segredo”, devido a questões estratégicas, nós pouco publicamos sobre as melhorias da plataforma, nos meses que antecederam o final do ano de 2021 decidimos expor algumas das melhorias, juntamente com algumas tecnologias que utilizamos em nossa plataforma de WAF e CDN, o por que de expormos agora? justamente para demonstrar sermos uma tecnologia desenvolvida em solo nacional e que usa diversas outras tecnologias associadas, visto que na computação, nada é criado do zero, tudo é uma composição de softwares associados, bem configurados e sincronizados que leva a criação de plataformas, sistemas e serviços iguais ao WAF e a CDN da XLabs.
Assim como o Google, o Facebook e diversas outras empresas iniciaram suas atividades utilizando linguagens de programação como PHP, C/C++, Java, JavaScript, etc. Nossa empresa não foge ao normal. Nós utilizamos as mesmas tecnologias e linguagens que muitos grandes players utilizam no mercado, salvo a Microsoft que cria suas próprias ferramentas, web-servers com uma linguagem digamos que própria, as empresas todas utilizam na fonte diversas plataformas, uma vez que seria uma perda de tempo, praticamente, a re-criação de uma plataforma já criada e mantida, muitas vezes por alguma entidade de código aberto.
O que muitos grandes players fazem é a utilização dessas plataformas open-source e além disso, a melhoria dessas plataformas, exemplo a NetFlix que identificou vulnerabilidades em web-servers utilizados por eles próprios.
Até mesmo nós da XLabs Security já contribuímos com a comunidade open-source, disponibilizando códigos de exploits e ferramentas que podem auxiliar diversas empresas, seus analistas e até mesmo pesquisadores. Para quem já nos conhece isso não é novidade, para quem está nos conhecendo agora, possuímos códigos utilizados até mesmo em trabalhos e pesquisas do Instituto Militar de Engenharia do Exército Brasileiro.
Agora vamos parar de papo e abordar um pouco da tecnologia que utilizamos para a distribuição de IP’s maliciosos em nossa rede de WAFs, que compõem a plataforma de CDN (Content Delivery Network).
Essa tecnologia, utilizada até mesmo em plataformas como LinkedIn, trata-se do Apache Kafka, o qual nas últimas atualizações do nosso WAF, ajudou a resolver um problema que detectamos em nossa arquitetura de defesa para aplicações web.
Distribuição de IPs maliciosos entre WAFs utilizando Apache Kafka
Um dos fundamentos mais inerentes da XLabs Security se baseia na mitigação, atenuação e prevenção a ataques que possam estar ocorrendo sob as aplicações protegidas pelo nosso Web Application Firewall (WAF).
Dito isso, dia a dia, nossos especialistas aplicam seus conhecimentos na análise dos ataques incidentes em nossos serviços, buscando identificar padrões de comportamento de hackers que possam ser previstos e, principalmente, antecipados.
O bom entendimento de como cada ciberataque afeta a nossa infraestrutura, permite que nossos desenvolvedores consigam entendê-los e implementar soluções mais eficazes e assertivas no que se refere a mitigação desses ataques.
Neste artigo, vamos descrever como conseguimos limitar a progressão de ciberataques através dos nossos WAFs, aplicando conceitos de sistemas distribuídos e mensageria por meio do Apache Kafka.
Então, busque seu café, se ajeite na cadeira e aproveite essa leitura que contém um estudo de caso muito interessante na área de cibersegurança!
A proliferação de ciberataques nos WAFs
Antes de mais nada, vamos tentar entender como funciona a infraestrutura de WAF da XLabs. Nosso WAF é composto por diversas máquinas distribuídas horizontalmente ao redor do globo, dispostas na América do Sul, América do Norte, Europa, Ásia e Oceania. Cada uma dessas máquinas é um WAF independente, que recebe requisições HTTP/HTTPS direcionadas às aplicações WEB de clientes, verificando se não são requisições maliciosas antes de direcioná-las ,de fato, ao destino final. Legal né?
Nossos WAFs recebem requisições diretamente da nossa zona especial, que distribui as requisições de acordo com a origem das mesmas, direcionando-as sempre para o WAF geograficamente mais próximo. Assim mantemos o melhor desempenho possível durante o processo de entrega de conteúdo WEB aos usuários de nossos clientes.
Quando recebida, a requisição é analisada pelo nosso sistema de inteligência WebIPS (Web Intrusion Prevention System) presente em cada WAF. O WebIPS então verifica se não há presente na requisição nenhuma tentativa real de exploração de vulnerabilidade. Sempre que o WebIPS classifica a requisição recebida com criticidade alarmante, o IP de origem é adicionado em blacklist e o WAF para de respondê-lo.
Na Figura abaixo conseguimos ver um exemplo de como isso ocorre na prática. Inicialmente o IP fictício 111.111.111.111 efetua um ataque que incide sobre o WAF 1. O WebIPS presente no WAF verifica que é um ataque real e bloqueia o IP de origem imediatamente. Nesse momento, requisições posteriores param de ser respondidas/recebidas pelo WAF 1. Na figura abaixo vemos uma seta na cor vermelha representando uma requisição bloqueada.
Uma vez que, cada adição a blacklist é particular de cada WAF, podemos então observar um problema aqui, certo? Um IP que é bloqueado por um único WAF por estar efetuando ataques, ainda estará livre para performar outros tipos de ataques nos outros WAFs. Esse comportamento permite que hackers aprimorem seus conhecimentos sobre a infraestrutura da XLabs Security e, como a gente sabe, na área da Segurança da Informação. Conhecimento é poder.
Além do problema relacionado com diversos tipos de ataques sendo reproduzidos através dos WAFs, a redundância de trabalho exercido no bloqueio do mesmo IP é um problema. Isso tende a gerar um desperdício de recursos computacionais que poderiam ser destinados a outras tarefas que senão na mitigação de um IP malicioso reincidente na nossa rede.
Na figura abaixo, ilustramos esse problema na prática. Vamos supor que o mesmo IP 111.111.111.111 já está bloqueado no WAF 1, por ter efetuado o ataque do tipo A. Nesse momento, ele ainda está livre para realizar ataques do tipo B e C em outros WAFs da mesma região. Só após os WebIPS dos WAFs 2 e 3 agirem é que o IP será devidamente bloqueado.
Recentemente, nossos analistas têm verificado que esse comportamento tem se reproduzido com frequência em nossos serviços, ou seja, diversos hackers têm realizado ataques distintos em cada um dos nossos WAFs sucessivamente. Desta forma, eles acabam testando uma vasta gama de ataques na tentativa de conseguir um bypass. Apesar das tentativas em conseguir bypass costumeiramente falhem, este é um comportamento que queremos evitar.
Neste contexto, estudamos formas de aprimorar a segurança de nossos serviços, fazendo com que os bloqueios de IPs maliciosos ocorram de forma lateral entre os WAFs, automaticamente. A alternativa implementada se baseia na aplicação do Apache Kafka como um centralizador de IPs maliciosos, distribuindo entre os WAFs os endereços que devem ser adicionados em blacklist. Antes de vermos como isso ocorre, vamos falar um pouco do Kafka.
O Apache Kafka
Atualmente, uma das formas mais comuns de se distribuir dados através da rede com alto desempenho é com o Apache Kafka. O Kafka é um sistema distribuído de streaming e mensageria comumente aplicado em pipeline de dados e análise de streams, também sendo muito útil em agregação de logs e processamento de eventos.
O Kafka segue um modelo publish/subscribe de produtores e consumidores. Neste modelo, produtores podem publicar mensagens em entidades denominadas tópicos, e consumidores que por sua vez, se inscrevem nestes mesmos tópicos para de fato consumi-las.
Um cluster Kafka é constituído por um ou mais brokers, onde cada broker é uma instância individual que opera os serviços do Kafka. Os brokers são os principais responsáveis pelo armazenamento nos tópicos, bem como das mensagens que serão armazenadas particularmente em cada tópico.
Ainda, cada tópico pode ser constituído por uma ou mais partições, sendo essas partições distribuídas através dos brokers para agregar paralelismo e distribuir as cargas de armazenamento.
Quando uma mensagem é adicionada a um tópico, todos os consumidores que estão inscritos no tópico recebem a mensagem automaticamente. O consumo, por sua vez, ocorre sequencialmente, ou seja, as mensagens são consumidas uma por uma, na ordem exata em que são recebidas em cada tópico.
Em linhas gerais, a especialidade do Kafka é transportar dados em tempo real com alto desempenho, sendo extremamente útil em contextos onde os usuários necessitam distribuir dados através de diversas aplicações com desempenho satisfatório.
O Kafka e a distribuição de IPs maliciosos
Sendo o Kafka uma alternativa promissora, atuando na distribuição de dados, decidimos testar na prática uma aplicação do Kafka na distribuição de IPs maliciosos entre os WAFs. Vamos tentar entender como isso seria exercido?
Inicialmente, decidimos que cada WAF deve ser capaz de compartilhar IPs que estão sendo adicionados em sua blacklist. Desta forma, sempre que houver um compartilhamento de IP, todos os WAFs da nossa rede também devem receber este mesmo endereço e adicioná-lo em blacklist.
Assim, antes que o hacker tente distribuir ataques em outros WAFs, ele já estará presente em todas as blacklists. Esse comportamento coletivo dos WAFs não gera desperdício de recurso computacional, e, ainda, limita drasticamente o raio de ação do hacker em nossos serviços, coibindo futuras ações que possam vir a serem exercidas.
Esse compartilhamento de IP, no contexto do Kafka, obviamente deve ser a nível de mensagem. Desta maneira, antes de mais nada, criamos brokers do Kafka em nossa rede interna para que toda a infraestrutura do Kafka estivesse operacional para uso. Desta maneira, o conteúdo das mensagens enviadas por cada WAF é um IP identificado pelo seu WebIPS como malicioso. Com os serviços do Kafka operantes, inicializamos um tópico que armazenará os IPs.
Para realizar tanto a produção quanto o consumo das mensagens, cada WAF apresenta um produtor e um consumidor executando sob seus serviços.
Sempre que o WebIPS identifica um IP como malicioso, o WAF aciona um produtor que envia esse IP diretamente ao tópico. Uma vez que a mensagem está persistida no tópico, cada consumidor presente nos WAFs coleta a mensagem, e imediatamente realiza o bloqueio do IP armazenado na mesma. Assim, todos os WAFs que consomem mensagens direcionadas ao tópico adicionam o mesmo IP em suas respectivas blacklists.
Na figura abaixo, ilustramos bem como isso ocorre na prática. Observamos que o WAF 1 percebe um ataque do IP 111.111.111.111. O WebIPS do WAF 1 classifica o ataque como real e o próprio WAF 1 adiciona o IP responsável pelo ataque em blacklist.
Imediatamente, o produtor presente no WAF 1 transmite uma mensagem ao tópico no cluster Kafka contendo o IP malicioso como conteúdo. Após isso, os consumidores presentes nos WAFs 2 e 3 recebem essa mensagem e também adicionam o mesmo IP que atacou o WAF 1 em blacklist. Após isso, o endereço 111.111.111.111 já não pode performar mais nenhum tipo de ataque nos outros WAFs, tendo todo seu raio de ação limitado a partir desse momento.
Considerações
Atualmente, um dos requisitos fundamentais de empresas que prestam serviços relacionados a cibersegurança é a de entender e antecipar o comportamento de hackers, visando a melhor proteção de seus clientes. Na XLabs não seria diferente. Dito isso, a capacidade de desenvolver soluções cada vez mais precisas e ágeis no que se refere a conter a ação de hackers nos nossos serviços, ocorre intrinsecamente.
Neste artigo apresentamos como uma integração do Apache Kafka a nossa infraestrutura foi capaz de limitar drasticamente a quantidade de ataques hackers nos WAFs por meio da distribuição de IPs maliciosos entre eles. Com a aplicação desta ferramenta, conseguimos efetuar bloqueios laterais ao qual impede que diversos tipos de ataques sejam efetuados sucessivamente em cada instância de WAF.
Ao coibir a ação de hackers, além de conseguirmos limitar o conhecimento dos atacantes, também aperfeiçoamos ainda mais a proteção exercida a serviços WEB de nossos clientes, sendo essa a nossa principal prioridade.