Neste artigo iremos abordar como utilizar a ferramenta ThreadFix [1] para auxiliar no gerenciamento de Web Application Firewalls e demonstrar a criação de regras (assinaturas) a partir de relatórios de scanners automatizados. Para isso, além do ThreadFix v.1.0.1, iremos utilizar também o WAF BIG-IP ASM 11.1.0 [2] da F5 e também o Arachni v0.4.1.2 [3] como nosso scanner de vulnerabilidades em aplicações web.
O ThreadFix é uma ferramenta que auxilia no gerenciamento de vulnerabilidades de software através da agregação de informações, criação de assinaturas e geração de virtual patches para facilitar um melhor controle na manutenção das vulnerabilidades das suas aplicações. Existem duas formas de download na página do projeto (zip e war). Neste tutorial iremos utilizar a versão .zip que basta apenas extrair e rodar o arquivo de inicialização threadfix.sh (ou threadfix.bat dependendo do sistema que estiver sendo utilizado) para inicializar o programa. Após isso, o script irá abrir automaticamente seu navegador padrão na seguinte URL: https://localhost:8443/threadfix/.
Você provavelmente irá receber um alerta do certificado SSL, que é gerado na primeira vez que você executa o ThreadFix e por isso é necessário adicionar a sua lista de certificados confiáveis para continuar. As credenciais de login são user para usuário e password para senha, simples não?
Figura 1 – Tela de login do ThreadFix
Se estiver implantando o ThreadFix em um ambiente de produção ou que seja acessível pela rede, é recomendado trocar imediatamente o usuário. Para isso, basta acessar o menu Configuration > Manager Users e adicionar o novo usuário. Não se esqueça de remover o usuário user depois de criar o novo!
Figura 2 – Criando um novo usuário
Feito isso, iremos agora adicionar o nosso Web Application Firewall. No menu WAFs existe a opção de adicionar o seu WAF, onde adicionaremos o BIG-IP ASM. Você só precisa definir um nome e escolher o tipo. Atualmente é possível adicionar os seguintes WAFs no ThreadFix:
-
BIG-IP ASM
-
DenyAll rWeb
-
Imperva SecureSphere
-
Snort
-
ModSecurity
Figura 3 – Adicionando um WAF no ThreadFix
Após adicionado o WAF, iremos adicionar a aplicação que será protegida e o scanner que será utilizado. Para adicionar uma aplicação, é necessário criar uma equipe primeiro, que é o grupo de pessoas responsáveis pela aplicação. Caso não tenha nenhuma equipe criada ainda, na página inicial do sistema é possível criar uma nova equipe através do link “Add Team”.
Figura 4 – Adicionando equipes no ThreadFix
Feito isto, agora você pode adicionar a sua aplicação no link “Add Application” dentro da sua equipe. Para a aplicação é necessário definir Nome, URL e o WAF (aquele que criamos anteriormente)
Figura 5 – Adicionando aplicações no ThreadFix
Feito isto, iremos agora importar o log da análise do Arachni feita na aplicação que será protegida pelo nosso BIG-IP ASM para o ThreadFix. A Arachni foi scanner de vulnerabilidades escolhido para este tutorial, mas também é possível utilizar diversos outros scanners para criar as regras automatizadas. Segue abaixo uma tabela retirada diretamente do site do ThreadFix que mostra os diversos scanners suportados bem como seu nível de maturidade na integração com a ferramenta:
Scanner Name | Version | Alpha | Beta | Stable | Vendor-supported |
Acunetix WVS | ✔ | ||||
Arachni | 0.4.x | ✔ | |||
Burp Suite | 1.4 | ✔ | |||
HP WebInspect | 9.10 | ✔ | |||
IBM Rational AppScan | 8.0 – 8.6 | ✔ | |||
Mavituna Security Netsparker | ✔ | ||||
OWASP Zed Attack Proxy | 1.3.2 | ✔ | |||
Skipfish | 2.08 | ✔ | |||
Tenable Nessus | 4.4 | ✔ | |||
Qualys WAS | ✔ | ||||
Veracode | ✔ | ||||
WhiteHat Sentinel | ✔ | ||||
w3af | ✔ |
Tabela 1 – Scanners que podem ser utilizados no ThreadFix
Fonte: http://code.google.com/p/threadfix/wiki/DynamicScanners
Para adicionar o log do Arachni, é necessário estar na página da sua aplicação e escolher a opção “Upload Scan”, selecionar o scanner utilizado (neste caso Arachni) e clicar no botão “Add Channel”. Após clicar em “Add Channel” irá aparecer a opção de escolher um arquivo para realizar o upload (o resultado do scan).
Figura 6 – Realizando o upload de um scan
Dependendo do tamanho do arquivo, pode demorar um pouco para que ele seja processado pelo ThreadFix. Lembrando que o resultado da análise do scanner deve estar em XML para que o parser possa ser feito e as regras para o WAF possam ser criadas corretamente. Depois de adicionado o scan, é assim que ele irá aparecer no ThreadFix:
Figura 7 – Inclusão de scans das aplicações
Caso o resultado do scan possua vulnerabilidades como XSS, SQL Injection, entre outras onde seja possível gerar assinaturas para o WAF utilizado, então você pode gerá-las e adicionar a política do seu site. Para isso, basta ir no menu WAFs, selecionar o WAF criado e clicar no botão Generate WAF Rules que as assinaturas serão criadas automaticamente e exibidas logo abaixo na página:
Figura 8 – Geração de assinaturas do WAF a partir do resultado do scanner
Neste caso, ele criou duas assinaturas contra XSS devido às duas vulnerabilidades encontradas no scanner na Figura anterior. Com as assinaturas em mãos, você pode agora baixá-las e importá-las para o seu WAF e adicionar as assinaturas em uma política já existente ou criar uma nova política para sua aplicação e adicioná-las. Lembrando que as assinaturas aqui geradas são unicamente baseadas no resultado do seu scanner. Ou seja, elas não são suficientes para proteger sua aplicação e por isso ainda é necessário que um analista configure corretamente a fim de retirar falsos positivos e realizar o processo de tunning.
No ASM, no menu Application Security > Security Policies, existe a opção de importar políticas caso deseje iniciar uma nova política ou tenha modificado uma política existente e esteja atualizando-a.
Figura 9 – Importando as regras para o ASM
Feito isto, você irá adicionar as novas assinaturas à política da sua aplicação de acordo com as vulnerabilidades que foram encontradas pelo scanner de vulnerabilidades, tornando-a assim mais eficiente e permitindo que a equipe de desenvolvimento tenha mais tempo para corrigir as falhas encontradas.
O gerenciamento de WAFs é um processo trabalhoso e demorado. Este artigo visa apenas auxiliar o analista na criação das regras utilizando uma abordagem diferente. Muitos Web Application Firewalls já vem com uma lista de assinaturas pré-definidas que podem ser adicionadas a política de cada aplicação e vai depender do trabalho do analista para que elas possam ser configuradas corretamente.
[1] – http://code.google.com/p/threadfix/
[2] – http://www.f5.com/products/big-ip/big-ip-application-security-manager/overview
[3] – http://arachni-scanner.com/
Originalmente postado no Blog da Conviso Application Security – Siga-nos no Twitter @conviso Google+