Firewall de aplicativo da Web
Os firewalls de aplicativos da Web (WAFs) são um tipo de sistema de detecção e prevenção de intrusões e podem ser uma solução de hardware ou software. Ele foi projetado especificamente para inspecionar HTTP (s) e analisar as solicitações GET e POST usando a terrível lógica de detecção explicada abaixo. O software de firewall de aplicativos da Web geralmente está disponível como um plug-in de servidor da Web.
A WAF tornou-se extremamente popular e várias empresas oferecem uma variedade de soluções em diferentes categorias de preços, desde pequenas empresas a grandes corporações. O WAF moderno é popular porque possui uma ampla variedade de tarefas cobertas, para que os desenvolvedores de aplicativos da Web possam confiar nele para vários problemas de segurança, mas supondo que essa solução não possa garantir proteção absoluta. Um fluxo de trabalho WAF básico é mostrado abaixo.

Sua principal função é a detecção e o bloqueio de consultas nas quais, de acordo com a análise WAF, existem algumas anomalias ou um vetor de ataque é rastreado. Essa análise não deve dificultar a interação de usuários legítimos com um aplicativo da Web, mas, ao mesmo tempo, deve detectar com precisão e pontualidade qualquer tentativa de ataque. Para implementar essa funcionalidade, os desenvolvedores do WAF geralmente usam expressões regulares, tokens, análise comportamental, análise de reputação e aprendizado de máquina e, geralmente, todas essas tecnologias são usadas juntas.

Além disso, o WAF também pode fornecer outras funcionalidades: proteção contra DDoS, bloqueio de endereços IP de atacantes, rastreamento de endereços IP suspeitos, adição de um sinalizador somente HTTP ao cookie ou adição da funcionalidade de tokens CSRF. Cada WAF é individual e possui um arranjo interno exclusivo, mas existem alguns métodos típicos usados para análise.
Expressão regular
A maioria dos WAFs existentes é baseada em regras baseadas em expressões regulares. Para criá-los, alguns conjuntos conhecidos de ataques são estudados pelo desenvolvedor do WAF e, consequentemente, determinadas construções sintáticas importantes são determinadas, cuja presença pode ser reivindicada para executar o ataque. Com base nos resultados obtidos, são escritas expressões regulares que podem encontrar essas construções. Por exemplo, analisando cabeçalhos HTTP como Server: Apache Tomcat / 7.0.x, o WAF pode bloquear uma resposta e, assim, impedir o vazamento de informações do servidor ou, alternativamente, gerar um alerta.
No entanto, essa abordagem tem várias desvantagens. O alcance da aplicabilidade de uma expressão regular é limitado a uma consulta e, muitas vezes, até a um parâmetro de consulta específico, o que obviamente reduz a eficácia de tais solicitações. Em segundo lugar, a sintaxe das expressões regulares, a lógica complexa dos protocolos de texto, permitindo a substituição de construções equivalentes e o uso de diferentes representações de símbolos, levam a erros ao criar essas regras. A tabela abaixo mostra as técnicas mais comuns de desvio.

Ofuscação de SQL. É possível alterar a expressão para que, usando a sintaxe do idioma, ele possa se livrar de espaços. Por exemplo, no SQL, você pode usar colchetes e estrelas:
s / * / e / ** // * e * // * / l / * le * c * // * / ect ~~ / ** / 1 ou / id = 1 + un / ** / ion + sel / ** / ect + 1,2,3--
O outro é baseado no uso de codificações diferentes, de forma que o WAF não decodifique os dados em determinados locais. Por exemplo, após substituir um caractere por seu código de URL no processo de normalização, o WAF não poderá entender que é necessário decodificar os dados e ignorar a solicitação, enquanto o mesmo parâmetro será aceito e decodificado pela web com sucesso. aplicação.

Procure construções sintáticas equivalentes atípicas. Esse método é usado para encontrar uma maneira de operação que não pôde ser considerada pelos desenvolvedores do WAF ou o vetor estava ausente na amostra do estudo para aprendizado de máquina. Uma dessas construções é a representação de código Javascript não alfanumérico, um exemplo disso é mostrado abaixo.

Método de criação de pontuação
Essa abordagem não detecta ataques, mas complementa outros métodos, tornando-os mais precisos e flexíveis. O motivo da introdução da ferramenta é que a presença na consulta de algum design suspeito é insuficiente para detectar um ataque ou, pelo contrário, pode levar a um grande número de erros falso-positivos. Esse problema é resolvido com a introdução de um sistema de pontuação. Por exemplo, cada regra baseada em expressões regulares é complementada com informações sobre a criticidade de sua operação; Após identificar todas as regras trabalhadas, sua criticidade é resumida. No caso de superar um determinado valor limite, o ataque é detectado e a solicitação é bloqueada.
Análise comportamental
Detectar tentativas de explorar vulnerabilidades nos parâmetros de consulta não é a única tarefa do WAF. É importante identificar o próprio procedimento de pesquisa de vulnerabilidades, que pode se manifestar nas tentativas de varredura, força bruta de diretório, difusão de parâmetros e outros métodos de detecção de vulnerabilidades que são freqüentemente usados por ferramentas automatizadas e reagir de acordo com eles. WAFs mais avançados ainda sabem como criar um arquivo XML com cadeias de consulta típicas do comportamento normal do usuário e bloquear tentativas de enviar solicitações em uma ordem diferente do comportamento padrão. Esse mecanismo não apenas neutraliza ataques, mas também complica o processo de encontrar uma vulnerabilidade.
Analisadores de analisador de tokenizador
Essa abordagem para detectar ataques é um conceito complexo; no entanto, não é fácil desmontá-lo no iniciador C ++ da biblioteca Libinjection, que permite detectar com rapidez e precisão os ataques de injeção SQL. Atualmente, para a biblioteca Libinjection, existem portas para várias linguagens de programação, incluindo Java, C e Python. O mecanismo é reduzido à pesquisa de assinaturas, representada como uma sequência de tokens. Algumas das assinaturas são adicionadas à lista negra interna e são consideradas inaceitáveis ou maliciosas. Em outras palavras, antes de analisar qualquer consulta, ela primeiro leva a um conjunto de tokens. Os tokens são divididos em diferentes tipos, string, char, operador regular, número, comentário, variável, etc.
Uma das principais desvantagens desse método é que é possível construir um design que levará à formação incorreta de tokens; portanto, a assinatura da solicitação será diferente da esperada.
Ataques direcionados a tokenisers estão associados a tentativas de quebrar a lógica dividindo a solicitação em tokens usando token-breakers. Esses são os símbolos que permitem influenciar a escolha de um elemento de sequência para corresponder a um token específico e, assim, ignorar a pesquisa por assinaturas. No acesso aberto, existem algumas folhas de dicas, obtidas pelo fuzz do Mysql e pela verificação subsequente de consultas no Libinjection.
Análise de reputação
O mecanismo de reputação é herdado diretamente de firewalls e antivírus. Hoje, quase qualquer WAF inclui listas de endereços de serviços VPN, anonimizadores, nós da rede Tor e participantes de botnets que podem ser usados para bloquear solicitações originadas em endereços suspeitos. WAFs mais avançados podem atualizar automaticamente seus bancos de dados e fazer entradas adicionais com base no tráfego analisado.
Sumário
Em geral, o Web Application Firewall é uma ferramenta de proteção moderna e boa, e nunca será supérflua para aplicativos da Web. A idéia principal de encontrar maneiras de ignorar o WAF é levar a consulta solicitada para um formulário em que ainda seja compreensível para o aplicativo da Web atacado, mas não seja compreensível ou não pareça inofensivo para o WAF.
No entanto, existem várias classes de vulnerabilidades que o WAF não pode detectar. Isso pode ser qualquer vulnerabilidade lógica, nesse caso, não há comportamentos anormais nas solicitações. Além disso, alguns estudos realizados para otimizar as regras do WAF também mostram métodos para excluir solicitações legítimas do processo de inspeção, o que pode ser potencialmente perigoso. É provável que o WAF também não seja útil para identificar rivais, como condição de corrida e autenticação de usuário insegura.
Referência
Vladimir Ivanov (2016) Tabelas de símbolos permitidos em diferentes entradas da expressão SQL, resultado da análise de tabelas fuzz. Disponível em: www.blackhat.com/docs/us-16/materials/us- 16-Ivanov-Web-Application-Firewalls-Analysis-Of-Detection-Logic.pdf
Torrano-Gimenez, C., Perez-Villegas, A. e Alvarez, G. (2009) 'A Firewall de aplicativos Web baseados em anomalias de auto-aprendizagem', Springer, Berlim, Heidelberg. doi: doi.org/10.1007/978-3-642-04091-7_11 .
Ramsingh, C. e Centonze, P. (2017) 'Program Analysis for Database Injections', REVISTA INTERNACIONAL DE COMPUTADORES E TECNOLOGIA, 16 (6), pp. 6977 - 6986. Doi: 10.24297 / ijct.v16i6.6332.
Prokhorenko, V., Choo, KKR e Ashman, H. (2016) 'Técnicas de proteção de aplicativos da Web: Uma taxonomia', Journal of Network and Computer Applications, 60, pp. 95-112. doi: 10.1016 / j.jnca.2015.11.11.017.
Prandl, S., Lazarescu, M. e Pham, D. (2015). Um estudo de soluções de firewall de aplicativos da Web. Segurança de sistemas de informação, pp. 501-510. doi: 10.1007 / 978-3-319-26961-0_29.
Positive-Technologies (2016a) 'Firewalls de aplicativos da Web: atacando mecanismos lógicos de detecção'. Disponível em: www.blackhat.com/docs/us-16/materials/us-16-Ivanov- Web-Application-Firewalls-Analysis-Of-Detection-Logic.pdf.
Injeção de SQL do OWASP (2017) ignorando o WAF. Disponível em: www.owasp.org/index.php/SQL_Injection_Bypassing_WAF .