aplicações web - como aumentar a segurança dos sites … · •google hacking (google, bing,...

28
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

Upload: dinhhuong

Post on 28-Jul-2018

213 views

Category:

Documents


0 download

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

Firewall de aplicação

12

• Proposta:

Regras OWASP – Core Rule Set

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'"

Bloqueio

16

16

Logs, Lots of Logs

17

• Modsecurity Audit Logs: visualização com WAF-FLE

17

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

Exemplos

22

Exemplos

23

• 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]>