aplicações web - como aumentar a segurança dos sites … · •google hacking (google, bing,...
TRANSCRIPT
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
• 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
Qual o cenário?
2
• Hardening de infraestrutrua de hospedagem• Firewall de aplicação• Pentest de aplicações web• Análise estática de código
Qual a proposta?
3
• 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/ • ...
Hardening de infraestrutura
4
• 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/ • ...
Hardening de infraestrutura
5
Escolhemos o CL pelarapidez de deploy inicial,mas (planejamos) vamos
migrar para docker em breve.
CloudLinux
6
• Requer RHEL ou CentOS• Sec Updates
complementar• CageFS• Kernel modificado com LVE• Mod_hostlimits (apache)
Lightweight Virtual Environment (LVE)
7
• 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
CageFS
8
• 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)
Burst
9
• 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)
Firewall de aplicação
10
• Objetivo:• Proteção contra ataques conhecidos (sqli, xss, brute-
force, etc.)• Virtual patching• Troubleshooting
• Como? R: WAF, mas qual?• Modsecurity, Ironbee, Naxsi, Zorp, Imperva
Firewall de aplicação
11
• WAF: intercepta, analisa e filtra mensagens enviadas ao servidor web (HTTP), independente da aplicação
Mod-security – Inspeção
13
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.
Mod-security – Inspeção
14
Bloqueio imediato:
• SecRule ARGS "(select|where|group|order|by|union)""phase:2,t:urlDecodeUni,block,msg:'SQL InjectionAttack',id:'959070'"
Mod-security – Inspeção
15
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'"
Estatísticas
18
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
Estatísticas
19
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
• 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
Análise estática de código
20
• 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
Análise estática de código
21
• 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
Pentest de aplicações
• 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
Como fazemos
• 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
O que já encontramos
• 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
Conclusões
Dúvidas?Italo Valcy <[email protected]>