Segurança de aplicações web - como aumentar a segurança dos sites

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 ...
4 downloads 19 Views 1MB Size

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