ï€1⁄4 O documento apresenta o Open Web Application Security Project (OWASP), um projeto aberto dedicado à segurança de aplicações web.
ï€1⁄4 O OWASP fornece publicações, ferramentas e software livres para auxiliar na criação de aplicações web seguras, como o guia OWASP Top 10 e as ferramentas WebGoat e WebScarab.
ï€1⁄4 O documento também descreve o funcionamento do OWASP Portugal e suas atividades, como o capítulo local e participação em eventos para promover a segurança de aplicações web
4. O que é segurança de Aplicações Web?
Não é Segurança de Redes
Segurança do “código” criado para implementar a aplicação
web
Segurança de bibliotecas
Segurança de sistemas de back-end
Segurança de servidores web e aplicacionais
Segurança de Redes ignora o conteúdo do tráfego de
HTTP
Firewalls, SSL, Intrusion Detection Systems, Operating
System Hardening, Database Hardening
OWASP 4
5. O código faz parte do perímetro de
segurança
O seu perímetro de segurança possui
buracos enormes na camada
aplicacional
Application Layer
Legacy Systems
Human Resrcs
Web Services
Directories
Databases
Billing
Custom Developed
Application Code
APPLICATION
ATTACK
App Server
Web Server
Network Layer
Hardened OS
Firewall
Firewall
Não é possível usar protecção ao nível da camada de rede (firewall, SSL, IDS, hardening) para parar ou
detectar ataques ao nível aplicacional OWASP 5
6. Isto é preocupante?
Vamos lá pensar…
Qual a probabilidade de sucesso de um ataque contra uma
aplicação web?
Probabilidade elevada
Fácil de explorar sem conhecimento e ferramentas especiais
Quase indetectável
Existem milhares de programadores web, pouco preocupados
com segurança
Consequências?
Corrupção de dados ou destruição de BD
Acesso root a servidores web ou aplicacionais
Perda de autenticação e de controlo de acesso de utilizadores
Descaracterização (Defacement)
Ataques secundários a partir da própria aplicação web
OWASP
7. Isto é preocupante?
A Segurança de Aplicações Web é tão importante como a
Segurança de Redes
Porque é que grande parte do investimento em Segurança é
canalizado para a segurança das redes?
OWASP
8. O que é o OWASP?
Open Web Application Security Project
Promove o desenvolvimento seguro de software
Orientado para o desenvolvimento de serviços
baseados na web
Focado principalmente em aspectos de
desenvolvimento do que em web-design
Um fórum aberto para discussão
Um recurso gratuito e livre para qualquer equipa
de desenvolvimento
OWASP 2
9. O que é o OWASP?
Open Web Application Security Project
an open community dedicated to enabling
organizations to develop, purchase, and
maintain applications that can be trusted
Promover o desenvolvimento seguro
Auxiliar a tomada de decisão quanto ao risco
Oferecer recursos gratuitos
Promover a contribuição e partilha de informação
OWASP 3
10. O que é o OWASP?
Open Web Application Security Project
Organização sem fins lucrativos, orientada para esforço
voluntário
Todos os membros são voluntários
Todo o trabalho é “doado” por patrocinadores
Oferecer recursos livres para a comunidade
Publicações, Artigos, Normas
Software de Testes e de Formação
Chapters Locais & Mailing Lists
Suportada através de patrocínios
Suporte de empresas através de patrocínios financeiros ou de
projectos
Patrocínios pessoais por parte dos membros
OWASP 4
12. O que é o OWASP?
O que oferece?
Publicações
OWASP Top 10
OWASP Guide to Building Secure Web Applications
Software
WebGoat
WebScarab
oLabs Projects
.NET Projects
Chapters Locais
Orientação das comunidades locais
OWASP 6
14. Publicações OWASP
Características Comuns
Todas as publicações OWASP estão disponíveis para
download gratuíto em http://www.owasp.org
Todas as publicações são licenciadas em GNU “Lesser” GNU
Public License (LGPL), ou em GNU Free Documentation
License (GFDL)
Documentação “viva”
Actualizada sempre que necessário
Projectos evolutivos
As publicações do OWASP são o resultado de trabalho
cooperativo entre os membros
OWASP 8
15. Publicações OWASP – OWASP Top 10
Top 10 Web Application Security Vulnerabilities
Uma lista dos 10 aspectos de segurança mais críticos
Actualizado numa base annual
Crescente aceitação pela indústria
Federal Trade Commission (US Gov)
US Defense Information Systems Agency
VISA (Cardholder Information Security Program)
Está a ser adoptado como um standard de segurança para
aplicações web
OWASP 9
16. Publicações OWASP - OWASP Top 10
Top 10 (versão 2007)
A1. Cross Site Scripting (XSS)
A2. Injection Flaws
A3. Malicious File Execution
A4. Insecure Direct Object Reference
A5. Cross Site Request Forgery (CSRF)
A6. Information Leakage and Improper Error Handling
A7. Broken Authentication and Session Management
A8. Insecure Cryptographic Storage
A9. Insecure Communications
A10. Failure to Restrict URL Access
OWASP 11
17. Publicações OWASP - OWASP Guide
Guia para o Desenvolvimento Seguro de Web Apps
Oferece um conjunto de linhas gerais para o desenvolvimento
de software seguro
Introdução à segurança em geral
Introdução à segurança aplicacional
Discute áreas-chave de implementação
– Arquitectura
– Autenticação
– Gestão de Sessões
– Controlo de Acesso e Autorização
– Registo de Eventos
– Validação de Dados
Em contínuo desenvolvimento
OWASP 12
18. Publicações OWASP – Projectos em Curso
Projectos em Curso
Projecto de Métricas & Medidas
Tenta desenvolver um conjunto de métricas de segurança que podem
ser usadas para suportar decisões críticas de negócio
Projecto de Testes
Tenta produzir uma framework de “boas práticas”
Tenta produzir uma framework de testes de “baixo nível” que permite
identificar certos aspectos
AppSec Faq
FAQ para programadores que se foca em segurança aplicacional
Oferece respostas a questões sobre segurança aplicacional
OWASP 13
19. Software OWASP
Características Comuns
Todo o software OWASP é oferecido e pode ser obtido em
http://www.owasp.org
O software está licenciado com uma licença GNU “Lesser”
GNU Public License (LGPL)
Projectos Activos
Actualizados sempre que necessário
Projectos em curso
Multiplos programadores a contribuirem e a menterem
O software OWASP pode ser descarregado livremente e pode
ser usado por indivíduos e empresas
OWASP 14
20. Software OWASP - WebGoat
WebGoat
Essencialmente é uma aplicação de treino
Oferece
Uma ferramenta educacional usada para ensinar e aprender sobre
segurança aplicacional
Uma ferramenta para testar ferrementas de segurança
O que é?
Uma aplicação web J2EE disposta em diversas “Lições de Segurança”
Baseado no Tomcat e no JDK 1.5
Orientada para o ension
– Fácil de usar
– Ilustra cenários credíveis
– Ensina ataques realistas e soluções viáveis
OWASP 15
21. Software OWASP - WebGoat
WebGoat – O que se pode aprender?
Um número crescente de ataques e de soluções
Cross Site Scripting
SQL Injection Attacks
Thread Safety
Field & Parameter Manipulation
Session Hijacking and Management
Weak Authentication Mechanisms
Mais ataques vão sendo adicionados
Obter a ferramenta
http://www.owasp.org/software/webgoat.html
Descarregar, descomprimir, e executar
OWASP 16
22. Software OWASP - WebScarab
WebScarab
Uma framework para analizar tráfego HTTP/HTTPS
Escrito em Java
Múltiplas utilizações
Programador: fazer o debug das trocas entre o cliente e servidor
Analista de Segurança: analiza o tráfego e identifica vulnerabilidades
Ferramenta técnica
Focada em programadores de software
Arquitectura extensível de plug-ins
Open source; de fácil expansão
Poderosa
Obter a ferramenta
http://www.owasp.org/software/webscarab.html
OWASP 17
24. Chapters locais da OWASP
Desenvolvimento de comunidades
Os Chapters locais proporcionam oportunidades para os
membros OWASP poderem partilhar ideias e aprender mais
sobre segurança da informação
Aberto a *TODOS*
Oferecer um fórum para discussão de assuntos em contextos
locais/regionais
Oferecer o local para convidados poderem apresentar novas
ideias e projectos
OWASP 19
26. Actividade
Chapter Português
Nasce a 24 Outubro de 2007
Actividade quase nula
2008
OWASP EU Summit 08
Albufeira, Algarve, Portugal
2009
KOM
Manter reuniões regulares
Lançar projectos e ideias
OWASP 5
27. OWASP EU Summit 08
O *maior* evento OWASP de sempre
1 semana, +100 pessoas (de todo o Mundo)
Apresentação de Projectos
Sessões de Trabalho
Formação
+ 1 dia de Demo na UAlg
OWASP 6
28. OWASP EU Summit 08
O *maior* evento OWASP de sempre
1 semana, +100 pessoas (de todo o Mundo)
Apresentação de Projectos Sim, estivemos
lá também…
Sessões de Trabalho
Formação
+ 1 dia de Demo na UAlg
OWASP 6
29. Antes de mais…
… alguns dados
Membros
26 membros
Web-site
http://www.owasp.org/index.php/Portuguese
Mailling-List
owasp-portuguese@lists.owasp.org
Chapter Leader
Carlos Serrão (carlos.serrao@iscte.pt,
carlos.j.serrao@gmail.com)
OWASP 2
30. Reuniões
Objectivos:
Manter um calendário de reuniões periódicas
Ideal: 1 reunião por mês
Realista: 1 reunião a cada 3 ou 4 meses
Promover a missão da OWASP
Promover os projectos, ferramentas e documentação da OWASP
Promover a troca livre e disseminação livre de informação sobre
segurança de informação e segurança de aplicações e sistemas
web-based
Promover o lançamento de novas ideias e de novos projectos
Envolver os membros em projectos on-going
OWASP 7
31. OWASP em Números
420.000 page views por mês
230 GB de download por mês
4.618 utilizadores do wiki
200 actualizações por dia
124 capítulos (chapters)
16.000 membros nas mailings lists
48 projectos de ferramentas e documentos
100 membros individuais
48 membros corporativos/educacionais
2 empregados
OWASP 21
32. Chapters Locais da OWASP
O que oferecem?
Reuniões regulares
Mailing Lists
Apresentações e Grupos
Ambientes independentes do vendedor
Fóruns de discussão aberta
OWASP 22
33. Chapters Locais da OWASP
O que oferecem?
Como contribuir?
Através das ML, reuniões e dos grupos de discussão
Os membros são encorajados a levantarem questões
Os membros são encorajados a participar em projectos OWASP
– Contribuir para projectos existentes
– Propor novos projectos
– Lançar novas iniciativas
O Chapter Local deve trabalhar no sentido de manter a organização
como um recurso livre, aberto e orientado tecnicamente para o público
em geral e para os membros
OWASP 23
36. OWASP Top 10
As 10 Mais críticas
vulnerabilidades em
aplicações web
2007 Release (2nd)
Não é um standard, mas um
conjunto de recomendações
OWASP 35
37. OWASP Top 10
1. Cross Site Scripting (XSS)
2. Falhas de Injecção
3. Inclusão Remota e Insegura de Ficheiros
4. Referência Directa e Insegura a Objectos
5. Cross Site Request Forgery (CSRF)
6. Revelação de Informação e Tratamento de Erros
Inadequado
7. Quebra da Gestão de Sessões e da Autenticação
8. Armazenamento criptográfico inseguro
9. Comunicações inseguras
10.Falha na restrição de acesso a URL
OWASP 36
38. 1. Cross-Site Scripting (XSS)
Descrição
O problema que mais tem prevalecido em termos de
segurança nas aplicações web
Permite que os atacantes possam executar código no
browser da vítima
Ambientes afectados
Todas as frameworks de aplicações web estão sujeitas a este
tipo de ataque
OWASP 37
39. 1. Cross-Site Scripting (XSS)
Vulnerabilidades
3 tipos:
Reflectidos
Armazenados
DOM injection
Os ataques são normalmente realizados através de
Javascript, ou através da manipulação directa dos pedidos
HTTP
OWASP 38
40. 1. Cross-Site Scripting (XSS)
Verificar a Segurança
Todos os parâmetros de entrada devem ser validados ou
codificados
Revisões de Código
Mecanismo central de validação ou de codificação
Protecção
Combinar um conjunto de validações de todos os dados de
entrada e a codificação de todos os dados de saída
OWASP 39
41. 2. Falhas de Injecção
Descrição
A injecção ocorre quando dados fornecidos pelo utilizador é
enviada para um interpretador como parte de um comando
ou query
Injecção de comandos de SQL é o mais comum
Ambientes Afectados
Todas as frameworks de aplicações web que usam
interpretadores são vulneráveis a ataques de injecção.
OWASP 40
42. 2. Falhas de Injecção
Vulnerabilidades
Se o input do utilizador for passado directamente para um
interpretador sem validação ou codificação, a aplicação fica
vulnerável.
Verificar se o input do utilizador é passado directamente a
queris dinâmicas
PHP:
$sql = quot;SELECT * FROM table WHERE id = 'quot; . $_REQUEST['id’] . quot;’quot;;
e se $_REQUEST[‘id’]=” ’ OR 1=1 -- ”
SELECT * FROM table WHERE id = ‘’ OR 1=1 --’
OWASP 41
43. 2. Falhas de Injecção
Verificação de Segurança
Verificar que o utilizador não pode modificar comandos ou queries
enviadas para qualquer interpretador usado pela aplicação
Revisões de Código
Protecção
Impedir o acesso a interpretadores sempre que possível
“Correr com o menor privilégio possível”
As stored procedures são igualmente afectadas
Validação das entradas do utilizador
OWASP 42
44. 3. Inclusão Remota e Insegura de Ficheiros
Descrição
Permite que os atacantes possam realizar execução remota
de código, comprometendo ficheiros de input
Causado frequentemente por se confiar em ficheiros de input
Ambientes afectados
Todas as frameworks de aplicações web que permitem a
inclusão de ficheiros para serem executados (especialmente o
PHP)
Ambientes são susceptíveis se permitirem o upload em
directorias web.
OWASP 43
45. 3. Inclusão Remota e Insegura de Ficheiros
Vulnerabilidades
Dados hostis a serem carregados para ficheiros de sessão ou
dados de execução
PHP é mais comum, mas outras linguagens são igualmente
susceptíveis
Java e .Net
DTD hostis em documentos XML
require_once($_POST[‘unsafe_filename’] . ‘inc.php’);
OWASP 44
46. 3. Inclusão Remota e Insegura de Ficheiros
Verificação de Segurança
Revisões de Código
Ferramentas automáticas de pesquisa
Protecção
Nunca permitir que um ficheiro enviado pelo utilizador possa
usar recursos do servidor
Implementação de protocolos de segurança devidamente
configurados
Validar o input do utilizador
OWASP 45
47. 4. Referência Directa e Insegura a Objectos
Descrição
Ocorre quando o programador expõe uma referência não
validada a um objecto interno da implementação, tal como
um ficheiro, directoria, registo ou chave de uma base de
dados, com uma URL ou parâmetro num formulário
Ambientes afectados
Todas as frameworks de aplicações web são vulneráveis a
referências directas e inseguras a objectos
OWASP 46
48. 4. Referência Directa e Insegura a Objectos
Vulnerabilidades
Exposição de referências internas de objectos
Atacantes modificam os parâmetros para alterar as
referências e violarem as políticas de controlo de acessos
construídas na aplicações
As referências a chaves de base de dados são
frequentemente expostas
<select name=quot;languagequot;><option value=quot;frquot;>Français</option></select>
…
require_once ($_REQUEST['language’].quot;lang.phpquot;);
e se $_REQUEST[‘language’] = “../../../.../../etc/passwd%00” ?
OWASP 47
49. 4. Referência Directa e Insegura a Objectos
Verificação de Segurança
Remover qualquer referência directa a objectos que possa ser
manipulada por um atacante determinado
Análise e revisão do código (difícil e morosa quer por
métodos manuais ou automáticos)
Protecção
A melhor protecção é evitar expor referências directas a
objectos aos utilizadores
Verificar a autorização de acesso a todos os objectos
referenciados
OWASP 48
50. 5. Cross Site Request Forgery (CSRF)
Descrição
Um ataque que engana a vítima a carregar uma página que
contém um pedido malicioso
Também conhecidos como Session Riding, One-Click Attacks,
Cross Site Reference Forgery, Hostile Linking, e Automation
Attack
Ambientes afectados
Todas as frameworks de aplicações web são vulneráveis a
CSRF.
OWASP 49
51. 5. Cross Site Request Forgery (CSRF)
Vulnerabilidades
Num forum, o ataque pode dirigir o utilizador a invocar uma
função de logout
Pode ser combinado com XSS
<img src=quot;http://www.example.com/logout.phpquot;>
<img src=quot;http://www.example.com/transfer.do?frmAcct=document.form.frmAcct&
toAcct=4345754&toSWIFTid=434343&amt=3434.43quot;>
OWASP 50
52. 5. Cross Site Request Forgery (CSRF)
Verificação de Segurança
Usar tokens de autenticação que não sejam automaticamente
submetidos pelo browser
Protecção
Eliminar as vulnerabilidades de XSS da aplicação
Acrescentar um “nonce” na URL por cada pedido e em todos os
formulários em adição à sessão tradicional - se isto já não estiver
presente na framework de aplicações web a ser usada
Solicitar écrans de login adicionais para dados mais sensíveis
Não usar pedidos GET para dados mais sensíveis
OWASP 51
53. 6. Revelação de Informação e Tratamento de
Erros Inadequado
Descrição
As aplicações podem sem intenção, revelar informação sobre
a sua configuração, forma funcionamento interno, ou violar a
privacidade através de diversos problemas da aplicação
Ambientes Afectados
Todas as frameworks de aplicações web são vulneráveis à
revelação de informação ou tratamento incorrecto de erros.
OWASP 52
54. 6. Revelação de Informação e Tratamento de
Erros Inadequado
Vulnerabilidades
Mensagens de Erro com demasiado detalhe
Stack Traces
SQL Statements
Registo desapropriado de mensagens detalhadas
OWASP 53
55. 6. Revelação de Informação e Tratamento de
Erros Inadequado
Verificação de Segurança
O objectivo é que uma aplicação não dê demasiada informação sobre
os erros
Exige uma verificação manual do código para ver qual o detalhe das
mensagens
Protecção
Testes para gerar mensagens de erro e outras verificações no
desenvolvimento
Desactivar ou limitar as mensagens de erro
display_errors = Off
OWASP 54
56. 7. Quebra da Gestão de Sessões e da
Autenticação
Descrição
Falhas na autenticação e gestão de sessões envolvem
frequentemente a falha de protecção das credenciais e
tokens de sessão ao longo do seu ciclo de vida.
Ambientes Afectados
Todas as frameworks de aplicações web são vulneráveis a
falhas de autenticação e de gestão das sessões
OWASP 55
57. 7. Quebra da Gestão de Sessões e da
Autenticação
Vulnerabilidades
Falha do mecanismo principal de controlo de acesso
Gestão de passwords
Timeout de Sessões
OWASP 56
58. 7. Quebra da Gestão de Sessões e da
Autenticação
Verificação de Segurança
A Aplicação de deve autenticar os utilizadores de forma apropriada e proteger
as suas credenciais
Difícil de conseguir através de ferramentas automáticas
Combinação de Revisões de Código e de Testes
Protecção
Manter a comunicação segura e armazenamento de credenciais
Usar sempre um mecanismo de autenticação sempre que se aplique
Criar uma nova sessão após a autenticação
Assegurar que o link de logout destrói toda a informação pertinente
Não expor quaisquer credenciais na URL ou nos logs
OWASP 57
59. 8. Armazenamento criptográfico inseguro
Descrição
A falha de não proteger dados sensíveis recorrendo a
criptografia é um defeito recorrente
As aplicações que usam criptografia frequentemente, usam
algoritmos mal concebidos - ou usando cifras não apropriadas
ou cometendo sérios erros na sua aplicação
Ambientes Afectados
Todos os ambientes de aplicações web são vulneráveis a este
tipo de falha.
OWASP 58
60. 8. Armazenamento criptográfico inseguro
Vulnerabilidades
Não cifrar dados sensíveis
Usar algoritmos inventados
Uso inseguro de algoritmos criptográficos fortes
Continuar a usar algoritmos que já provaram ser fracos
(MD5, RC3, RC4, etc…)
Usar chaves hard-coded, e armazenar chaves em repositórios
não-seguros
OWASP 59
61. 8. Armazenamento criptográfico inseguro
Verificação de Segurança
Verificar que a aplicação cifra de forma adequada a informação
sensível
Ferramentas de verificação automática não oferecem grande ajuda
Revisões de código são a forma mais eficiente de verificação
Protecção
Usar apenas algoritmos públicos aprovados
Verificar para ter a certeza de que toda a informação sensível está a
ser cifrada
OWASP 60
62. 9. Comunicações Inseguras
Descrição
As aplicações frequentemente não cifram o tráfego de dados
quando é necessário proteger comunicações sensíveis
SSL deve ser usado para todas as ligações autenticadas
Ambientes afectados
Todas as frameworks de aplicações web são vulneráveis a
este problema.
OWASP 61
63. 9. Comunicações Inseguras
Vulnerabilidades
Sniffing da rede
Todo o tráfego autenticado deve passar por SSL, porque o
HTTP contem credenciais de autenticação, ou tokens de
sessão em cada pedido; e não apenas no pedido de login
Usar sempre o SSL para proteger a transmissão de dados
sensíveis
OWASP 62
64. 9. Comunicações Inseguras
Verificação de Segurança
Verificar que a aplicação cifra de forma apropriada todas as
comunicações autenticadas e sensíveis
Ferramentas de scanning de vulnerabilidades podem verificar
se o SSL está a ser usado no front-end, e encontrar os
problemas de segurança
Revisões de código ajudam a perceber o uso apropriado do
SSL para todas as ligações de backend
Protecção
Usar sempre o SSL para proteger dados sensíveis
OWASP 63
65. 10. Falha na restrição de acesso a uma URL
Descrição
Depender de segurança por obscuridade para restringir o
acesso a URL
Não usar verificações de controlo de acesso para URLs
Ambientes afectados
Todas as frameworks de aplicações web são vulneráveis a
este tipo de falha
OWASP 64
66. 10. Falha na restrição de acesso a uma URL
Vulnerabilidades
Navegação forçada
URLs e ficheiros escondidos
Mecanismo de segurança ultrapassado
Avaliar os privilégios apenas no cliente
OWASP 65
67. 10. Falha na restrição de acesso a uma URL
Verificação de Segurança
Verificar que o controlo de acesso é utilizado de forma consistente em
todas as URL da aplicação
Ferramentas de verificação automática têm algumas dificuldades em
verificar isto
Uma combinação de revisões de código e testes são mais eficazes
Protecção
Desenhar e implementar os diferentes perfis de acesso a URL
Assegurar que todas as URL fazem parte deste processo
Não usar URL escondidas
OWASP 66