No contexto do Score de Ataque WAF, que é a camada de aprendizado de máquina (ML) da Cloudflare construída em cima de seu Firewall de Aplicação Web (WAF), a popularidade do recurso levou à necessidade de melhorias de desempenho. O objetivo do recurso é complementar o WAF e detectar contornos de ataques que não foram encontrados anteriormente, capturando vulnerabilidades zero-day e aumentando a proteção do cliente contra ameaças emergentes e desconhecidas.
Para otimizar o desempenho do modelo ML do WAF, foram tomadas várias medidas. Em primeiro lugar, a fase de pré-processamento foi otimizada usando Aho-Corasick DFA para substituir consultas de mapa de hash, o que reduziu a latência em 47,84% para 1,64x. Em seguida, foi adotada uma abordagem baseada em correspondência, o que reduziu a latência em 53,45% para 2,15x. Em seguida, foi desenvolvida uma nova implementação de substituição de letras, que dobrou a velocidade de pré-processamento e a tornou quatro a cinco vezes mais rápida que a versão original.
Depois disso, foi implementada uma pesquisa de ngram sem ramificação, o que reduziu a latência em 91,33% para 11,54x. Isso foi alcançado pré-computando tabelas de lookup de offset e usando-as para substituir operações de comparação com acessos diretos à memória, que são muito mais rápidos e não envolvem ramificação.
Por fim, a inferência do modelo foi otimizada habilitando a multiplicação de matrizes SIMD e usando XNNPack, o que reduziu a latência em 77,17% para 4,38x. Além disso, foi implementado um cache LRU para pular execuções redundantes e reduzir ainda mais a latência. No geral, as otimizações reduziram o tempo de execução do ML do WAF em cerca de 81,90%, de 1519 para 275 microssegundos, ou 5,5x mais rápido.
blog.cloudflare.com
Making WAF ML models go brrr: saving decades of processing time
Create attached notes ...