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