Segurança de aplicações web como aumentar a segurança dos sites da sua organização Italo Valcy, Pedro Sampaio, Michel Peterson, Bruno Diego ETIR UFBA
Qual o cenário? Incidentes de Segurança de Desfiguração de Site Mais de 90 sites invadidos até Set/2015 Tempo médio de tratamento: 8hs (total: 720h, 4.5 meses) Sites de usuários, grupos de pesquisa, eventos, etc Vulnerabilidades conhecidas (sqli, cmd exe, auth bypass, etc) Serviço web hosting compartilhado onde o cliente é responsável pelo CMS ou software da página Equipes de desenvolvimento despreparadas ou inativas 2
Qual a proposta? Hardening de infraestrutrua de hospedagem Firewall de aplicação Pentest de aplicações web Análise estática de código 3
Hardening de infraestrutura Objetivos: Isolamento entre sites (FS, CPU, Mem, etc) Auditoria (logging, site x user) Limitação de recursos x burst Facilitar troubleshooting Soluções: https://www.docker.com/ https://www.cloudlinux.com/... 4
Hardening de infraestrutura Objetivos: Isolamento entre sites (FS, CPU, Mem, etc) Auditoria (logging, site x user) Limitação de recursos x burst Facilitar troubleshooting Soluções: https://www.docker.com/ https://www.cloudlinux.com/... Escolhemos o CL pela rapidez de deploy inicial, mas (planejamos) vamos migrar para docker em breve. 5
CloudLinux Requer RHEL ou CentOS Sec Updates complementar CageFS Kernel modificado com LVE Mod_hostlimits (apache) 6
Lightweight Virtual Environment (LVE) Tecnologia de Kernel para limitação de recursos (CPU, Processos, Memory, IO) Similar ao cgroups, similar à containers Usa escalomento baseado em fair-sched (ex: limite de recursos de CPU por porcentagem) Ao receber a requisição, o apache identifica o usuário do site e executa a requisição no LVE Permite mudança (autorizada) de LVE sobre demanda Ferramentas de gerencia: lveps, lvetop, lveinfo, lvechart 7
CageFS Sistema de arquivos do CL para isolamento de sites /proc particular /home restrito /etc/{passwd, shadow, etc} restrito Apenas binários sem SUID serão acessíveis (acl) Proteção contra ataques de links simbólicos Diferente de SymlinksIfOwnerMatch Seletores de interpretador (PHP, Ruby, Python) 8
Burst Objetivo: Aumentar os recursos do site sobre demanda Como? Integração com zabbix (monitoramento com lvetop + burst com lvectl, inc e dec) /etc/zabbix/scripts/check_load.sh /etc/zabbix/scripts/resource_burst.sh Atuação automática (max 3 vezes) 9
Firewall de aplicação Objetivo: Proteção contra ataques conhecidos (sqli, xss, bruteforce, etc.) Virtual patching Troubleshooting Como? R: WAF, mas qual? Modsecurity, Ironbee, Naxsi, Zorp, Imperva 10
Firewall de aplicação WAF: intercepta, analisa e filtra mensagens enviadas ao servidor web (HTTP), independente da aplicação 11
Firewall de aplicação Proposta: Regras OWASP Core Rule Set 12
Mod-security Inspeção Tipos de Bloqueio: Bloqueio Imediato O evento é bloqueado na primeira regra acionada. Anomaly Score O evento será bloqueado se uma quantidade suficiente de regras seja acionada. 13
Mod-security Inspeção Bloqueio imediato: SecRule ARGS "(select where group order by union)" "phase:2,t:urldecodeuni,block,msg:'sql Injection Attack',id:'959070'" 14
Mod-security Inspeção Anomaly Score SecRule TX:SQLI_SELECT_STATEMENT "@containsword select" "phase:2,pass,nolog,setvar:tx.sqli_select_statement_count=+1,setvar:tx.sql_injection_score=+1" SecRule TX:SQLI_SELECT_STATEMENT "@containsword where" "phase:2,pass,nolog,setvar:tx.sqli_select_statement_count=+1,setvar:tx.sql_injection_score=+1" SecRule TX:SQLI_SELECT_STATEMENT "@contains order by" "phase:2,pass,nolog,setvar:tx.sqli_select_statement_count=+1,setvar:tx.sql_injection_score=+1" SecRule TX:SQLI_SELECT_STATEMENT "@containsword union" "phase:2,pass,nolog,setvar:tx.sqli_select_statement_count=+1,setvar:tx.sql_injection_score=+1" SecRule TX:SQLI_SELECT_STATEMENT_COUNT "@ge 3" "phase:2,block,msg:'sql SELECT Statement Anomaly Detection Alert'" 15
Bloqueio 16 16
Logs, Lots of Logs Modsecurity Audit Logs: visualização com WAF-FLE 17 17
Estatísticas Testes no ambiente UFBA: Amostra de 2187 requisições Sendo 650 de ataques SQL Injection conhecidos Infra com mais de 300 sites Configuração: Modo de bloqueio imediato Regras OWASP Core Rule Set Resultados: 1300 eventos bloqueados 60% de falsos positivos 717 10% de falsos Negativos 67 587 Ataques legítimos bloqueados 18
Estatísticas Testes no ambiente UFBA: Amostra de 2187 requisições Sendo 650 de ataques SQL Injection conhecidos Infra com mais de 300 sites Configuração: Modo anomaly + Bloqueio imediato Regras OWASP Core Rule Set + Customização scores Resultados: 681 eventos bloqueados 5% de falsos positivos 31 2% de falsos Negativos 7 643 Ataques legítimos bloqueados 19
Análise estática de código RIPS (PHP) http://rips-scanner.sourceforge.net/ Find Security Bugs / Find Bugs + Sonar (Java) http://h3xstream.github.io/find-sec-bugs/ Outros: https://security.web.cern.ch/security/recommendations/en/co de_tools.shtml https://www.owasp.org/index.php/static_code_analysis#tools 20
Análise estática de código O que é? Busca padrões de código fonte sujeito a falhas (bugs de segurança) Teste white-box Complexo e custoso Pode trazer resultados bem interessantes, mas também falsos positivos 21
Exemplos 22
Exemplos 23
Pentest de aplicações Mesmo com todos esses controles, suas aplicações web podem não ser 100% seguras Realização de testes de intrusão: Metodologia de testes e validação dos controles de segurança da aplicação 24
Como fazemos Atualmente ainda é um modelo em desenvolvimento Testes sobre demanda em aplicações chave Uso de ferramentas (w3af, owasp zap, nikto, openvas, nmap, sqlmap) Google hacking (google, bing, etc) Conhecimento e criatividade dos analistas TODO: estabelecer processo de testes de intrusão em aplicações web 25
O que já encontramos Falhas comuns (sqli, L/R file inclusion, xss, etc.) Bypass do mecanismo de autenticação (funções ocultas) Armazenamento inseguro de senhas Falhas no mecanismo de recuperação de senha Injeção de código LDAP Falta de controle contra brute-force Problemas com Autorização. 26
Conclusões Falhas de segurança em aplicações web são comuns e altamente impactantes para a organização Não existe uma ferramenta ou mecanismo que sozinho proteja a instituição contra falhas Combinando as tecnologias apresentadas, é possível aumentar a segurança do ambiente e reduzir os custos (financeiros e de reputação) É preciso trabalhar também nas pessoas, na cultura de desenvolvimento e aprovisionamento de software! 27
Dúvidas? Italo Valcy <italovalcy@ufba.br>