Em nosso próximo relatório State of Application Delivery 2018, observamos que o uso de firewalls de aplicativos da Web (WAF) vem aumentando constantemente há anos. Isso é bom, porque os aplicativos hoje são a porta de entrada para dados corporativos e de clientes, e os métodos tradicionais de controle de acesso na camada de rede não são suficientes. Isso ocorre porque cada vez mais atores mal-intencionados estão mirando identidades e aplicativos para minerar esse ouro digital.
Então, como exatamente um WAF atenua todas essas vulnerabilidades que continuam surgindo como ervas daninhas no jardim? Existem três métodos principais que um WAF usa para detectar e prevenir ataques na web: negar/permitir solicitações, inspecionar e rejeitar e assinaturas.
Vamos explorar cada um, certo?
Negar/Permitir Solicitações
O método de solicitações de negação/permissão é muito parecido com o modelo de porta tradicional usado por firewalls de rede. As solicitações são negadas ou permitidas com base nas informações disponíveis. Essas informações podem ser simples – como um endereço IP – ou podem ser mais complexas e específicas para HTTP, como OPÇÕES ou MÉTODOS.
- Listas de Negação/Permissão
Se você sabe que um criminoso está vindo de um endereço IP específico ou de um intervalo de endereços IP, bloqueie-o. Se você sabe que um aplicativo só está autorizado a receber solicitações de um endereço IP específico ou de um intervalo de endereços IP, permita somente esses. Este é o método mais simples de proteção e depende de um conjunto bastante estático de informações: os endereços/intervalos de IP dos quais as solicitações devem ou não vir.
Se você está pensando, bem, por que não usar um firewall de rede para fazer isso? Afinal, é o que eles fazem. No local, isso funciona muito bem. Mas se você tem aplicativos que precisa proteger na nuvem pública, isso pode não ser uma opção. E se você é um dos 59% dos entrevistados em nossa pesquisa State of Application Delivery 2018 que já investiram em 2 a 6 provedores de nuvem diferentes, não pode contar que as políticas de firewall de rede serão as mesmas em todos os provedores. Embora você certamente possa implementar as mesmas regras em várias nuvens, impor regras em um WAF significa que você pode usar a mesma política no mesmo WAF em vários ambientes. A consistência é fundamental para o sucesso e a escala da segurança.
- Restringindo opções
O HTTP depende de um conjunto de cabeçalhos para instruir a plataforma do aplicativo (e o aplicativo) sobre o que o usuário deseja fazer. MÉTODOS HTTP, por exemplo, podem ser usados para OBTER, COLOCAR, POSTAR e EXCLUIR recursos. O campo OPTIONS também tem um conjunto de valores restritos por RFC que podem ser facilmente controlados por um WAF. Algumas vulnerabilidades – como Optionsbleed – exploram esses campos. Para eliminar a capacidade de explorar tais vulnerabilidades, você pode usar o WAF para restringir os valores possíveis apenas àqueles necessários para permitir a execução adequada do aplicativo. Em alguns casos, o WAF – por padrão – restringe esses valores. Por exemplo, o BIG-IP ASM (F5 WAF) por padrão não permite o método HTTP OPTIONS.
Assinaturas
Assinaturas são outro método de proteção comum a muitas soluções de segurança diferentes. Os serviços antivírus e antimalware dependem de assinaturas que lhes permitem verificar rapidamente evidências de vírus e malware e sinalizá-los. IPS/IDS também dependem muito desse método, assim como WAF. Existem dois tipos de assinaturas: definidas pelo usuário e gerenciadas pelo fornecedor.
- Gerenciado pelo fornecedor
Assinaturas gerenciadas pelo fornecedor geralmente são mantidas em um “banco de dados” que é mantido automaticamente pelo fornecedor. Isso inclui a atualização do banco de dados quando novas vulnerabilidades podem ser identificadas por uma assinatura digital exclusiva. Um WAF verificará uma solicitação recebida no banco de dados e agirá adequadamente se descobrir uma correspondência com uma assinatura no banco de dados. As assinaturas podem ser puramente texto simples, mas geralmente são combinações complexas de sequências obscuras que representam códigos maliciosos que acionam recursos de execução remota ou corrompem a plataforma do aplicativo e fornecem acesso ou negam serviço.
- Definido pelo usuário
Assinaturas definidas pelo usuário permitem que os operadores adicionem rapidamente uma assinatura ao banco de dados. Esse recurso é importante para garantir uma resposta rápida (dia zero em muitos casos) a novas vulnerabilidades, bem como para mitigar vulnerabilidades para as quais uma assinatura gerenciada pelo fornecedor ainda não foi emitida.
Inspeção
Por fim, a inspeção é incluída para garantir controle total sobre solicitações (e respostas). A inspeção de solicitações permite que o WAF compare informações na solicitação com strings e valores bons/ruins conhecidos para determinar se a solicitação é maliciosa ou legítima. Para aplicativos HTTP (o que significa a maioria deles na Internet hoje), esse é o recurso mais importante que um WAF deve fornecer. Se um WAF não oferece inspeção programável, você vai querer reconsiderar essa escolha. Como o HTTP é baseado em texto e extensível, não há praticamente nenhuma maneira de fornecer uma lista abrangente de “caixas de seleção” de opções e métodos que você pode usar para inspecionar solicitações. Pouquíssimos cabeçalhos HTTP têm opções restritas, o que torna muito difícil limitar o que pode ou não ser inserido neles. Isso significa que a inspeção é frequentemente necessária para detectar códigos maliciosos incorporados em cabeçalhos ou na própria carga útil. Há duas maneiras de usar a inspeção: cabeçalhos conhecidos e carga útil.
- Cabeçalhos conhecidos
Há um conjunto de cabeçalhos bem definidos que cada solicitação HTTP carrega consigo. Host, User-Agent, Content-Type, etc… são quase onipresentes. Cada um é pouco mais que uma sequência de texto, com uma variedade tão grande de combinações que é difícil permitir valores na lista e, em vez disso, devem ser verificados individualmente em busca de valores com aparência maliciosa. Em termos gerais, um WAF pode analisar rapidamente os cabeçalhos HTTP e habilitar sua inspeção. Eles estão no início de cada solicitação e são conhecidos por serem usados para cometer uma variedade de ataques contra plataformas de aplicativos: ApacheKiller , Optionsbleed e Apache Struts estão entre as vulnerabilidades mais conhecidas.
- Inspeção de carga útil
A inspeção de carga útil é o que parece: ela inspeciona toda a carga útil – do primeiro ao último byte – em busca de combinações conhecidas de dados alfanuméricos que indiquem uma tentativa de explorar uma vulnerabilidade. A inspeção de carga útil permite que os operadores examinem cabeçalhos HTTP personalizados, bem como o corpo de uma solicitação em busca de indicadores específicos de atividade maliciosa. Isso requer que o WAF primeiro mantenha todo o conteúdo da solicitação. Isso é necessário porque os pacotes só armazenam uma quantidade limitada de dados e, se os dados maliciosos abrangerem dois pacotes, eles podem passar despercebidos pelos serviços que apenas inspecionam pacote por pacote. Ao inspecionar toda a carga útil, um WAF garante que, não importa onde os dados maliciosos estejam, eles possam ser descobertos e impedidos de chegar ao seu alvo.
Um WAF pode fazer muito mais do que mitigar vulnerabilidades para proteger aplicativos. Muitos também incluem detecção de bots, limitação de taxas, prevenção de DDoS e muito mais. Mas o objetivo principal de um WAF é proteger aplicativos mitigando vulnerabilidades. Embora SQLi, XSS e CSRF sejam geralmente mencionados, eles já são quase "antigos" neste momento. Os criminosos foram além das vulnerabilidades óbvias dos aplicativos e começaram a atacar as plataformas porque elas oferecem um conjunto muito maior de vítimas para explorar. Vulnerabilidades de plataforma – aquelas em HTTP e suas estruturas – são uma fonte crescente de violações que se beneficiam das proteções fornecidas por um WAF de classe empresarial.
Ao empregar varreduras tradicionais de negação/permissão e baseadas em assinaturas com a capacidade de inspecionar uma solicitação completa (e resposta), um WAF fornece a proteção que as empresas precisam hoje para manter a si mesmas — e seus clientes — seguras.